Linux 分割访问和 DNAT

Linux 分割访问和 DNAT

我有一个 Linux 机器,上面有两个 WAN 接口 ($IF1、$IF2) 和一个 LAN 接口 ($IF3),按照http://lartc.org/howto/lartc.rpdb.multiple-links.html

从互联网上我可以 ping 通 $IP1 和 $IP2,所以我认为分割访问设置正确。

我也对本地网络使用了伪装和 dnat,如下所示($local_addr 是本地网络中的另一台服务器):

iptables -t nat -A POSTROUTING -o $IF1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o $IF2 -j MASQUERADE

iptables -t nat -A PREROUTING -i $IF1 -p tcp --dport 80 -j DNAT --to $local_addr:80
iptables -t nat -A PREROUTING -i $IF2 -p tcp --dport 80 -j DNAT --to $local_addr:80

DNAT 仅作用于默认路由指向的 WAN 接口。

无论默认路由使用哪个接口,有什么方法可以让 DNAT 对两个 WAN 接口都起作用?

答案1

是的你可以

# iptables -t mangle -I PREROUTING -s $local_addr -m conntrack --ctorigdst $IF1 -j MARK --set-mark 0x1
# iptables -t mangle -I PREROUTING -s $local_addr -m conntrack --ctorigdst $IF2 -j MARK --set-mark 0x2

# ip ru add fwmark 0x1 lookup ISP1 prio 1000
# ip ru add fwmark 0x2 lookup ISP2 prio 2000

不要忘记禁用反向路径过滤

# echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter

相关内容