如何在/ etc / network / interfaces中添加其他IP地址?


42

我的服务器有一个可用的额外IP地址,因此需要在interfaces文件中分配它。此刻,我已经知道了:

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address aaa.aaa.aaa.aaa
netmask 255.255.254.0
gateway bbb.bbb.bbb.bbb
dns-nameservers ccc.ccc.ccc.ccc ddd.ddd.ddd.ddd eee.eee.eee.eee
dns-search vps-number.com

我要添加什么来分配新的IP地址(fff.fff.fff.fff)?以及如何重新启动它以接受新配置?


那是什么字符集?你是在哪里找到那个东西的。
绿色的

Answers:


55
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address aaa.aaa.aaa.aaa
  netmask 255.255.254.0
  gateway bbb.bbb.bbb.bbb
  dns-nameservers ccc.ccc.ccc.ccc ddd.ddd.ddd.ddd eee.eee.eee.eee
  dns-search vps-number.com

auto eth0:0
iface eth0:0 inet static
  address fff.fff.fff.fff
  netmask 255.255.254.0

然后你可以运行sudo ifup eth0:0,使其达到并sudo ifdown eth0:0使其下降。


4
这是带有别名的过时变体。在下面使用“ ip addr”代替。
亚历山大·金

5
它可能很旧(并且可能已过时),但是使用此方法没有任何问题,因为它没有被标记为“已弃用”,并且没有计划在不久的将来将其删除。恕我直言,这种方法比其他方法更清洁,更安全(请参阅Wilmer的回答及其评论)。
埃里克·卡瓦略

PS如果使用auto eth1(在AWS上没有),则无法正常使用,如示例所示auto eth0:0
IvRRimUm

遗留解决方案在Debian Stretch上对我不起作用,最后我得到了第二个IP。看到iproute2方法,它起作用了。
x-yuri

24

对于额外的IP地址,我通常会添加:

up ip addr add fff.fff.fff.fff/prefixlen dev eth0

iface eth0 inet static节的底部以供将来重新引导,然后sudo ip addr add fff.fff.fff.fff/prefixlen dev eth0再次手动运行命令以直接激活它。

如果你的网络掩码是255.255.254.0那么prefixlen应该是23你。

我很想知道是否还有更好的方法。


非常感谢,接受的方法不适用于绑定(ifenslave),但是可以!
mekkanizer

up有问题,因为network-online.target不等待它。像nginx这样的systemd服务将无法up在启动时添加的IP 上进行绑定
sdaffa23fdsf

对于Debian Stretch / Ubuntu 16.04 Xenial或更高版本,有官方解决方案
x-yuri

22

正如Heihachi指出的那样,使用ethx:x别名已过时。但是,ip addr解决方案更糟。这很丑陋且不完整,因为您还必须添加一个down变体,否则ifdown将无法正常工作。

请参阅https://wiki.debian.org/NetworkConfiguration#Multiple_IP_addresses_on_one_Interface以获取更好的解决方案:现在,您只需为同一接口重复iface节即可。因此,只需上述解决方案,但不要添加:x后缀。


2
在链接的文档中,讨论了最现代的做事方法(称为iproute2):但是请注意,此方法很危险!如果没有为别名接口分配标签,则某些驱动程序/硬件组合有时可能无法打开链接。考虑到官方文档说新方法不是那么可靠,所以我宁愿坚持使用已弃用的方法。
realnice

1
由于官方和精确的文档参考,所以赞成,但不是“更好的解决方案”,因为在官方文档中将其标记为危险。
realnice 2015年

2
@reallynice合理点,尽管恕我直言,如果这会导致在我看来像是有问题的内核/驱动程序的系统上出现问题。多年来,我一直在没有丑陋的:0 /:1 / etc别名的单个接口上使用多个IP地址。(而且,我非常确定Wiki的解决方案在功能上等同于上述Robbie的解决方案。)
Wilmer

@Wilmer我在Ubuntu 16.04上有一个vmxnet3设备(VMware ESXi 6.5),我只能以新的方式启动第一个设备。删除:x后缀显然对我来说不是更好。文档清除了我在使用:x后缀时遇到的错误。
jbo5112'7

方法的最后一个已知问题iproute2在2015年。而且在Debian Stretch上,旧方法(您注意到这个名称了吗?)对我不起作用。似乎后面的选项(来自eth0:0)替代了前面的选项(from eth0)。也就是说,在systemctl restart networking我仅获得第二个IP(第一个IP被分离)之后。
x-yuri
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.