如何向 /etc/network/interfaces 添加额外的 IP 地址?

bab*_*eii 49 server networking ip-address

我的服务器有一个额外的 IP 地址可用,因此我需要在接口文件中分配它。目前,我有这个:

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
Run Code Online (Sandbox Code Playgroud)

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

Eri*_*lho 61

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
Run Code Online (Sandbox Code Playgroud)

然后你可以跑着sudo ifup eth0:0把它举起sudo ifdown eth0:0来,把它放下。

  • 这是带有别名的过时变体。使用下面的“ip addr”代替。 (7认同)
  • 它可能很旧(也可能已经过时),但使用这种方法并没有错,因为它没有被标记为“已弃用”,并且没有计划在不久的将来将其删除。恕我直言,这种方法比其他方法更清洁、更安全(参见 [Wilmer 的回答](http://askubuntu.com/a/667243/65926) 及其评论)。 (6认同)

Wil*_*mer 30

您可以为同一个界面重复 iface 节。来自https://wiki.debian.org/NetworkConfiguration#Multiple_IP_addresses_on_one_ 的示例:

auto eth0
allow-hotplug eth0
iface eth0 inet static
    address 192.168.1.42/24
    gateway 192.168.1.1

iface eth0 inet static
    address 192.168.1.43/24

iface eth0 inet static
    address 192.168.1.44/24

# adding IP addresses from different subnets is also possible
iface eth0 inet static
    address 10.10.10.14/24
Run Code Online (Sandbox Code Playgroud)

所以只是上面的解决方案,但删除:x后缀,正如 Heihachi 指出的那样已经过时了。

(这个ip addr建议是最糟糕的。它既丑陋又不完整,因为您还必须添加一个down变体,否则ifdown将无法正常工作。)

  • @reallynice 合理的一点,但恕我直言,如果这会导致系统出现问题,对我来说听起来像是有问题的内核/驱动程序。多年来,我一直在单个接口上使用多个 IP 地址,而没有丑陋的 :0/:1/etc 别名。(此外,我很确定 Wiki 中的解决方案在功能上等同于 Robbie 的上述解决方案。) (4认同)
  • 从您链接的文档中,谈论最现代的做事方法(称为 iproute2):_请注意,这种方法是**危险的**!如果没有为别名接口分配标签,某些驱动程序/硬件组合有时可能无法启动链接。_考虑到官方文档说新方法不那么可靠,我更愿意坚持使用已弃用的工作一。 (2认同)
  • `iproute2` 方法的最后一个已知问题是 [2015 年](https://wiki.debian.org/NetworkConfiguration?action=diff&rev1=88&rev2=89)。而遗留方法(你注意到这个名字了吗?)在 Debian Stretch 上对我不起作用。似乎后面的选项(来自“eth0:0”)覆盖了前面的选项(“来自 eth0”)。也就是说,在“systemctl restartnetworking”之后,我最终只得到了第二个IP(第一个IP被分离)。 (2认同)

Rob*_*sak 26

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

up ip addr add fff.fff.fff.fff/prefixlen dev $IFACE
Run Code Online (Sandbox Code Playgroud)

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

如果您的网络掩码是,255.255.254.0那么prefixlen应该23适合您。

不过,我很想知道是否有更好的方法。