- OS: Ubuntu-14.04.4-server-amd64
本機 Port A 轉送到本機 Port B
為了方便操作,先切換為 root
|
|
將 tcp port 20022 的封包轉送到本機的 port 22
|
|
也可以使用 -i
參數指定網路卡 (interface),指定網路卡 eth0
|
|
本機 Port 轉送到其他主機 Port
此操作類型必須先開啟 ip forward。
情境設定
- 主機 A IP: 192.168.0.253 (設定將 port 20022 封包轉送到主機 B 的 port 22)
- 主機 B IP: 192.168.0.1 (SSH server 執行中,監聽 port 22)
- 主機 C IP: 192.168.0.2 (測試轉送結果用的主機)
主機 A 操作
一樣為了方便操作,先切換為 root
|
|
啟用 ip forward
|
|
直接
echo 1
到/proc/sys/net/ipv4/ip_forward
也是一種立刻啟用的方式,個人習慣用systemctl
1
echo 1 > /proc/sys/net/ipv4/ip_forward
轉送 tcp port 20022 收到的封包到主機 B 的 port 22
|
|
主機 C 操作
使用 Netcat 的 nc
指令測試主機 A 的 port 20022 是否為啟用中的狀態:
|
|
如果設定沒問題的話應該會得到回應:
|
|
這時候使用 SSH 指定連線到連線主機 A 的 port 20022,實際會登入到主機 B。
實際上主機 A 沒有服務在使用 port 20022,但是因為我們設定了 iptables 做 port forward,所以這個封包並沒有進到 server,而是直接被轉送到 主機 B。同時主機 B 回傳的封包也會透過主機 A 傳到主機 C。主機 A 透過 POSTROUTING 的規則,把封包傳回主機 A。
開機後重新載入設定
因為自定義的 iptables rules 在重開機之後就會消失,所以要使用以下指令保存設定。
|
|
重開機後設定消失,可以透過以下指令復原規則:
|
|
如果要設定為開機時自動復原的話,把上面的指令加入 /etc/network/interfaces
這個檔案:
|
|
這樣一來重開機時,轉送設定會在網路卡啟動時一併載入