我正在运行具有多个网络接口的 Debian 10 服务器。我可以创建规则来路由全部网络流量从外部(即来自网络上的其他设备)进入到其中一个接口上的一个 IP 地址,再进入另一个 IP 地址不是在同一台机器上,但在网络上的其他地方?与 WAN 到 LAN 路由类似。
我知道如何在 pfSense 上执行此操作,但我对 iptables 不太了解。
非 iptables 解决方案也受到欢迎。
答案1
对于 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 之前的表示追加。如果您需要插入规则,因为末尾有一个 DROP,您必须使用并在链名后面放一个数字。nat
iptables -S -t filter
iptables -S -t nat
filter
-A
-I