說得非常清楚呀...
第一就說,要是個 gateway,這樣才會有轉發的功能,其他的機器才會藉由他轉發。
然後,masquerade 的工作就是把所有出去的 封包,重新找一個 port 給他 (所以只有 tcp 能用),同時換掉他的 source ip,把 private 的換成自己的(output 的,public 的)。
然後把這格 port 記起剌,紀錄他原來的 ip (private ip) 和 port。
之後,只要這個 port 收到的封包,就依照當初紀錄的內容,把 dest ip 和 port 換掉。換回 private ip 和 port,再送回去。
大概是因為,這格動作是雙向的,所以在 nat masquerade rule 上只需要列一條:是從那一個 interface (ip) 出去的,要做 masquerade,
這樣自然就包含把 收到的 換回原來的動作。不用幫收到的再寫一條。
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE封包只有在出去的時候做就可以了,所以是 POSTROUTING.
...如果是本機的 output 經過 postrouting, 做 masquerade 的話,ip 就一樣 ,只有 port 會被改,大概就連 port 也沒改了。
這個 rule 大概就可以讓其他的 ip 出去,不需要加 filter table 的 FORWARD rule
測試一下...
先記一下 reset 的 command: flush
iptables -t nat --flushlist rule..
iptables -t nat --list恩,真的,只要一個 nat, postrouting, masquerade rule 就可以了。
沒有留言:
張貼留言