iT邦幫忙

14

透過 ssh 存取 NAT 裡的 NAT 裡的 VNC

用 google 尋 ssh vnc 可找到許多怎麼利用 putty , sshd 連 VNC,
常常有看沒有懂,沒懂也可運作;但跳兩層 ssh 來連VNC,
就得錯誤嘗試幾下;用力試了一下,有成功了,趕快記下來備忘。
用 google 尋 ssh vnc 可找到許多怎麼利用 putty , sshd 連 VNC,
以下圖為例:

192.168.0.0/24 的子網,是透過 NAT 172.16.0.1 連出去,
若 PC 172.16.0.5 想連 NAT 內的 192.168.0.10 的 VNC,
就可利用 google 找到的範例來做設定;
而 PC windows 的環境,都是以 putty 或 pietty 來做例子,
而且例子都是以圖形界面來設定,
自己想直接用 command-line 來直接下 Listen, Forward的指令,
參考了 ssh 的指令,發現對 pietty, putty 是通用,
在 windows 的 CMD 下以下指令連到 172.16.0.1 Linux,建立了通道後,

pietty -L 5901:192.168.0.10:5900 user@172.16.0.1

在 vncviewer 鍵入 localhost:1 就可 VNC 到 192.168.0.10
-L 後的 5901 ,是 開了 PC windows 本身 5901 port,
就是 vncviewer 連 localhost:1 的所在。
後面的 192.168.0.10:5900 是 NAT 裡 PC 的 VNC 的 IP 及 Port,
所以,vncviewer -> localhost:5901 -> 透過 ssh 22 port 到 linux ->
NAT 192.168.0.10 的 5900 port。
上述是蠻單純來看 NAT 內的 VNC,或者透過 Linux 的 ssh 來防止被截封包的做法。

然而,敝組織,把所有組織內都納入 NAT,連 Server 也不例外,
如下圖 172.16.0.3 的 Linux ,外部以 1.2.3.4 來存取 Server。
由於敝單位因任務、狀況的需要,得在此 NAT 內再畫分一個 NAT 的子網,
透過 172.16.0.1 Linux ,再加網卡 192.168.0.1 ,做為 192.168.0.0/24 的 gateway:

想達到的目的是,從家裡的 windows PC 可連結到 NAT 中的 NAT 中的 VNC。

基本上連結流程是:
Home -> 1.2.3.4(172.16.0.3) -> 172.16.0.1(192.168.0.1) -> 192.168.0.10
為理解方便,以反向來說明,較容易
先從 1.2.3.4(172.16.0.3) 這台 Linux 來建立與 172.16.0.1(192.168.0.1) Linux的通道開始
在 1.2.3.4(172.16.0.3) 建入以下指令:

ssh -g -L localhost:5901:192.168.0.10:5900 user@172.16.0.1

這樣在 1.2.3.4(172.16.0.3) 自己的 localhost:5901 就是 192.168.0.10:5900 了。
這個指令跟上一個,在 windows 上下的 pietty(putty)的指令,基本上是一樣的,
-L 的後面 localhost: 是可省略,-g 是允遠端主機來連結到本機的轉扯port。

而在 PC 端建入以下 pietty(putty)的指令,建立與 1.2.3.4(172.16.0.3) 的通道:

pietty -L 5901:localhost:5901 user@1.2.3.4

其實這跟第一例,是一樣的的語法,剛開始搞不清楚中間要設什麼,
以為是 172.16.0.1 或什麼的,結果都不行,原來是要設 localhost 就可順利建立連線!
下圖將 port 標示出來,以及先瞭解 linux 上下的 ssh -g -L .... 這指令,才弄清楚。

以更白話的流程是:
vncviewer -> localhost:5901 -> 透過 ssh 22 port 到 linux 1.2.3.4 -> (非 ssh 的連) localhost 5901 -> 透過 ssh 22 port 到 linux 172.16.0.1 -> localhost 的 5901 -> NAT 192.168.0.10 的 5900 port

一般要連的程序,就只要

pietty -L 5901:localhost:5901 user@1.2.3.4
ssh -g -L localhost:5901:192.168.0.10:5900 user@172.16.0.1

就可順利 ssh 到 NAT 中的 NAT 的 VNC 了。


0
海綿寶寶
iT邦超人 1 級 ‧ 2009-03-13 12:07:52

曾經這麼想我常常這麼想
是否我語言能力太差
為何到處是我熟悉的文字
到處有我聽不懂的話...

0
gric
iT邦高手 1 級 ‧ 2009-03-13 14:09:39

謝謝分享咯!

0
kuochiahao
iT邦研究生 1 級 ‧ 2009-03-16 10:56:13

謝謝分享

0
ping
iT邦研究生 1 級 ‧ 2009-03-16 14:37:19

有點深奧...不太能理解

我要留言

立即登入留言