Linux
如何使用 iptables 進行埠轉發?
我希望埠 8001 上 ppp0 上的連接被路由到埠 8080 上 eth0 上的 192.168.1.200。
我有這兩條規則
-A PREROUTING -p tcp -m tcp --dport 8001 -j DNAT --to-destination 192.168.1.200:8080 -A FORWARD -m state -p tcp -d 192.168.1.200 --dport 8080 --state NEW,ESTABLISHED,RELATED -j ACCEPT
它不起作用。我錯過了什麼?
首先 - 您應該檢查是否允許轉發:
cat /proc/sys/net/ipv4/conf/ppp0/forwarding cat /proc/sys/net/ipv4/conf/eth0/forwarding
如果兩者都返回
1
就可以了。如果沒有,請執行以下操作:echo '1' | sudo tee /proc/sys/net/ipv4/conf/ppp0/forwarding echo '1' | sudo tee /proc/sys/net/ipv4/conf/eth0/forwarding
第二件事 -
DNAT
只能應用於nat
桌子。因此,您的規則也應該通過添加表規範來擴展(-t nat
):iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 8001 -j DNAT --to-destination 192.168.1.200:8080 iptables -A FORWARD -p tcp -d 192.168.1.200 --dport 8080 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
這兩個規則僅適用於 TCP 流量(如果您也想更改 UDP,您需要提供類似的規則,但需要
-p udp
設置選項)。最後但並非最不重要的是路由配置。類型:
ip route
並檢查是否
192.168.1.0/24
在返回的路由條目中。