总结
有人有工作吗网络计划在 Ubuntu Server 20.04 下设置动态 IPv4 和静态 IPv6 的配置?
什么有效
/etc/netplan/50-cloud-init.yaml
我的提供商(OVH)为我提供了一台具有以下开箱即用的配置的服务器:
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
version: 2
ethernets:
ens3:
dhcp4: true
match:
macaddress: xx:yy:zz:aa:bb:cc
mtu: 1500
set-name: ens3
因此,服务器通过 DHCP 获取 IPv4 地址。这里一切正常。
问题
但是,他们还提供了一个静态 IPv6(从该服务器的 Web 控制台管理中找到),而该 IPv6 在 Netplan 配置中并不存在。
我尝试手动添加它,使用如下代码片段:
network:
version: 2
ethernets:
ens3:
dhcp6: false
match:
name: ens3
addresses:
- "dead:beef:404:200::cafe/128"
gateway6: "dead:beef:404:200::1"
但什么都不起作用:如果 IPv4 起作用,那么我就没有 IPv6,如果我获得 IPv6,它会撤销我的 IPv4,并且我将失去对服务器的访问权限。
尝试
/etc/netplan/60-test-askubuntu.yaml
在将所有其他文件重命名为.yaml.bak
:之后,我尝试了这个精确的配置:
network:
version: 2
ethernets:
ens3:
dhcp6: false
addresses:
- "2001:41d0:206:cd1d::6153/128"
gateway6: "2001:41d0:206:cd1d::1"
dhcp4: true
mtu: 1500
结果:IPv4 仍在工作,但我猜它会在 DHCP 保释到期时失败。IPv6 地址已设置,但网关未设置,因此我无法 ping 通 IPv6 地址:
user@server:/etc/netplan$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether fa:16:3e:23:28:1f brd ff:ff:ff:ff:ff:ff
inet 51.210.xx.yy/32 scope global dynamic ens3
valid_lft 86396sec preferred_lft 86396sec
inet6 2001:41d0:206:cd1d::6153/128 scope global
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fe23:281f/64 scope link
valid_lft forever preferred_lft forever
user@server:/etc/netplan$ ip route
default via 51.210.8.1 dev ens3 proto dhcp src 51.210.xx.yy metric 100
51.210.8.1 dev ens3 proto dhcp scope link src 51.210.xx.yy metric 100
user@server:/etc/netplan$ ping google.com
PING google.com (172.217.22.142) 56(84) bytes of data.
64 bytes from par21s12-in-f14.1e100.net (172.217.22.142): icmp_seq=1 ttl=51 time=6.16 ms
64 bytes from par21s12-in-f14.1e100.net (172.217.22.142): icmp_seq=2 ttl=51 time=6.19 ms
^C
--- google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 6.161/6.177/6.194/0.016 ms
user@server:/etc/netplan$ ping6 google.com
ping6: connect: Network is unreachable
user@server:/etc/netplan$ ip route
default via 51.210.8.1 dev ens3 proto dhcp src 51.210.xx.yy metric 100
51.210.8.1 dev ens3 proto dhcp scope link src 51.210.xx.yy metric 100
user@server:/etc/netplan$ ip -6 route
::1 dev lo proto kernel metric 256 pref medium
2001:41d0:206:cd1d::6153 dev ens3 proto kernel metric 256 pref medium
fe80::/64 dev ens3 proto kernel metric 256 pref medium
问题
是否有人有针对动态 IPv4 和静态 IPv6 的有效网络计划配置?
当我使用和手动设置它时它可以工作ip addr
,ip route
但我想要使用 netplan 进行永久配置。
答案1
我终于在 OVH 社区帖子上找到了答案VPS 是否支持 IPv6?网关?
正确的配置(针对这种特殊情况)是:
network:
version: 2
ethernets:
ens3:
dhcp4: true
dhcp6: false
match:
macaddress: fa:16:3e:33:8d:59
set-name: ens3
addresses:
- 2402:1f00:8100:400:0:0:0:c1/128
gateway6: 2402:1f00:8100:0400:0000:0000:0000:0001
routes:
- to: 2402:1f00:8100:0400:0000:0000:0000:0001
scope: link
我不明白为什么,但是routes
netplan 需要该部分来应用新的 IPv6 路由。gateway6
这还不够。
答案2
使用 netplan 解决我所有 IPv6 问题的方法是仅定义地址. 省去网关和路线。
尝试一下这个配置:
network:
version: 2
ethernets:
ens3:
dhcp4: true
dhcp6: false
match:
macaddress: fa:16:3e:33:8d:59
set-name: ens3
addresses:
- 2402:1f00:8100:400:0:0:0:c1/128
已定义的地址 + 网关在重启后失效。netplan apply
每次重启后都需要。而且只有当我将 ip6 更改为另一个值并改回时,它才有效。所以这是一个完全奇怪的行为。
定义地址+网关+路由确实有效,但添加了不必要的路由。
仅定义地址就够了。我尝试了前缀长度:/128
和。在 OVH 专用服务器上,一切都对我有用/64
。/56