如果想要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