因此,我有两个 NIC:
eth0
eth1
并且我为每个 IP 地址分配了多个 IP 地址:
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static
address 10.0.0.194
netmask 255.255.255.0
gateway 10.0.0.1
network 10.0.0.0
auto eth0:0
allow-hotplug eth0:0
iface eth0:0 inet static
address 10.0.0.253
netmask 255.255.255.0
auto eth0:1
allow-hotplug eth0:1
iface eth0:1 inet static
address 10.0.0.252
netmask 255.255.255.0
auto eth0:2
allow-hotplug eth0:2
iface eth0:2 inet static
address 10.0.0.251
netmask 255.255.255.0
auto eth1
allow-hotplug eth1
iface eth1 inet static
address 10.0.0.74
netmask 255.255.255.0
gateway 10.0.0.1
network 10.0.0.0
auto eth1:0
allow-hotplug eth1:0
iface eth1:0 inet static
address 10.0.0.105
netmask 255.255.255.0
auto eth1:1
allow-hotplug eth1:1
iface eth1:1 inet static
address 10.0.0.104
netmask 255.255.255.0
auto eth1:2
allow-hotplug eth1:2
iface eth1:2 inet static
address 10.0.0.106
netmask 255.255.255.0
我还像这样设置了 IP 路由:
sudo ip route add 10.0.0.0/24 dev eth0 table eth0
sudo ip route add default via 10.0.0.1 dev eth0 table eth0
sudo ip route add 10.0.0.0/24 dev eth1 table eth1
sudo ip route add default via 10.0.0.1 dev eth1 table eth1
sudo ip rule add from 10.0.0.194 table eth0
sudo ip rule add from 10.0.0.74 table eth1
现在,当我执行以下命令时,一切正常,我恢复了我的外部 IP:
curl --interface eth0 http://ipecho.net/plain ; echo
curl --interface eth0:0 http://ipecho.net/plain ; echo
curl --interface eth0:1 http://ipecho.net/plain ; echo
curl --interface eth0:2 http://ipecho.net/plain ; echo
curl --interface eth1 http://ipecho.net/plain ; echo
但是,当我运行时:
curl --interface eth1:0 http://ipecho.net/plain ; echo
什么都没发生。显然我搞乱了我的路线或类似的事情。有人能帮我吗?谢谢。
路由
default via 10.0.0.1 dev eth0
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.194
10.0.0.0/24 dev eth1 proto kernel scope link src 10.0.0.74
路线-n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
编辑:
所以我找到了这个,这就是我想做的,但是我不想指定任何子网。我只想让它循环处理请求。
答案1
答案2
如果您尝试在两个物理网卡之间实现负载平衡,那么您可能需要研究桥接连接。第二个网卡没有响应的原因是,您为它设置的路由与第一个网卡设置的路由相同。因此,网卡 2 下的所有虚拟接口(包括网卡本身)都试图通过第一个网卡进行路由,除非您桥接网卡,否则这是不可能的。在 Linux 下创建桥接连接很容易,您甚至可以为虚拟接口创建虚拟桥。
答案3
将多个 NIC 连接到同一个网络可能会给您带来额外的冲突。除非您仔细配置网络,否则它将无法正常工作。最后一个链接不太可能成为您的瓶颈;如果是,您最好使用高速 NIC(以及与之匹配的上游硬件)。
整个 IP 网络的理念是一每个网络上都有 NIC。像您这样的设置与通常的做法完全不符,并且(即使合法)不太可能经过检验,任何不当行为也不太可能得到修复。