Debian

我可以使用 iptables 創建 1:1 NAT 嗎?

  • February 19, 2020

我正在執行具有多個網路介面的 Debian 10 伺服器。我是否可以創建規則,將所有網路流量從外部(即來自網路上的其他設備)的一個介面上的一個 IP 地址路由到不在同一台機器上但在網路上其他地方的另一個 IP 地址?類似於 WAN 到 LAN 路由。

我知道如何在例如 pfSense 上做到這一點,但我對 iptables 很迷茫..

也歡迎非 iptables 解決方案。

將來自外部的流量和同一機器內的介面從 IP 版本 4 和 6 的原始地址轉發到另一個地址的快速範例(可能不包括原始地址上的端點和執行點現有連接的 ipsec 流量)。這也不會重定向本地執行程序生成的流量,因為您需要 OUTPUT 鏈。

#Activate forwarding
#Note: These forward settings are not reboot persistent
sysctl -w net.ipv6.conf.all.forwarding=1
sysctl -w net.ipv4.ip_forward=1

iptables -t nat -A PREROUTING -d original.add.re.ss -j DNAT --to-destination ipv4.add.re.ss
iptables -t nat -A POSTROUTING -j MASQUERADE

ip6tables -t nat -A PREROUTING -d [original.add.re.ss] -j DNAT --to-destination [2001::]
ip6tables -t nat -A POSTROUTING -j MASQUERADE

如果您想將轉發限制為僅來自外部的數據包,您必須修改規則,要麼添加一個-i interface命名它們進入的介面,要麼匹配並非源自本地地址的所有內容-m addrtype ! --src-type LOCAL。您可以通過使用進一步排除廣播和多播流量-m addrtype --dst-type UNICAST --src-type UNICAST。您還應該檢查 FORWARD 鏈的預設策略是否為 ACCEPT 或在該鏈中添加特定規則。

可以使用和來轉儲現有的filter和表。如果有 DROP 策略,您可以在該表中配置 FORWARD 規則。PREROUTING/POSTROUTING 之前的意思是 Append。如果你需要插入規則,因為末尾有一個 DROP,你必須使用並在鏈名後面加上一個數字。nat``iptables -S -t filter``iptables -S -t nat``filter``-A``-I

引用自:https://serverfault.com/questions/1003725