两个 IP 地址,一个 NIC

两个 IP 地址,一个 NIC

我有一台需要两个 IP 地址的服务器。一个内部 IP 地址和一个公共 IP 地址。操作系统:Ubuntu 14.04 LTS

这是我当前的配置/etc/network/interfaces

auto lo 
iface lo inet loopback

auto eth0
iface eth0 inet static
    address xxx.xxx.xxx.115
    netmask 255.255.255.128
    gateway xxx.xxx.xxx.1
    dns-nameservers 8.8.8.8 8.8.4.4

auto eth0:1
iface eth0:1 inet static
    address 10.0.0.139
    netmask 255.0.0.0
    #gateway 10.0.0.1

我遇到的问题是我无法通过内部 IP 地址连接到服务器。每次我尝试时ifup eth0:1都会得到以下信息

RTNETLINK answers: File exists
Failed to bring up eth0:1

ip addr flush dev eth0 && ifup eth0:1使内部 IP 地址正常工作的唯一方法是在重新启动服务器后直接刷新接口,然后启动虚拟接口。但是我在主接口上收到相同的错误。

我还尝试将第二个接口重命名为eth0:0网关接口,并使用该接口。但我遇到了同样的错误。

答案1

根据 Debian 的文档,您不一定需要使用接口别名 (:1) 来设置多个地址。但是,无论是否使用标签,您发布的解决方案都应该按预期工作 - 而且我在 Debian 7 机器上对其进行了测试,没有任何问题。

既然您提到需要在接口上运行 ip addr flush 才能使另一个接口正常工作,那么很可能是因为您的 NIC 驱动程序出于某种原因不允许多个 IP... 也许它没有正确分离 MII/PHY/接口? 也许它支持 TCP/IP 卸载,但实现方式只支持一个地址? 也许...

但请注意,在多个接口上设置网关没有多大意义,因为网关设置了默认路由:您会同时将所有流量发送到两个不同的地方,因此会优先选择具有最低度量标准的接口。

相关内容