我最近升级了 Ubuntu Xenial Xerus Server Edition 16.04.4 LTS,为运行该版本 VPS 分配了完整的 /64 IPv6 地址。我将 15 个 IPv6 地址 (:1 .. :f) 的配置放在 /etc/network/interfaces 中,但只有前两个会在启动时启动。因此,我将ip addr add eth0 ${addr}
命令(循环执行每个地址的一个命令)放在 /etc/rc.local 中,这样就可以启用 IP 地址。
问题是,这种情况发生在所有服务器软件启动后,而服务器软件启动时尚未配置其他 IPv6 地址。如果我手动重新启动服务,它会查看所有地址并打开所需的所有侦听套接字。
我想知道如何在启动初始化步骤中尽早设置我的附加地址,以便服务器软件在启动时获取所有地址。
下面是我的文件的副本/etc/network/interfaces
,其中隐藏了网络号码。
auto lo
iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0
auto eth0
iface eth0 inet static
address 198.51.100.207
netmask 255.255.255.0
broadcast 198.51.100.255
network 198.51.100.0
gateway 198.51.100.1
iface eth0 inet6 static
address 2001:db8:f00f:5775::1/48
netmask 48
gateway 2001:db8:f00f::1
iface eth0 inet6 static
address 2001:db8:f00f:5775::2/48
netmask 48
gateway 2001:db8:f00f::1
iface eth0 inet6 static
address 2001:db8:f00f:5775::3/48
netmask 48
gateway 2001:db8:f00f::1
auto eth0:1
iface eth0:1 inet static
address 198.51.100.206
netmask 255.255.255.0
broadcast 198.51.100.255
network 198.51.100.0
此文件现在只有 3 个 IPv6 地址,其中只有 2 个有效。由于某些未知原因,此文件未设置地址 :3。如果我能让所有地址在这里工作,我相信此文件会尽早设置它们以供使用。
下面是我的文件的副本/etc/rc.local
,其中隐藏了网络号码。
#!/bin/bash
for n in 2001:db8:f00f:5775::{3,4,5,6,7,8,9,a,b,c,d,e,f}/48; do
ip addr add dev eth0 "${n}"
done
有人知道如何尽早配置所有 15 个 (:1 .. :f) IPv6 地址,以便启动软件查看所有地址吗?IPv4 运行正常,可能是因为它使用接口别名来获取额外的地址。