iptables實現埠對映
阿新 • • 發佈:2020-08-08
如果想要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