在多 ISP 配置中按端口路由

在多 ISP 配置中按端口路由

我正在使用 shorewall 防火墙,并已成功配置多个 isp 源。

目前,它平衡了到两个 ISP 的所有流量。我想要实现的是将 ssh 流量路由到 ISP1,将 www 流量路由到 ISP2。我该怎么做?

答案1

我认为您需要创建多个路由表。一个是默认路由表,用于正常流量;另一个是特殊 SSH 表,其中包含仅用于您要使用的 ISP 连接的路由条目。

接下来,设置 iptables 来标记来自您的 IP 并监听 SSH 端口的数据包。

最后,您可以设置 IP 规则条目来根据防火墙标记进行路由。

LARTC 文档中有很多信息(但您可能已经看过了):http://lartc.org/howto/lartc.rpdb.html

举个例子:

  1. 添加一个具有名称的新路由表。

    echo SSH 500 >>/etc/iproute2/rt_tables
    
  2. 向另一个完成正确操作的路由表添加默认路由。

    ip route add default via $ISP2_GW table SSH 
    
  3. 设置一条规则让 fwmark 使用这个新表。

    ip rule add fwmark 0x0001 table SSH
    
  4. 最后设置一个 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
    

希望这样可以正确设置您想要的内容。您还需要确保此配置在重启后仍然有效!但我把这留给您作为练习。

相关内容