如何使用具有相同IP地址的两个网关?

如何使用具有相同IP地址的两个网关?

我必须配置 NAT 并在连接到 Linux 机器的两个网关之间手动分割互联网流量。

如果每个网关都有特定的 IP 地址,则没有问题。我可以通过以下方式做到这一点iproute2

ip route add default via 192.168.1.1 dev eth1
ip route add 2.3.4.5 via 192.168.0.1 dev eth0
ip route add 8.9.4.5 via 192.168.0.1 dev eth0

但我的问题就是这么简单!我无权更改网关地址和网络 ID。我只需要在 Linux 机器上使用两个具有相同地址的互联网网关,内核版本为 3.2.0 及以上。

                                                        +-----------+
                                                        | Gateway A |
                          +-----------------------+     |192.168.0.1|
                          |                   eth0+---->+-----------+
           +--------------+eth2   Linux Box       |
           |              |                   eth1+---->+-----------+
           |              +-----------------------+     | Gateway A |
           |                                            |192.168.0.1|
           |                                            +-----------+
  +--------+-----------+
  |  Private Network   |--------> Workstation A
  |                    |
  |    10.0.0.0/24     |--------> Workstation B
  +--------------------+

如何使用 Linux 令人惊叹的网络工具( 或其他工具)解决这个mangling问题snat

答案1

最后我得到了它。经过一番尝试,我发现linux内核在这种情况下没有任何问题。它的工作方式很迷人!通过这个 iproute2 规则和路由:

eth0: 192.168.0.231/24 --> 网关 A: dwl2100ap

eth1: 192.168.0.230/24 --> 网关 B: dwlg132

配置接口:

ip addr add 192.168.0.231/24 dev eth0
ip addr add 192.168.0.230/24 dev eth1

添加两个路由表:

echo "1       dwl2100ap" >> /etc/iproute2/rt_tables
echo "2       dwlg132" >> /etc/iproute2/rt_tables

将路由添加到表中:

ip route add 192.168.0.0/24 dev eth0 src 192.168.0.231 table dwl2100ap
ip route add default via 192.168.0.1 dev eth0 table dwl2100ap

ip route add 192.168.0.0/24 dev eth1 src 192.168.0.230 table dwlg132
ip route add default via 192.168.0.1 dev eth1 table dwlg132

接下来,设置路由规则。这些实际上选择使用什么路由表进行路由。如果您已经拥有相应的源地址,您需要确保路由出给定的接口:

ip rule add from 192.168.0.231 table dwl2100ap
ip rule add from 192.168.0.230 table dwlg132

伪装所有传出数据包:

iptables -tnat -APOSTROUTING -s10.0.0.0/24 -j MASQUERADE

为了让内核分割带宽,我可以发出这条路线:

ip route add default scope global nexthop via 192.168.0.1 dev eth0 weight 2 nexthop via 192.168.0.1 dev eth1 weight 1

手动路由:

ip route add default via 192.168.0.1 dev eth0
ip route add 8.8.8.8 via 192.168.0.1 dev eth0
ip route add 8.8.4.4 via 192.168.0.1 dev eth1

编辑1:

另外我可以通过 iptables 标记一些数据包:

iptables -tmangle -APREROUTING -i eth2 -s 10.0.0.4 -jMARK --set-mark 4

然后通过路由策略路由它们:

ip rule add fwmark 4 table dwl2100ap

我想知道它是否适用于具有相同 IP 地址的两个网关。在内核 3.2.0-53 中。

相关内容