Sac*_*arg 4 ipv6 networking routing netplan 18.04
netplan我无法在 Ubuntu 18.04.2 系统上配置默认路由。ip -6 route add ...当发出明确的命令时,该路线起作用。
隐私扩展已被禁用:/etc/sysctl.d/10-ipv6-privacy.conf
net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.default.use_tempaddr = 0
net.ipv6.conf.ens192.use_tempaddr = 0
Run Code Online (Sandbox Code Playgroud)
SLACC 和 RA 已禁用,IPv4/IPv6 转发为一(机器用作 OpenVPN 服务器)
/etc/sysctl.d/10-ipv6-router.conf
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.all.proxy_ndp = 1
Run Code Online (Sandbox Code Playgroud)
/etc/sysctl.conf
net.ipv4.ip_forward=1
...
net.ipv6.conf.all.forwarding=1
Run Code Online (Sandbox Code Playgroud)
/etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
ens18:
dhcp4: no
addresses:
- a.b.c.d/24
gateway4: a.b.c.e
dhcp6: no
accept-ra: no
addresses:
- "2001:0db8:0004:4a1a::dead:beef/64"
gateway6: "2001:0db8:0004::0001"
ens19:
dhcp6: no
accept-ra: no
addresses:
- "2001:0db8:0004:4a1a::dead:dead/64"
gateway6: "2001:0db8:0004::0001"
Run Code Online (Sandbox Code Playgroud)
这会将地址分配给接口,如下所示:
$ ip -6 addr show
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 2001:0db8:0004:4a1a::dead:beef/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::abcd:efff:fea3:2a03/64 scope link
valid_lft forever preferred_lft forever
3: ens19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 2001:0db8:0004:4a1a::dead:dead/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::defc:deff:fe98:7c74/64 scope link
valid_lft forever preferred_lft forever
Run Code Online (Sandbox Code Playgroud)
使用的路线ip -6 route show
2001:0db8:0004:4a1a::/64 dev ens19 proto kernel metric 256 pref medium
2001:0db8:0004:4a1a::/64 dev ens18 proto kernel metric 256 pref medium
fe80::/64 dev ens19 proto kernel metric 256 pref medium
fe80::/64 dev ens18 proto kernel metric 256 pref medium
Run Code Online (Sandbox Code Playgroud)
没有配置默认路由,并且 ping 外部站点不起作用:
$ ping -6 -c3 ipv6.google.com
connect: Network is unreachable
Run Code Online (Sandbox Code Playgroud)
运行以下两个命令:
$ sudo ip -6 route add 2001:0db8:0004::0001 dev ens18 metric 1
$ sudo ip -6 route add default via 2001:0db8:0004::0001 dev ens18 metric 1
Run Code Online (Sandbox Code Playgroud)
现在正在运行的ip -6 route节目:
2001:0db8:4::1 dev ens18 metric 1 pref medium
2001:0db8:4:4a1a::/64 dev ens19 proto kernel metric 256 pref medium
2001:0db8:4:4a1a::/64 dev ens18 proto kernel metric 256 pref medium
fe80::/64 dev ens19 proto kernel metric 256 pref medium
fe80::/64 dev ens18 proto kernel metric 256 pref medium
default via 2001:0db8:4::1 dev ens18 metric 1 pref medium
Run Code Online (Sandbox Code Playgroud)
现在已配置默认路由,并且可以ping 外部站点:
$ ping -6 -c3 ipv6.google.com
PING ipv6.google.com(ord38s18-in-x0e.1e100.net (2607:f8b0:4009:804::200e)) 56 data bytes
64 bytes from ord38s18-in-x0e.1e100.net (2607:f8b0:4009:804::200e): icmp_seq=1 ttl=56 time=23.2 ms
64 bytes from ord38s18-in-x0e.1e100.net (2607:f8b0:4009:804::200e): icmp_seq=2 ttl=56 time=23.2 ms
64 bytes from ord38s18-in-x0e.1e100.net (2607:f8b0:4009:804::200e): icmp_seq=3 ttl=56 time=23.2 ms
--- ipv6.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 23.274/23.283/23.293/0.176 ms
Run Code Online (Sandbox Code Playgroud)
那么,netplan配置有什么问题呢?为什么没有配置默认 IPv6 路由?
根据 @slangasek 建议进行更改后进行编辑:
ethernets:
ens18:
...
dhcp6: no
accept-ra: no
addresses:
- "2001:0db8:0004:4a1a::dead:beef/64"
routes:
- to: "::/0"
via: "2001:0db8:0004::1"
metric: 1
on-link: true
Run Code Online (Sandbox Code Playgroud)
然而,这是行不通的。我收到像ens18: Could not set route: No route to host日记日志中那样的消息。
从https://askubuntu.com/a/1014683的答案中,我使用以下命令添加了到路由器的附加路由scope: link:
routes:
- to: "2001:0db8:0004::1/128"
via: "2001:0db8:0004::1"
metric: 1
scope: link
- to: "::/0"
via: "2001:0db8:0004::1"
metric: 1
on-link: true
Run Code Online (Sandbox Code Playgroud)
但是,还是不行!
您的配置显示您有一个本地网络 2001:0db8:0004:4a1a::/64,但您正在尝试配置网关 2001:0db8:0004::0001,该网关不属于该网络。因此,networkd 拒绝通过您没有路由的路由器添加默认路由。
您的手动配置ip route也反映了这一点:您首先为路由器地址添加一条路由,声明它本地连接到您的以太网,然后设置默认路由。
因此,您必须使用 netplan 执行相同的操作,即在 paths: 中声明两个条目,一个是 ,scope: link另一个是设置on-link: true:
addresses:
- "2001:0db8:0004:4a1a::dead:dead/64"
routes:
- to: "2001:0db8:0004::0001/128"
scope: link
- to: "::/0"
via: "2001:0db8:0004::0001"
on-link: true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13699 次 |
| 最近记录: |