1. 程式人生 > 實用技巧 >iptables實現埠對映

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