如何通过 Linux 上的两个网卡之一将所有流量路由到一个主机

如何通过 Linux 上的两个网卡之一将所有流量路由到一个主机

设置如下:

  • 一个网关/防火墙
  • 一个开关
  • 防火墙后面的两台服务器,每台有 2 个 NIC。

每个网卡都连接到交换机。服务器正在运行 Ubuntu 服务器。

现在,两个 NIC 中的一个用于所有流量。
我希望两个本地服务器之间的所有流量都使用第二个当前未使用的 NIC;我该怎么做?
我尝试使用路由命令添加静态路由,但效果不佳……

答案1

您的思路是对的:您肯定希望使用静态路由来确保这些主机之间的流量在特定接口上传输。以下文档可能对您有所帮助:http://www.ubuntugeek.com/howto-add-permanent-static-routes-in-ubuntu.html

答案2

您可以使用 iproute2 和 iptables 非常灵活地做到这一点:

# Make a second routing table
/usr/sbin/ip route flush table 2
# Set a new default route for this new table
/usr/sbin/ip route add default via a.b.c.d dev eth5 table 2

然后:

# Make some packets use this table instead of the default table
/usr/sbin/ip rule add from to $SUBNET table 2

或者:

# Mark some packets in iptables mangle
/usr/sbin/iptables -t mangle -A PREROUTING -d $subnet -j MARK --set-mark 0x5
# make marked packets use this table
/usr/sbin/ip rule add fwmark 5 table 2

(路径可能因系统而异,您可以通过在 /etc/Networkmanager/dispatcher.d/ 中编写脚本将其与 NetworkManager 集成,或者将 /etc/network/interfaces 作为预/后规则集成)

答案3

我认为下面捕捉了你当前的设置

|---------|-Nic1  \
| Server A|        \ 
|---------|-Nic2    \--|----------|
                       | Switch 1 |    |------------|
                       |          |----| Firewall 1 |
                       |          |    |------------| 
|---------|-Nic2    /--|----------|
| Server B|        /   
|---------|-Nic1  /

(服务器 A)网卡 1 IP:10.20.X.2/24 网卡 2(未激活)默认网关 10.20.X.1(防火墙内部 IP)

(服务器 B) 网卡 1 IP:10.20.X.3/24 网卡 2(未激活) 默认网关 10.20.X.1(防火墙内部 IP)

您需要做的就是将每台服务器上的 Nic2 配置为不同的子网,例如 192.168.X.2 和 192.168.X.3 。通过这样做,两个节点之间的所有通信将在其自己的本地子网上进行,而无需静态路由。

事实上,这种配置更可取,因为它将私有流量与公共流量分开。此外,如果您的交换机可以处理,您应该为每对网卡设置两个 Vlan。

J

答案4

抱歉,也许我完全误解了,但是你不能只使用一个内部 DNS 名称到你的服务器(使用 /etc/hosts)来映射到第二个 NIC 的 IP 吗?

相关内容