iptables實現端口映射


如果想要NAT功能能夠正常使用,需要開啟Linux主機的核心轉發功能。

echo 1 > /proc/sys/net/ipv4/ip_forward

方式一:以wan口ip作為匹配條件

1. 新增一條端口映射規則

將訪問wan口的端口轉發至內網某個ip上

iptables -t nat -A PREROUTING -p [tcp/udp] -d wanip --dport wanport -j DNAT --to lanip:lanport
  • wanip:wan口ip
  • wanport:wan口端口
  • lanip:需要轉發給局域網主機的ip
  • lanport:需要轉發給局域網主機的端口

2. 刪除一條端口映射規則

iptables -t nat -D PREROUTING -p [tcp/udp] -d wanip --dport wanport -j DNAT --to lanip:lanport

僅-A和-D的區別

3. 修改一條端口映射規則

當wanip變化后,需要修改端口轉發規則,即修改wanip

iptables -t nat -R PREROUTING rulesnum -p [tcp/udp] -d newwanip --dport wanport -j DNAT --to lanip:lanport
  • rulesnum:要修改規則的序號,可以查看時通過加--line選項獲得

端口轉發支持TCP,UDP即可

方式二:以wan口接口名作為匹配條件

1. 新增一條端口映射規則

將訪問wan口的端口轉發至內網某個ip上

iptables -t nat -A PREROUTING -p [tcp/udp] -i wanifname --dport wanport -j DNAT --to lanip:lanport
  • wanifname:wan口接口名,例如我們的imx6ul為eth0.1
  • wanport:wan口端口
  • lanip:需要轉發給局域網主機的ip
  • lanport:需要轉發給局域網主機的端口

2. 刪除一條端口映射規則

iptables -t nat -D PREROUTING -p [tcp/udp] -i wanifname --dport wanport -j DNAT --to lanip:lanport

僅-A和-D的區別

3. 修改一條端口映射規則

當wanip變化后,需要修改端口轉發規則,即修改輸入網絡接口名

iptables -t nat -R PREROUTING rulesnum -p [tcp/udp] -i newwanifnamep --dport wanport -j DNAT --to lanip:lanport
  • rulesnum:要修改規則的序號,可以查看時通過加--line選項獲得

端口轉發支持TCP,UDP即可

對比方式一和二

方式一當wan口ip發生變化時,規則得重新修改,方式二則不需要。方式二當wan口接口名變化時,規則得重新修改。建議選用方式二作為我們端口映射的方法。

調試常用命令

查看端口轉發規則:
因為我們的端口轉發位於PREROUTING鏈,所以命令為:

iptables -t nat -nvL PREROUTING

清空nat表,PREROUTING鏈規則

iptables -t nat -F PREROUTING

打印nat表,PREROUTING鏈中iptables執行的命令參數

iptables -t nat -S PREROUTING


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM