實驗拓撲圖html
實驗描述vim
假設有三臺主機A、B、C。B和A、C能夠連通,AC兩臺主機不能連通。網絡
這時候能夠用本地端口轉發,來實現A和C經過B來連通。ssh
實驗中,爲了構造上述環境,咱們使用三臺虛擬機,其網絡環境設置如拓撲圖所示:curl
(1) 主機A :eth1(172.16.10.1/24)url
(2) 主機B: eth0(172.16.10.3/24) eth1(172.16.20.1/24)spa
(3) 主機C: eth0(172.16.20.1/24).net
實驗與驗證rest
1. 確保B和A、C的連通,A、C不能連通(符合實驗環境)code
2. 在A、B的ssh配置文件/etc/ssh/sshd_config中開啓容許轉發的選項,並重啓ssh服務
# vim /etc/ssh/sshd_config GatewayPorts yes AllowTcpForwarding yes # service sshd restart
3. 在主機C安裝httpd並啓動http服務,爲了更好的驗證咱們在主機C的站點主目錄下寫一個「小文件」
# yum install httpd -y # vim /var/www/html/index.html hello,I'm 172.16.20.2 # service httpd start
4. 在主機A上執行命令:
# ssh -l root -L 172.16.10.1:59000:172.16.20.2:80 172.16.10.3
參數-L後面總共有四個用冒號分割的值,分別是 '本地地址:本地端口:目標主機:目標主機端口'。
這條命令的意思是:
指定SSH綁定本地主機A(172.16.10.1)的59000端口,轉發到目標主機C(172.16.20.2)的80端口。並指定由主機B(192.16.10.3)來轉發。
執行結果:
5. (注意不要退出上一步驟的命令)在A新打開一個終端(Ctrl+Alt+F2)來驗證就好,執行命令:
# curl http://172.16.10.1:59000
執行結果:
這說明:
咱們鏈接了本地主機A的59000端口,就等於連上了主機C 172.16.20.2的80端口。
補充
1. 本實驗參考了文章:http://my.oschina.net/guol/blog/115235
2. 實驗過程當中要注意防火牆的設置,最好 # iptables -F 清除一下防火牆規則