我有一台需要两个 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 卸载,但实现方式只支持一个地址? 也许...
但请注意,在多个接口上设置网关没有多大意义,因为网关设置了默认路由:您会同时将所有流量发送到两个不同的地方,因此会优先选择具有最低度量标准的接口。