我正在使用 shorewall 防火墙,并已成功配置多个 isp 源。
目前,它平衡了到两个 ISP 的所有流量。我想要实现的是将 ssh 流量路由到 ISP1,将 www 流量路由到 ISP2。我该怎么做?
答案1
我认为您需要创建多个路由表。一个是默认路由表,用于正常流量;另一个是特殊 SSH 表,其中包含仅用于您要使用的 ISP 连接的路由条目。
接下来,设置 iptables 来标记来自您的 IP 并监听 SSH 端口的数据包。
最后,您可以设置 IP 规则条目来根据防火墙标记进行路由。
LARTC 文档中有很多信息(但您可能已经看过了):http://lartc.org/howto/lartc.rpdb.html
举个例子:
添加一个具有名称的新路由表。
echo SSH 500 >>/etc/iproute2/rt_tables
向另一个完成正确操作的路由表添加默认路由。
ip route add default via $ISP2_GW table SSH
设置一条规则让 fwmark 使用这个新表。
ip rule add fwmark 0x0001 table SSH
最后设置一个 iptables 规则来标记您的数据包。
iptables -I PREROUTING -t mangle -p tcp --sport 22 -j MARK --set-mark 0x0001 iptables -I OUTPUT -t mangle -p tcp --sport 22 -j MARK --set-mark 0x0001
希望这样可以正确设置您想要的内容。您还需要确保此配置在重启后仍然有效!但我把这留给您作为练习。