ルーターには API が無いので、設定はここに書いて持つ(IaC にはできない)。これまで decisions.md・apps/matrix/README.md・ docs/talos.md に散らばっていたものを 1 つにまとめた(2026-10-07)。ルーターの設定を変えたら、ここも直す。
値は 2026-10-07 に管理画面(クイック設定Web)とノードで読んだもの。
| 項目 | 値 |
|---|---|
| 機種 | au ひかりのホームゲートウェイ BL1500HM(KDDI。管理画面の「クイック設定Web」のページから。2026-10-07) |
| 管理画面 | http://10.0.0.1/(クイック設定Web。ログインが要る) |
| 回線 | au ひかり(接続はホームゲートウェイが持つ。IPv6 はネイティブで RA が来る) |
| 外向きの IPv4 | 固定ではない。cloudflare-ddns が doany.io と nb.origin.doany.io を追従させる(apps/cloudflare-ddns/) |
| IPv6 | プレフィックス 240f:6d:842b:1::/64(RA で配られる。変わりうるので、どこにも固定で書かない) |
| IPv6 の受信 | 「IPv6ホスト公開」の既定は**「遮断」**で、ノードだけをエントリで公開(MAC e6:2c:1b:1a:a0:39、IPv6 すべて、ポート any)。2026-10-07 に「公開」(全端末)から変えた(下の「IPv6 はノードだけを公開する」)。IPv6 パケットフィルターは有効で、WAN 側の規則は 0 件 |
| 項目 | 値 |
|---|---|
| LAN | 10.0.0.0/24、ルーターは 10.0.0.1 |
ノード main |
10.0.0.2(bond0)、240f:6d:842b:1::2。ノード側の静的設定(talos/patches/cluster.yaml。DHCP は使わない。既定経路は 10.0.0.1、IPv6 は RA を受ける) |
| 別の LAN | 10.10.0.0/24(ゲートウェイ 10.10.0.1)。ノードの eno4 が 10.10.0.4(静的。既定経路には使わない) |
| DHCP | ルーターが配る。10.0.0.10 から 128 個、リース 24 時間。固定割り当て・除外は 0 件。DHCPv6 のアドレス割り当ては自動 |
| DNS | ルーターの DHCP には DNS の欄が無い(配るのはルーター自身の 10.0.0.1)。AdGuard Home を使うのは、端末側で指定したものと、NetBird の端末(NetBird の DNS 設定で AdGuard を引く。pulumi/netbird.ts) |
DMZ(すべての受信)をノード 10.0.0.2 に向けている(「DMZホスト設定」。ポートマッピングは 0 件)。個別のポート転送ではないので、ノードで受けているものは全部外に出る。
DMZ の向け先を変えると、下の全部と AdGuard の split-horizon が一斉に外れる(decisions.md「LoadBalancer をどう置き換えるか」)。
ノードで受けているもの(hostPort。増やすと、それも外に出る):
| ポート | 何 | 外から要るか |
|---|---|---|
| 80 / 443 TCP | Gateway(全部の Web) | 要る |
| 53 UDP・TCP / 853 TCP | AdGuard Home(DNS / DoT) | 開けている(下の「53 番は外にも開けている」) |
| 8443 UDP・TCP | LiveKit(Matrix の通話。apps/matrix/README.md) | 要る |
| 3478 UDP | NetBird の STUN(apps/netbird/) | 要る |
| 51820 UDP | NetBird の routing peer(WireGuard) | 要る |
| 3129 TCP | 3proxy の TLS 口(apps/3proxy/) | 外から使うなら要る |
| 6443 TCP | Kubernetes の API(ks.doany.io:6443。recovery/README.md) |
要る(認証つき) |
Talos の API(50000)は LAN からしか届かない(recovery/README.md)。
AdGuard Home は問い合わせ元を絞っておらず(apps/adguardhome/config.yaml の allowed_clients: [])、DMZ で 53 番も外に出ている。
意図してそうしている(2026-10-07 に確認)。オープンリゾルバとして DNS の増幅攻撃の踏み台に使われうることは承知の上。
閉じるときは、ルーターで 53 番の受信を止めるか、allowed_clients に家の LAN・Pod・NetBird の範囲だけを書く。
「IPv6ホスト公開設定」の既定を「遮断」にし、ノード main だけをエントリで公開している(2026-10-07。それまでは既定が「公開」で、
LAN の全端末に外から IPv6 で直接届いていた)。
- エントリは MAC アドレスで指す(bond0 の
e6:2c:1b:1a:a0:39。talosctl -n 10.0.0.2 get links bond0で見る。ルーターの「接続端末 情報画面」にも同じ値が出る)。IPv6 アドレスで指すと、RA のプレフィックスが変わったときに外れる - この MAC はノードの設定で固定している(
talos/patches/cluster.yamlのBondConfigのhardwareAddr)。固定していなかった頃は 再起動で3a:43:95:a9:3e:b1に変わってエントリが外れた。NIC を替えても Z440 に移しても、この値は変わらない - 公開する AAAA は静的な
::2。 cloudflare-ddns のlocal.iface.stable:bond0は一時アドレス以外から選ぶので、SLAAC のアドレスがあると そちらを書いてしまう。bond0はautoconf=0(talos/patches/cluster.yaml)で SLAAC を付けない - 公開の中身は DMZ と同じ(IPv6 すべて・ポート any)。ノードで受けているものは IPv6 でも全部外に出る
fj/nb/m/ks/lkなどの AAAA はノード(240f:6d:842b:1::2)を指すので、このエントリを消すと IPv6 の利用者から直接つなぐアプリが見えなくなる- 確かめ方: 別の回線の IPv6 から名前で開く(アドレス直打ちは SNI が無く Gateway が切る)。J:COM 側の PC から
curl -6 -so /dev/null -w "%{http_code} %{remote_ip}\n" https://fj.doany.io/で200 240f:6d:842b:1::2 - ノードの設定で bond0 の MAC を変えたら、エントリも直す
有効にしておくこと。 家の中の端末も、LiveKit や NetBird が STUN で調べた外の IP に向けて送る。
無効だと家の中からだけ通話がつながらない(apps/matrix/README.md「ルーターの転送」)。
Web も、AdGuard を使う端末(端末側で指定したもの・NetBird の端末)は split-horizon で 10.0.0.2 を引くのでヘアピンに頼らないが、ルーターの DNS のままの端末は外の IP を引くので、Web もヘアピン頼み。
- LAN を
10.0.0.0/24、ルーターを10.0.0.1にする。DHCP の範囲は10.0.0.10から(ノードの.2に被らないこと) - ノードを
10.0.0.2にする - DMZ を
10.0.0.2に向ける - ヘアピン NAT を有効にする
- IPv6 ホスト公開の既定を「遮断」にし、ノードの MAC だけをエントリで公開する(上の「IPv6 はノードだけを公開する」)
- 外から確かめる:
https://doany.io、Element の通話、NetBird の接続
10.10.0.0/24 は別の回線(J:COM)。分かっていること(2026-10-11):
| 機種 | HUMAX HGJ310V4(ケーブルモデム一体。Plume / OpenSync で管理される機種) |
| 設定 | Web の画面(http://10.10.0.1)は見るだけ。IP の予約やポート転送は J:COM のアプリから(「設定 → ネットワーク → IP 予約」で端末を選び、その中で転送を足す)。静的ルートの設定は無い |
| IP | 固定 IP の契約(IPv4 61.21.173.41、IPv6 プレフィックス 2405:1201:5201:3a00::/64)。ルーターの画面の「WAN タイプ: 動的 IP」は契約に関係なくこう出る |
| IPv6 | 外からの接続を何も止めない。 au 側の main から、この LAN の PC の IPv6 に TCP でつながった。守っているのは各機器のファイアウォールだけ |
| Guard | アプリの「Remote Access Protection」は無効にしておく(有効だと、転送したポートも許可するまで止まる) |
アプリで 10.10.0.2(OD00)を予約し、TCP 80 / 443 をそこへ転送している。 main が落ちたときの入口の
mado(md.doany.io)のため。同じ日に MeshCentral(mc.doany.io)を試して外し、mado に替えた。