
我使用此規則來配置 SNAT:
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 193.49.142.107:4000
我想指定一個規則來過濾掉不是發送到發起會話的內部位址和連接埠的封包。此外,為了從特定外部端點接收封包,內部端點必須先將封包傳送到該特定外部端點的 IP 位址。
例子:
位於 NAT 後面的具有內部 IP 和連接埠 (X:x) 的電腦開啟與 IP Y 的伺服器的連線。所有其他連接都將被刪除。
答案1
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -P FORWARD -j DROP
iptables -A FORWARD -o eth1 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -m state --state ESTABLISHED -j ACCEPT
這些規則有什麼作用?
-A POSTROUTING -o eth1 -j MASQUERADE
當封包離開您的網路時隱藏您的內部 IP-P FORWARD -j DROP
將 FORWARD 鏈的預設政策設定為 DROP-A FORWARD -o eth1 -m state --state NEW,ESTABLISHED -j ACCEPT
允許新的和已建立的 FORWARD 連接出去-A FORWARD -i eth1 -m state --state ESTABLISHED -j ACCEPT
只允許建立 FORWARD 連接
上述規則假設您使用此裝置作為閘道/防火牆,連線eth1
到您的 WAN 並eth0
連線至您的 LAN。
補充閱讀:後路由和 IP 偽裝
編輯
若要配置“條件”連接埠轉送:
按來源連接埠
iptables -A PREROUTING -t nat -i eth1 -p tcp --sport [trusted_source_port] --dport [external_port] -j DNAT --to [internal_ip]:[internal_port]
iptables -A FORWARD -p tcp -d [internal_ip] --dport [internal_port] -j ACCEPT
按來源IP
iptables -A PREROUTING -t nat -i eth1 -p tcp -s [trusted_source_ip] --dport [external_port] -j DNAT --to [internal_ip]:[internal_port]
iptables -A FORWARD -p tcp -d [internal_ip] --dport [internal_port] -j ACCEPT