2014/01/27

在linux下利用iptables做nat




由於最近有一個環境

guestA(external IP: 1.1.1.1, internal IP: 192.168.56.2)
guestB(internal IP: 192.168.56.3)

在同一個host下有兩台virtualbox guest中,只有一台有外部ip(1.1.1.1)

但是我想在外部ip SSH連到那台無外部ip的guest B

該怎麼做呢?

這時候就要利用到NAT了

首先先在iptables打洞

注意type要指定為nat,如下:

這邊為了讓guestA的SSH正常使用所以開2222作為guestB的NAT port
$ iptables -t nat -A PREROUTING -i eth0 -d 1.1.1.1 -p tcp --dport 2222 -j DNAT --to-destination 192.168.56.3:22
$ iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

但是試了很久,只下這個指令guestA有收到封包卻沒有轉傳到192.168.56.3:22

原來是忘了打開ip_forward設定
$ echo 1 > /proc/sys/net/ipv4/ip_forward

這樣就完成囉!!

沒有留言:

張貼留言