本記事にはアフィリエイト広告(Amazon アソシエイト)が含まれます。
実測日: Wed Aug 26 2026 09:00:00 GMT+0900 (Japan Standard Time)
2 台の Rock 5B のうち 1 台だけが、ある日から外の VPS からつながらなくなった。
同じ LAN からはつながり、もう 1 台の Rock 5B からもつながる。
IPv4 では問題なく、IPv6 だけが外からだけ落ちるという紛らわしい症状だった。
本記事では、原因だった経路表の状態と、確認の手順を示す。
症状の形
- 同じ LAN の機械からは、ping6 も SSH も通る
- 別拠点の VPS からは、ping6 も SSH も同時に落ちる
- IPv4 は内外とも問題ない
「同じ LAN からは通る」ので、対象の機械も LAN も生きている。
「外からだけ落ちる」ので、ルータか VPS 側を疑いたくなる。
しかし原因は対象の機械の経路表にあった。
IPv6 のデフォルト経路が無いと何が起きるか
対象の機械で ip -6 route show を見ると、default が無かった。
IPv6 でデフォルト経路が無いと、on-link(同じ /64 のプレフィックス内)の相手には届くが、off-link(それ以外)の相手には届かない。
外からの SYN は、ルータを経由して対象の機械まで届く。
届くのに応答が返らないのは、応答の宛先が off-link で、対象の機械に戻り道が無いからである。
Network is unreachable を返すのは対象の機械自身で、ルータでも対向でもない。
同じ理由で ping も SSH も同時に落ち、IPv4 は独立に生きているので「網は動いている」ように見える。
経路が消えた経緯
この機械は systemd-networkd 管理で、netplan の設定では IPv6 のデフォルト経路がコメントアウトされたままだった。
つまり RA(ルータ広告)だけに頼っていた。
ある日 networkd が次のログを残して経路の設定に失敗し、インターフェースの SETUP が failed に落ちて、経路が消えた。
Could not set route: Connection timed out
netplan に静的なデフォルト経路を書き戻して解消した。
ゲートウェイはルータのリンクローカルアドレスで、on-link を明示する。
routes:
- to: "::/0"
via: "fe80::xxxx:xxxx:xxxx:xxxx"
on-link: true
metric: 100
RA の経路(metric 1024)は残るので、静的経路を小さい metric で置けば両方が共存する。
2 台で管理系が違うと、症状の出方も違う
同じ役割の 2 台なのに、片方は NetworkManager、もう片方は systemd-networkd で動いていた。
| 管理系 | IPv6 デフォルト経路 | |
|---|---|---|
| 1 台目 | NetworkManager | static、metric 425 |
| 2 台目 | systemd-networkd | static、metric 100 に加えて RA の metric 1024 |
NetworkManager 側は接続プロファイルがデフォルト経路を持つので、RA の失敗だけでは消えない。
networkd 側は netplan に書いていなければ RA 頼みになり、1 回の失敗で消える。
同じ症状が出るかどうかは、管理系の違いで決まる。
確認の手順
外から届かないと言われたら、対象の機械で次の 2 つを見る。
ip -6 route showにdefaultがあるかnetworkctl listの SETUP がconfiguredか(networkd の場合)
default が無ければ、ルータや対向を調べる前に経路表を直す。
対象の機械自身が Network is unreachable を返す場合、原因は対象の機械の経路表にある。
