當前場景以下:linux
服務器A是雙網卡,有一個內網IP和一個公網IP服務器
內網IP: 10.0.10.30ssh
外網IP: 58.68.255.123tcp
服務器B只有內網網卡,內網IP:10.0.30.88,它能夠和10.0.10.30通訊。ide
如今的需求是客戶機須要經過公網去ssh鏈接服務器B,因爲服務器B沒有公網IP,因此只能經過經過服務器A的iptables作端口轉發。rest
打開linux內核的ip轉發功能。ip
echo 1 > /proc/sys/net/ipv4/ip_forward(臨時開啓)ci
添加iptables規則。it
iptables -A PREROUTING -p tcp -d 58.68.255.123 --dport 3911 -j DNAT --to-destination 10.0.30.88:3911io
iptables -A POSTROUTING -p tcp -d 10.0.30.88 --dport 3911 -j SNAT --to-source 10.0.10.30
iptables -A FORWARD -d 10.0.30.88 -p tcp --dport 3911 -j ACCEPT
iptables -A FORWARD -s 10.0.30.88 -p tcp --sport 3911 -j ACCEPT
service iptables save
service iptables restart