Ubuntu 18.04.2 システムでデフォルト ルートを構成できませんnetplan
。明示的なコマンドが発行されるとルートが機能しますip -6 route add ...
。
プライバシー拡張機能が無効になっています: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
SLACC と RA は無効になっており、IPv4/IPv6 転送は 1 つになっています (マシンは OpenVPN サーバーとして機能します)
10-ipv6-router.conf に、
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.all.proxy_ndp = 1
sysctl.conf は、
net.ipv4.ip_forward=1
...
net.ipv6.conf.all.forwarding=1
/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"
これにより、次に示すように、インターフェイスにアドレスが割り当てられます。
$ 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
ルートは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
があるいいえデフォルトルートが設定されており、外部サイトへの ping が機能しない:
$ ping -6 -c3 ipv6.google.com
connect: Network is unreachable
次の 2 つのコマンドを実行します。
$ 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
現在上演中の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
デフォルトルートは今外部サイトの設定と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
では、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
しかし、これはない動作します。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
それでもない働く!
答え1
設定では、ローカル ネットワークが 2001:0db8:0004:4a1a::/64 であると表示されていますが、そのネットワークの一部ではないゲートウェイ 2001:0db8:0004::0001 を設定しようとしています。そのため、networkd は、ルートがないルーター経由でデフォルト ルートを追加することを拒否します。
手動設定でip route
もこれが反映されます。まずルーターのアドレスのルートを追加し、ルーターがイーサネットにローカルに接続されていることを宣言し、その後にデフォルト ルートを設定します。
したがって、netplan でも同等のことを行う必要があります。つまり、routes: に 2 つのエントリを宣言します。1 つは でscope: link
、もう 1 つは を設定します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
答え2
network:
version: 2
renderer: networkd
ethernets:
ens19:
dhcp6: no
accept-ra: no
addresses: ["2001:0db8:0004:4a1a::dead:dead/64"]
gateway6: "2001:0db8:0004::0001"
routes:
- to: "2001:0db8:0004::0001/128"
scope: link
これは、この記事の執筆時点ではUbuntu 18.04.4 LTSで動作しています(異なるネットブロックを使用していますが、テスト済みです)。
答え3
この問題に遭遇しました。実際の原因は/etc/sysctl.confに書かれています。
# Uncomment the next line to enable packet forwarding for IPv6
# Enabling this option disables Stateless Address Autoconfiguration
# based on Router Advertisements for this host
#net.ipv6.conf.all.forwarding=1
IPv6 転送が無効になっている場合、ホストはルーター広告をリッスンしません。ルーター広告は通常、デフォルト ルートを決定する方法です。したがって、デフォルト ルート (および DNS サーバーと RA から取得するその他のもの) を手動で追加するか、accept_ra
カーネル オプションを 2 に設定して動作を上書きする必要があります。
このブログ記事をご覧くださいさらに詳しい情報はこちら。