ssh -C -g root@127.0.0.1 -L 5000:61.235.139.123:5000
輸入機器的root密碼
後台執行:ssh -C -f -N -g root@127.0.0.1 -L 5000:61.235.139.123:5000
另:
ssh -C -f -N -g -R remote_port:local:port user@remotehost
可 以將遠端伺服器一個連接埠remote_port綁定到本地連接埠port,其中-C是進行資料壓縮,-f是後台操作,只有當提示使用者名稱密碼的時候才轉向前 台。-N是不執行遠端命令,在只是連接埠轉寄時這條命令很有用處。-g 是允許遠端主機串連本地轉送連接埠。-R表明是將遠端主機連接埠映射到本地連接埠。如果是-L,則是將本地連接埠映射到遠端主機連接埠。
關於ssh連接埠轉寄的深入執行個體 2007-05-13 17:02
Thursday, 5. April 2007, 13:44:15
轉自geminis@http://floss.zoomquiet.org/data/20070104103806/
ssh的三個強大的連接埠轉寄命令:
ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host ssh -C -f -N -g -D listen_portuser@Tunnel_Host
-f Fork into background after authentication.
後台認證使用者/密碼,通常和-N連用,不用登入到遠程主機。
-p port Connect to this port. Server must be on the same port.
被登入的ssd伺服器的sshd服務連接埠。
-L port:host:hostport
將 本地機(客戶機)的某個連接埠轉寄到遠端指定機器的指定連接埠. 工作原理是這樣的, 本地機器上分配了一個 socket 偵聽 port 連接埠, 一旦這個連接埠上有了串連, 該串連就經過安全通道轉寄出去, 同時遠程主機和 host 的 hostport 連接埠建立串連. 可以在設定檔中指定連接埠的轉寄. 只有 root 才能轉寄特權連接埠. IPv6 地址用另一種格式說明: port/host/hostport
-R port:host:hostport
將 遠程主機(伺服器)的某個連接埠轉寄到本地端指定機器的指定連接埠. 工作原理是這樣的, 遠程主機上分配了一個 socket 偵聽 port 連接埠, 一旦這個連接埠上有了串連, 該串連就經過安全通道轉向出去, 同時本地主機和 host 的 hostport 連接埠建立串連. 可以在設定檔中指定連接埠的轉寄. 只有用 root 登入遠程主機才能轉寄特權連接埠. IPv6 地址用另一種格式說明: port/host/hostport
-D port
指定一個本地機器 “動態'’ 應用程式連接埠轉寄. 工作原理是這樣的, 本地機器上分配了一個 socket 偵聽 port 連接埠, 一旦這個連接埠上有了串連, 該串連就經過安全通道轉寄出去, 根據應用程式的協議可以判斷出遠程主機將和哪裡串連. 目前支援 SOCKS4 協議, 將充當 SOCKS4 伺服器. 只有 root 才能轉寄特權連接埠. 可以在設定檔中指定動態連接埠的轉寄.
-C Enable compression.
壓縮資料轉送。
-N Do not execute a shell or command.
不執行指令碼或命令,通常與-f連用。
-g Allow remote hosts to connect to forwarded ports.
在-L/-R/-D參數中,允許遠程主機串連到建立的轉寄的連接埠,如果不加這個參數,只允許本地主機建立串連。註:這個參數我在實踐中似乎始終不起作用,參見III)
iptables實現連接埠轉寄的過程
設我們有一台電腦,有兩塊網卡,eth0連外網,ip為1.2.3.4;eth1連內網,ip為192.168.0.1.現在需要把發往地址1.2.3.4的81連接埠的ip包轉寄到ip地址192.168.0.2的8180連接埠,設定如下:
1. iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp -m tcp --dport 81 -j DNAT --to-destination192.168.0.2:8180
2. iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.0.0 -d 192.168.0.2 -p tcp -m tcp --dport 8180 -j SNAT --to-source 192.168.0.1
真實的傳輸過程如下所示:
假設某客戶機的ip地址為6.7.8.9,它使用原生1080連接埠串連1.2.3.4的81連接埠,發出的ip包源地址為6.7.8.9,源連接埠為1080,目的地址為1.2.3.4,目的連接埠為81.
主 機1.2.3.4接收到這個包後,根據nat表的第一條規則,將該ip包的目的地址更該為192.168.0.2,目的連接埠更該為8180,同時在串連跟 蹤表中建立一個條目,(可從/proc/net/ip_conntrack檔案中看到),然後發送到路由模組,通過查路由表,確定該ip包應發送到 eth1介面.在向eth1介面發送該ip包之前,根據nat表的第二條規則,如果該ip包來自同一子網,則將該ip包的源地址更該為 192.168.0.1,同時更新該串連跟蹤表中的相應條目,然後送到eth1介面發出.
此時串連跟蹤表中有一項:
串連進入: src=6.7.8.9 dst=1.2.3.4 sport=1080 dport=81
串連返回: src=192.168.0.2 dst=6.7.8.9 sport=8180 dport=1080
是否使用: use=1
而 從192.168.0.2發回的ip包,源連接埠為8180,目的地址為6.7.8.9,目的連接埠為1080,主機1.2.3.4的TCP/IP棧接收到該 ip包後,由核心尋找串連跟蹤表中的串連返回欄目中是否有同樣源和目的地址和連接埠的匹配項,找到後,根據條目中的記錄將ip包的源地址由 192.168.0.2更該為1.2.3.4, 源連接埠由8180更該為81,保持目的連接埠號碼1080不變.這樣伺服器的返回包就可以正確的返回傳起串連的客戶機,通訊就這樣開始.
還有一點, 在filter表中還應該允許從eth0串連192.168.0.2地址的8180連接埠:
iptables -A INPUT -d 192.168.0.2 -p tcp -m tcp --dport 8180 -i eth0 -j ACCEPT
linux上連接埠映射的詳細步驟
在網上搜尋好多,對linux配置連接埠映射都不夠詳細,我在RedHat8.0上用iptables配置了連接埠映射,講述詳細的配置過程,供大家參考。
【實現功能】
PC A是
eth0 172.18.10.212 內網
eth1 219.239.xx.xx 外網
PC B是 172.18.10.205 內網
A的8080連接埠映射到B的80連接埠
【步驟】
1、 首先應該做的是/etc/sysctl.conf設定檔的 net.ipv4.ip_forward = 1 預設是0
這樣允許iptalbes FORWARD。
2、 在/etc/rc.d/init.d目錄下有iptables 檔案,使用格式如下
Usage: ./iptables {start|stop|restart|condrestart|status|panic|save}
相當與service iptables {....}
把iptables 服務停止,清除以前的規則,存檔
到/etc/rc.d/init.d目錄下,運行
./iptables stop
iptalbes -F
iptalbes -X
iptalbes -Z
./iptables save
3、 重新設定規則
iptables -t nat -A PREROUTING -d 219.239.xx.xx -p tcp --dport 8080 -j DNAT --to-destination 172.18.10.205:80
iptables -t nat -A POSTROUTING -d 172.18.10.205 -p tcp --dport 80 -j SNAT --to 172.18.10.212
iptables -A FORWARD -o eth0 -d 172.18.10.205 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i eth0 -s 172.18.10.205 -p tcp --sport 80 -j ACCEPT
DNAT SNAT 的請參考說明,這裡不再陳述。
4、 新的規則存檔
./iptables save
規則存檔後在/etc/sysconfig/iptables這個檔案裡面,若你對這個檔案很熟悉
直接修改這裡的內容也等於命令列方式輸入規則。
5、 啟動iptables 服務
./iptables start
在/proc/net/ip_conntrack檔案裡有包的流向,如下面
tcp 6 53 TIME_WAIT src=221.122.59.2 dst=219.239.xx.xx sport=7958 dport=8080 packets=9 bytes=1753
src=172.18.10.205 dst=172.18.10.212 sport=80 dport=7958 packets=9 bytes=5777 [ASSURED] use=1