最初に概要
この記事はプログラミング初心者がモチベーションを保つために学んだことなどをひたすらに書いていくものです。
多分qiitaを見ている多くの人は知っていることかもしれませんが温かい目で見てくださると何よりです。
結論
いきなり結論です。以下のようにして僕の環境ではできました。
network:
version: 2
ethernets:
eth0:
dhcp4: false
dhcp6: false
accept-ra: false
link-local: [ ]
addresses:
- 192.168.0.好きな数字/24
nameservers:
addresses: [192.168.0.1]
routes:
- to: default
via: 192.168.0.1
sudo netplan apply
ここで他の方が紹介しているのと少し変わっているのがaccept-ra
とlink-local
だと思います。
accept-ra
とは?
-
正式名称:
accept-router-advertisements
- 役割: IPv6 ネットワークでルーターから送られてくる「ルーターアドバタイズメント(RA)」を受け取るかどうかを指定します。
-
使いどころ:
-
true
:自動でルート情報などを受け取る(クライアント的な動き)。 -
false
:自動設定を無視する(サーバーやルーターとして自立的に動かしたいとき)。
-
💡
dhcp6: false
にしていても、accept-ra: true
だと一部のIPv6設定を自動で拾ってしまうので注意。
link-local
とは?
- 意味: ネットワーク機器が自動で割り当てるローカル専用IPアドレスのこと。
-
例:
- IPv4:
169.254.x.x
- IPv6:
fe80::/10
- IPv4:
-
用途:
- DHCPがないときの最小限の通信手段。
- ルーターや隣接機器との通信。
-
Netplanでの指定:
link-local: [ ]
なぜ accept-ra: false
と link-local: [ ]
が必要だったのか?
理由としては僕の環境で普通の家庭用のIPv6対応ルーターを使っていたことでした。
そしてその原因になっていたのが、IPv6関連の自動設定でした。
accept-ra: false
を設定した理由
ルーターがIPv6のルーターアドバタイズメント(RA)を送ってきて、
それを受け取ると、静的に設定したルートやDNSが上書きされることがありました。
そのため、RAの受信を無効にすることで、手動設定を優先させるようにしました。
link-local: [ ]
を設定した理由
IPv6のリンクローカルアドレス(fe80::
など)が自動で付与されると、
それ経由で意図しないルーティングが行われることがありました。
これを明示的に無効にすることで、IPv6の影響を受けない安定した構成になりました。
家庭用ルーターを使っている環境では、これらの設定がないと意図しないIPv6の動作でネットワークが不安定になることがあるみたいです。
感想
ちなみにこんな感じで書いていますが判明するまでに丸1日かかってます。
もうnetplanは触りたくないです。