自室IPv6化計画の一環です
前回
動機
Android端末にIPv6アドレスを振りたかったんや(´・ω・`)
最初Kea(DHCPv6)を導入メモを書きながら入れてたのですがなんてことでしょう、Android端末は手動設定もDHCPv6もできない(Googleさん曰く対応予定無し)とか。
頑張ってDHCPv6配布できるようになったーヽ(´ー`)ノって喜んだのもぬか喜びでした。というわけでSLAACならIPv6を配布できるらしいのでradvdを導入しました。
こちらもだいたいデフォルトで動いてとても簡単でしたが一応メモを。
インストール
Fedora40です。
SELinuxはEnforcingにしてますが、特に問題は起きませんでした。
# radvdのインストール
$ dnf install radvd
$ systemctl enable radvd
最初のコンフィグが全部コメントになってて、流石に編集前だとstartしても起動に失敗しました。
radvd.confの設定
# 各インターフェイスごとに設定できるっぽい
interface <インターフェイス名> {
# このIFを使う(広告する)かのON/OFFフラグ
AdvSendAdvert on;
# M=off,O=off: IPはprefixから生成しDNSはRDNSSを使う
AdvManagedFlag off;
AdvOtherConfigFlag off;
# ここで広告するprefixを設定する
prefix fdxx:xxxx:xxxx::/64 {};
# 前回の記事で立てたDNSサーバ情報を追加する
RDNSS fdxx:xxxx:xxxx::yyyy {};
# DNS-SerchdomainList(DNSサフィックス)も追加する
DNSSL home {};
# 広告先をアドレスで絞ることができる
# こことinterfaceの設定でprefixを分けることができそう?
clients {
fe80::aaaa:aaff:feaa:aaaa;
fe80::bbbb:bbff:febb:bbbb;
};
};
confを書けば起動できるようになります。もちろん書式が間違っていたら(;
忘れとか)起動に失敗します。
$ systemctl start radvd
$ systemctl status radvd
● radvd.service - Router advertisement daemon for IPv6
...
Active: active (running) since ...
clientsで絞っていなければ同一ルータ配下のWindowsやAndroid端末に新しいIPv6が生えていると思います。
firewallでradvd.confのprefix
に設定したfdxx:xxxx:xxxx::/64
に対してサービスポートを開けてあげれば、晴れてIPv6アクセス開通です。
クライアント側の設定
Linuxの場合、例えばFedora40のNetworkManagerだと
[ipv6]
addr-gen-mode=eui64
という設定がデフォルトになっておりLLAが変わることはありません。
Windowsだと再起動するとLLAが変わってしまうので、clientsにLLAを設定している場合LLAが変わった後はSLAACでIPv6を取得できなくなります。LLA生成をEUI64にすればLLAが変わらなくなりますが……netshコマンドで設定しても再起動するとまたランダムに戻っちゃう😇
起動時にスクリプト走らせるとか、あんまりやりたく無いんだけどなぁ……
AndroidのLLAは固定?
手持ちのAndroidっていうかFireHD10のLLAはEUI64ではなくランダム(っぽく見えるMACベースのハッシュ?)なアドレスだったのですが、再起動してもアドレスが変わらなかったのでヨシッとしました。
ここが毎回変わるとさぁどうしようかって話になりましたが、再起動しても変わらないしそもそも再起動すること自体まれなので、これにてAndroid対応も終了、と。
僕たちの名前解決はまだこれからだ ٩( ᐛ )و
もともとIPv6になってアドレスを覚えるのが面倒でDHCPv6でminipc/Desktop/NotePCを名前解決したかったのが出発点だったのですが、SLAACにしたことで結局IPが毎回ランダム_(:3」∠)_
DHCPv6に回してDDNS(そもそもDHCPなら固定IPを払い出せる)しようにもAndroidが非対応。
IPv6網での名前解決の道のりは遠い……
※結局主要端末はDNSに登録したIPv6アドレスを手動で設定しました