我的服务器是专用的(非虚拟)。我想拥有 3+1 个静态 IP。我之前使用过别名(eth0:0、eth0:1),但读到此方法已弃用。因此,我在 i; 时添加了另一个 IP 并使用 ifup/ifdown 重新配置了我的接口,但 ifdown 告诉我接口未配置。
/etc/network/interfaces 如下所示:
auto lo eth0
iface lo inet loopback
# Main IPs (IPv4 + IPv6)
allow-hotplug eth0
iface eth0 inet static
address 81.x.x.x
netmask 255.255.255.0
broadcast 81.x.x.255
gateway 81.x.x.1
iface eth0 inet6 static
address 2a02:x:x:x::x:x
netmask 64
gateway 2a02:x:x:x::1
# 2nd IP
up ip addr add 81.x.x.x/32 dev eth0
# 3rd IP
up ip addr add 81.x.x.x/32 dev eth0
请注意,第二和第三个 IP 地址来自不同的网络范围(不知道是否重要)
我重新加载网络配置
nohup sh -c "ifdown eth0 && ifup eth0"
确切的输出(nohup)是
ifdown: interface eth0 not configured
SIOCADDRT: File exists
Failed to bring up eth0.
我究竟做错了什么?
编辑:这个问题之前已经问过了。但是旧问题使用已弃用方法。而且这个解决方案对我来说不起作用。由于 serverfault 上的人似乎无法帮助我,而只是将其关闭为重复(我怀疑您是否真的读过我写的内容……)我已经在官方论坛上询问了人们。他们被这个问题困住了,根本找不到解决办法——但至少试一试。
我遇到的问题越来越多,所以我将重新安装服务器。你可以关闭这个问题,不回答。
答案1
ifdown 认为接口已经关闭。如果情况并非如此,因为它是使用 ifup 以外的其他命令(例如 ifconfig)启动的,那么您需要以同样的方式将其关闭 ( ifconfig eth0 down
)。
如果ip addr add
命令已经手动完成,您可能必须使用 撤消它们ip addr del
。
ifup 和 ifdown 很脆弱。如果它们不是唯一使用的配置工具,它们就无法顺利运行。它们可以从内核获取当前接口状态,而不是记住上次将其更改为什么,但它们却没有这样做。
一旦使界面的当前状态与 ifupdown 认为的状态相匹配,它们就会开始表现得更好。