Ubuntu Server 20.04 - 动态 IPv4 和静态 IPv6 的 Netplan 配置

yaa*_*aap 4 server ipv6 ipv4 netplan

TL; 博士

有没有人在 Ubuntu Server 20.04 下设置动态 IPv4 和静态 IPv6的有效网络规划配置?

什么有效

我的提供商 (OVH) 为我提供了一个/etc/netplan/50-cloud-init.yaml开箱即用的具有此配置的服务器:

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

所以服务器正在通过 DHCP 获取 IPv4 地址。一切都在这里工作。

问题

但是,他们还提供了 netplan 配置中不存在的静态 IPv6(从该服务器的 Web 控制台管理中找到)。

我尝试使用以下代码段手动添加它:

network:
    version: 2
    ethernets:
        ens3:
            dhcp6: false
            match:
                name: ens3
            addresses:
              - "dead:beef:404:200::cafe/128"
            gateway6: "dead:beef:404:200::1"
Run Code Online (Sandbox Code Playgroud)

但没有任何效果:如果 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
Run Code Online (Sandbox Code Playgroud)

结果:IPv4 仍在工作,但我猜它会在 DHCP 保释期到期时失败。IPv6 地址已设置,但网关未设置,因此我无法 ping6 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
Run Code Online (Sandbox Code Playgroud)

有没有人有适用于动态 IPv4 和静态 IPv6 的有效网络规划配置?

当我使用手动设置它时它有效ip addrip route但我想要使用 netplan 进行永久配置。

yaa*_*aap 5

我终于在 OVH 社区帖子VPS en 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
Run Code Online (Sandbox Code Playgroud)

我不明白为什么,但是routesnetplan 需要该部分来应用新的 IPv6 路由。gateway6是不足够的。