一段时间以来,我一直在努力在我的 Ubuntu VPS 中配置 IPv6。我遵循了许多有关此问题的教程,但没有一个对我有用。问题是,当我在控制台中使用一次性配置时:
ip addr add 2001:41D0:401:3000::XXXX/128 dev eth0
ip -6 route add 2001:41D0:401:3000::1 dev eth0
ip -6 route add default via 2001:41D0:401:3000::1 dev eth0
一切正常(当然,我用 替换了我的 IP 的最后一部分XXXX
)。但是,当我尝试将这些输入到我的 时/etc/network/interfaces
,重启后我只剩下自动配置的 IPv6 地址。无论我尝试在此文件中输入什么,我在ip addr show eth0
(eth0
是我的界面)上得到的都是:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fa:16:3e:7e:48:85 brd ff:ff:ff:ff:ff:ff
inet 164.132.XXX.XXX/32 brd 164.132.XXX.XXX scope global eth0
valid_lft forever preferred_lft forever
inet 145.239.XXX.XXX/32 brd 145.239.XXX.XXX scope global eth0:0
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fe7e:4885/64 scope link
valid_lft forever preferred_lft forever
我有 2 个 IPv4 地址,它们都可以使用,但我也希望有 IPv6。我有一个由 OVH 分配的 IPv4 地址。
这是我的/etc/network/interfaces
:
# The loopback network interface
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 164.132.XXX.XXX
netmask 255.255.255.255
post-up /sbin/ip route add 164.132.XXX.1 dev eth0
post-up /sbin/ip route add default via 164.132.XXX.1
post-up /sbin/ifconfig eth0:0 145.239.XXX.XXX netmask 255.255.255.255 broadcast IP_FAIL_OVER
pre-down /sbin/ifconfig eth0:0 down
pre-down /sbin/ip route del default via 164.132.XXX.1
pre-down /sbin/ip route del 164.132.XXX.1 dev eth0
dns-nameserver 213.186.33.99
dns-search ovh.net
iface eth0 inet6 static
address 2001:41D0:401:3000::XXXX
netmask 128
post-up /sbin/ip -6 route add 2001:41D0:401:3000::1 dev eth0
post-up /sbin/ip -6 route add default via 2001:41D0:401:3000::1 dev eth0
pre-down /sbin/ip -6 route del default via 2001:41D0:401:3000::1 dev eth0
pre-down /sbin/ip -6 route del 2001:41D0:401:3000::1 dev eth0
auto eth0:0
iface eth0:0 inet static
address 145.239.XXX.XXX
netmask 255.255.255.255
我也尝试过像这样添加 IPv6:
iface eth0 inet6 static
address 2001:41D0:401:3000::XXXX
netmask 128
gateway 2001:41D0:401:3000::1
并使用完整(扩展)IP地址,但没有任何成功。
还添加了
net.ipv6.conf.eth0.autoconf=0
net.ipv6.conf.default.autoconf=0
net.ipv6.conf.all.autoconf=0
net.ipv6.conf.eth0.accept_ra=0
到我的 sysctl.conf,正如 OVH 教程和其他一些建议的那样,但它并没有改变任何东西,无论它是否存在。
每次检查之间我都会重新启动整个机器,以确保所有配置都已重新加载,但结果却service networking restart
失败了
sty 04 15:54:21 vpsXXXXXX.ovh.net ifup[2426]: RTNETLINK answers: File exists
sty 04 15:54:21 vpsXXXXXX.ovh.net ifup[2426]: Failed to bring up eth0.
sty 04 15:54:21 vpsXXXXXX.ovh.net ifup[2426]: RTNETLINK answers: File exists
sty 04 15:54:21 vpsXXXXXX.ovh.net ifup[2426]: Failed to bring up eth0:0.
sty 04 15:54:21 vpsXXXXXX.ovh.net systemd[1]: networking.service: Main process exited, code=exited, status=1/FAILURE
sty 04 15:54:21 vpsXXXXXX.ovh.net systemd[1]: Failed to start Raise network interfaces.
非常感谢您的帮助,如果需要,我很乐意提供更多信息。
答案1
指定网络接口别名的格式interface:number
如下已弃用在 Linux 中已经存在多年,不应再使用(已被弃用,将来可能会被删除)。如今,您可能需要的所有 IP 地址都直接添加到接口,无需别名。
因此您需要更改eth0:0
为eth0
。 (并且auto eth0
只需出现一次。)您目前有:
auto eth0:0
iface eth0:0 inet static
address 145.239.XXX.XXX
netmask 255.255.255.255
正确的应该是:
iface eth0 inet static
address 145.239.XXX.XXX
netmask 255.255.255.255
配置为使用旧式接口别名的应用程序应改为使用相应的 IP 地址,或根据需要监听所有地址。