技術(shù)員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機(jī)純凈版,64位旗艦版,綠色軟件,免費(fèi)軟件下載基地!

當(dāng)前位置:主頁 > 教程 > 服務(wù)器類 >

linux系統(tǒng)中的電腦程序知識之端口映射

來源:技術(shù)員聯(lián)盟┆發(fā)布時(shí)間:2018-12-06 06:05┆點(diǎn)擊:

  關(guān)于想要了解linux端口映射的知識,其實(shí)很簡單。那么現(xiàn)在我們那就一起來看看這其中的奧秘吧!

  01

  ssh -C -g root@127.0.0.1 -L 5000:61.235.139.123:5000

  02

  03

  #輸入機(jī)器的root密碼

  04

  05

  #后臺執(zhí)行:

  06

  ssh -C -f -N -g root@127.0.0.1 -L 5000:61.235.139.123:5000

  07

  08

  #另:

  09

  10

  ssh -C -f -N -g -R remote_port:local:port user@remotehost

  可以將遠(yuǎn)端服務(wù)器一個(gè)端口remote_port綁定到本地端口port,其中-C是進(jìn)行數(shù)據(jù)壓縮,-f是后臺操作,只有當(dāng)提示用戶名密碼的時(shí)候才轉(zhuǎn)向前 臺。-N是不執(zhí)行遠(yuǎn)端命令,在只是端口轉(zhuǎn)發(fā)時(shí)這條命令很有用處。-g 是允許遠(yuǎn)端主機(jī)連接本地轉(zhuǎn)發(fā)端口。-R表明是將遠(yuǎn)端主機(jī)端口映射到本地端口。如果是-L,則是將本地端口映射到遠(yuǎn)端主機(jī)端口。

  ssh的三個(gè)強(qiáng)大的端口轉(zhuǎn)發(fā)命令:

  1

  ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host

  2

  ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host

  3

  ssh -C -f -N -g -D listen_portuser@Tunnel_Host

  -f Fork into background after authentication.

  后臺認(rèn)證用戶/密碼,通常和-N連用,不用登錄到遠(yuǎn)程主機(jī)。

  -p port Connect to this port. Server must be on the same port.

  被登錄的ssd服務(wù)器的sshd服務(wù)端口。

  -L port:host:hostport

  將本地機(jī)(客戶機(jī))的某個(gè)端口轉(zhuǎn)發(fā)到遠(yuǎn)端指定機(jī)器的指定端口. 工作原理是這樣的, 本地機(jī)器上分配了一個(gè) socket 偵聽 port 端口, 一旦這個(gè)端口上有了連接, 該連接就經(jīng)過安全通道轉(zhuǎn)發(fā)出去, 同時(shí)遠(yuǎn)程主機(jī)和 host 的 hostport 端口建立連接. 可以在配置文件中指定端口的轉(zhuǎn)發(fā). 只有 root 才能轉(zhuǎn)發(fā)特權(quán)端口. IPv6 地址用另一種格式說明: port/host/hostport

  -R port:host:hostport

  將遠(yuǎn)程主機(jī)(服務(wù)器)的某個(gè)端口轉(zhuǎn)發(fā)到本地端指定機(jī)器的指定端口. 工作原理是這樣的, 遠(yuǎn)程主機(jī)上分配了一個(gè) socket 偵聽 port 端口, 一旦這個(gè)端口上有了連接, 該連接就經(jīng)過安全通道轉(zhuǎn)向出去, 同時(shí)本地主機(jī)和 host 的 hostport 端口建立連接. 可以在配置文件中指定端口的轉(zhuǎn)發(fā). 只有用 root 登錄遠(yuǎn)程主機(jī)才能轉(zhuǎn)發(fā)特權(quán)端口. IPv6 地址用另一種格式說明: port/host/hostport

  -D port

  指定一個(gè)本地機(jī)器 “動(dòng)態(tài)的'’ 應(yīng)用程序端口轉(zhuǎn)發(fā). 工作原理是這樣的, 本地機(jī)器上分配了一個(gè) socket 偵聽 port 端口, 一旦這個(gè)端口上有了連接, 該連接就經(jīng)過安全通道轉(zhuǎn)發(fā)出去, 根據(jù)應(yīng)用程序的協(xié)議可以判斷出遠(yuǎn)程主機(jī)將和哪里連接. 目前支持 SOCKS4 協(xié)議, 將充當(dāng) SOCKS4 服務(wù)器. 只有 root 才能轉(zhuǎn)發(fā)特權(quán)端口. 可以在配置文件中指定動(dòng)態(tài)端口的轉(zhuǎn)發(fā).

  -C Enable compression.

  壓縮數(shù)據(jù)傳輸。

  -N Do not execute a shell or command.

  不執(zhí)行腳本或命令,通常與-f連用。

  -g Allow remote hosts to connect to forwarded ports.

  在-L/-R/-D參數(shù)中,允許遠(yuǎn)程主機(jī)連接到建立的轉(zhuǎn)發(fā)的端口,如果不加這個(gè)參數(shù),只允許本地主機(jī)建立連接。注:這個(gè)參數(shù)我在實(shí)踐中似乎始終不起作用,參見III)

  iptables實(shí)現(xiàn)端口轉(zhuǎn)發(fā)的過程

  設(shè)我們有一臺計(jì)算機(jī),有兩塊網(wǎng)卡,eth0連外網(wǎng),ip為1.2.3.4;eth1連內(nèi)網(wǎng),ip為192.168.0.1.現(xiàn)在需要把發(fā)往地址1.2.3.4的81端口的ip包轉(zhuǎn)發(fā)到ip地址192.168.0.2的8180端口,設(shè)置如下:

  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

  真實(shí)的傳輸過程如下所示:

  假設(shè)某客戶機(jī)的ip地址為6.7.8.9,它使用本機(jī)的1080端口連接1.2.3.4的81端口,發(fā)出的ip包源地址為6.7.8.9,源端口為1080,目的地址為1.2.3.4,目的端口為81.

  主機(jī)1.2.3.4接收到這個(gè)包后,根據(jù)nat表的第一條規(guī)則,將該ip包的目的地址更該為192.168.0.2,目的端口更該為8180,同時(shí)在連接跟 蹤表中創(chuàng)建一個(gè)條目,(可從/proc/net/ip_conntrack文件中看到),然后發(fā)送到路由模塊,通過查路由表,確定該ip包應(yīng)發(fā)送到 eth1接口.在向eth1接口發(fā)送該ip包之前,根據(jù)nat表的第二條規(guī)則,如果該ip包來自同一子網(wǎng),則將該ip包的源地址更該為 192.168.0.1,同時(shí)更新該連接跟蹤表中的相應(yīng)條目,然后送到eth1接口發(fā)出.

  此時(shí)連接跟蹤表中有一項(xiàng):

  連接進(jìn)入: src=http://www.3lian.com/edu/2013/09-05/6.7.8.9 dst=1.2.3.4 sport=1080 dport=81

  連接返回: src=http://www.3lian.com/edu/2013/09-05/192.168.0.2 dst=http://www.3lian.com/edu/2013/09-05/6.7.8.9 sport=8180 dport=1080

  是否使用: use=1