LoginSignup
0
0

自宅ネットワークにIPv6対応のDNS/DHCPサーバを建てた話

Posted at

事の始まり

仕事でOCI証明書サービスの話が出て、自宅サーバのCockpitにOCIで発行した証明書インストールしてみっか!と思ったら、Windowsマシンからサーバにホスト名でアクセスできなかったw

dnsmasqでDNS/DHCPサーバを作っていて、Linuxサーバ同士では問題なかったのだけど、Windowsマシンは無線ルータのIPv6アドレスが優先DNSサーバになっていて名前解決できなかった。IPv6有効でもちゃんと名前解決できるようにしようと決意。

目指す姿

  • 無線ルータのIPv4/v6アドレスがデフォルトゲートウェイに設定されること
  • dnsmasqを動かしているサーバのIPv4/v6アドレスがDNSサーバとして登録されること

登場する機器およびソフトウェア

とてもシンプル。

  • 無線ルータ/Aterm WX1500HP
  • DNS・DHCPサーバ/dnsmasq-2.79-31.el8_9.2.aarch64
  • Windowsマシン

今回の肝はおそらくAterm。家庭用の無線ルータで後述の設定ができるのはAtermしかないんじゃなかろうか。

こうすればできるはず

無線ルータが出すRAパケットのRDNSSオプションでdnsmasqが動いているサーバのIPv6アドレスを伝えればよい。
→ 残念ながらそんな機能はAtermにはない。

dnsmasqもRAパケットを出せるようなので、こちらで伝えれば良いのでは?
→ 複数の機器がRAパケット出したらどうなるのか分からないけど、やってみるべ!

実装

dnsmasqの出すRAのカスタマイズ①

そのまま実装するとdnsmasqが動いているサーバがデフォゲに登録されてしまうので対処。

dnsmasq.conf
ra-param=<インターフェイス名>,60,0

60はRAの送出間隔? AdvRDNSSLifetimeはデフォルト300っぽく、0をセットするとRAがしばらく送出されないタイミングでWindowsマシン側でDNSサーバのエントリが消えるという事象が発生。期限切れにならなきゃいいので60。もうちょっと大きい数字でも良いかも。
AdvDefaultLifetimeが0だとデフォゲとして登録されなくなる。末尾の0がそれ。

dnsmasqの出すRAのカスタマイズ②

無線ルータが出すRAのprefixと同じものを出すために学習したものをそのまま再利用する。
あと、RAパケットのAdvOtherConfigFlagをOnにすれば、DHCPv6でDNSサーバを聞いてくるようになるのでra-statelessをセット。

dnsmasq.conf
dhcp-range = ::,constructor:<インターフェイス名>,ra-stateless,ra-names

なお、ra-statelessじゃなくslaacだとAdvOtherConfigFlagがOffになる。
ra-namesは入れてみたけど、うまく動く相手がいなかった。まあ、邪魔にはならないと思う。

dnsmasqの出すRAのカスタマイズ③

RDNSSオプションの指定はどうするのだろうと思ったら、dhcp-optionの値がそのまま使われるっぽい? DHCPv6用の設定でもあるので、一石二鳥。

dnsmasq.conf
dhcp-option = option6:dns-server,[<自身のIPv6アドレス(グローバル)>]

グローバルである必要があったかどうかは、知らないw

まとめるとこんな感じ

IPv4とv6両方動くようにするにはこんな感じ。

dnsmasq.conf
enable-ra
ra-param=<インターフェイス名>,60,0

dhcp-range = <IPv4のDHCPのレンジ(開始)>,<IPv4のDHCPのレンジ(終了)>,24h
dhcp-range = ::,constructor:<インターフェイス名>,ra-stateless,ra-names
dhcp-option = option:router,<デフォゲ(IPv4)>
dhcp-option = option:dns-server,<自身のIPv4アドレス>
dhcp-option = option6:dns-server,[<自身のIPv6アドレス(グローバル)>]
dhcp-option = option6:information-refresh-time,6h

リース時間やリフレッシュ時間は適当に変更してね。

Aterm側の設定

dnsmasqと違っていろいろできないが、今回のような環境だとずばりの設定ができる。

  • DHCPv6サーバ機能は「使用する(stateless)」
  • DHCPv6によるDNSv6サーバアドレス通知は「OFF」
  • RAオプションによるDNSv6サーバアドレス通知も「OFF」

「使用する(stateless)」はdnsmasqのra-statelessと同じで、RAパケットのAdvOtherConfigFlagがOnになる。iPhoneだとdnsmasq側のRAパケットは見てくれず、DHCPv6で問い合わせもしてくれなかった。Windowsマシンは見てくれたのに。AdvDefaultLifetimeが0だからかなあ?

家庭用の無線LANルータでこんな細かい設定ができるとはさすがAterm。
しかも、使っているのはエントリモデルですよ。

最後

radvd使ってRAパケットを送出する方法はぐぐれば色々出てきたけど、Atermとdnsmasqだけで済ませられたのが良かった。さーて、証明書サービスいろいろ試すかー。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0