我有一台带有 2 个接口的服务器。eth0 比 eth1 快 100 倍。但由于某种原因,每次重新启动时都会随机选择默认接口。更烦人的是,它们都使用相同的网关,因此选择默认网关不起作用。linux 如何选择默认接口,我如何选择默认接口?
以下是我route -n
来帮助解释一下情况。
Destination Gateway Genmask Flags Metric Ref Use Iface
173.246.100.0 0.0.0.0 255.255.252.0 U 0 0 0 eth1
173.246.100.0 0.0.0.0 255.255.252.0 U 0 0 0 eth0
0.0.0.0 173.246.103.254 0.0.0.0 UG 0 0 0 eth1
0.0.0.0 173.246.103.254 0.0.0.0 UG 100 0 0 eth0
PS。这是 VPS,所以我的提供商可能也存在问题。第二个接口的原因是要为 DNS 设置另一个 IP,因为它只做 DNS,速度很慢。
编辑:这是一个 Ubuntu 10.04 服务器
答案1
用于ifmetric
更改两个接口的度量值。将 eth1 增加到 eth0 以上将导致 eth0 用于所有连接。彻底解决问题。
答案2
您应该禁用第二个较慢的接口,然后将辅助 IP 添加到主接口。为此,请使用以下命令编辑您的接口文件:
sudo vi /etc/network/interfaces
一旦您访问了网络文件,您可能会看到类似下面的内容:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 173.246.100.1
network 173.246.100.0
netmask 255.255.252.0
broadcast 173.246.100.255
gateway 173.246.103.254
auto eth1
iface eth0 inet static
address 173.246.100.2
network 173.246.100.0
netmask 255.255.252.0
broadcast 173.246.100.255
gateway 173.246.103.254
重新配置它看起来像这样:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 173.246.100.1
network 173.246.100.0
netmask 255.255.252.0
broadcast 173.246.100.255
gateway 173.246.103.254
iface eth0:1 inet static
address 173.246.100.2
network 173.246.100.0
netmask 255.255.252.0
这会将两个 IP 分配给第一个 NIC。完成后,保存文件并运行:
/etc/init.d/networking restart
并且更改将会被提交。
<-- 编辑 -->
根据我的经验,如果在同一个虚拟交换机上,那就没什么问题,尽管托管环境可能会进一步锁定它。不过,这可能值得一试,如果不行,你可以要求托管公司将虚拟接口更改为更强大的接口。
<-- 编辑 -->
另外,如果您的主 IP 目前不提供 DNS 服务,那么为什么不也将其用于 DNS?您可以在一个 IP 上托管几种不同的服务,因为它们使用不同的端口。
答案3
您似乎在同一个子网中有两个接口,这有点奇怪。Linux(假设您使用的是 Red Hat 衍生产品)通过从 读取 GATEWAY 值来选择默认网关/etc/sysconfig/network
。但是,此变量将 IP 地址作为网关标识符保存,而不是接口名称。因此,在您的情况下,一个 IP 地址可以作为两个接口的网关,从而导致(我认为)某种竞争条件。
我还是不太清楚为什么需要第二个接口。如果彻底关闭慢速接口,会发生什么?