首先應該做的是/etc/sysctl.conf配置檔案的 net.ipv4.ip_forward = 1 預設是0
臨時生效 echo 1 >/proc/sys/net/ipv4/ip_forward
設我們有一台計算機,有兩塊網絡卡,eth0連外網,ip為1.2.3.4;eth1連內網,ip為192.168.0.1.現在需要把發往位址1.2.3.4的81埠的ip包**到ip位址192.168.0.2的8180埠,設定如下:
1. iptables -t nat -a prerouting -d 1.2.3.4 -p tcp --dport 81 -j dnat --to-destination192.168.0.2:8180
2. iptables -t nat -a postrouting -d 192.168.0.2 -p tcp -m tcp --dport 8180 -j snat --to-source 192.168.0.1
真實的傳輸過程如下所示:
假設某客戶機的ip位址為6.7.8.9,它使用本機的1080埠連線1.2.3.4的81埠,發出的ip包源位址為6.7.8.9,源埠為1080,目的位址為1.2.3.4,目的埠為81.
主機1.2.3.4接收到這個包後,根據nat表的第一條規則,將該ip包的目的位址更該為192.168.0.2,目的埠更該為8180,同時在連線跟蹤表中建立乙個條目,(可從/proc/net/ip_conntrack檔案中看到),然後傳送到路由模組,通過查路由表,確定該ip包應傳送到eth1介面.在向eth1介面傳送該ip包之前,根據nat表的第二條規則,如果該ip包來自同一子網,則將該ip包的源位址更該為192.168.0.1,同時更新該連線跟蹤表中的相應條目,然後送到eth1介面發出.
此時連線跟蹤表中有一項:
連線進入: src=6.7.8.9 dst=1.2.3.4 sport=1080 dport=81
連線返回: src=192.168.0.2 dst=6.7.8.9 sport=8180 dport=1080
是否使用: use=1
而從192.168.0.2發回的ip包,源埠為8180,目的位址為6.7.8.9,目的埠為1080,主機1.2.3.4的tcp/ip棧接收到該ip包後,由核心查詢連線跟蹤表中的連線返回欄目中是否有同樣源和目的位址和埠的匹配項,找到後,根據條目中的記錄將ip包的源位址由192.168.0.2更該為1.2.3.4, 源埠由8180更該為81,保持目的埠號1080不變.這樣伺服器的返回包就可以正確的返回發起連線的客戶機,通訊就這樣開始.
還有一點, 在filter表中還應該允許從eth0連線192.168.0.2位址的8180埠:
iptables -a input -d 192.168.0.2 -p tcp --dport 8180 -i eth0 -j accept
iptables 埠對映指令碼
echo 1 proc sys net ipv4 ip forward sbin iptables a input p tcp dport 3389 i eth0 j accept sbin iptables t nat a prerouting i eth0 d 192.168.5.7 p tcp...
Iptables 完成埠對映
q 一區域網192.168.1.0 24,有web和ftp伺服器192.168.1.10 192.168.1.11,閘道器linux,內網eth0,ip為192.168.1.1,外網eth1,ip為a.b.c.d,怎樣作nat能使內外網都能訪問公司的伺服器?a web 用dnat作埠對映 iptab...
iptables埠對映例項
環境 主機1 ip 192.168.10.25 能訪問外網 ip 192.168.100.1 閘道器 主機2 ip 192.168.100.23 web伺服器 要求 192.168.10.0 24網段ip能訪問web伺服器,web伺服器也能訪問外網。備註 192.168.10.0 24和192.16...