File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1515 # リゾルバだった。
1616 services . blocky = {
1717 enable = true ;
18- # ループバックとこの機械自身のアドレスだけ。podman のブリッジが aardvark-dns の
19- # ために :53 を要る。AdGuard が踏んだのと同じ衝突。
18+ # ループバックとこの機械自身のアドレスだけ。0.0.0.0 にはできない: podman の
19+ # ブリッジが aardvark-dns のために :53 を要る。AdGuard が踏んだのと同じ衝突。
20+ #
21+ # tailnet アドレスも足してある。tailnet の DNS 設定からこの解決器を指すため
22+ # で、これが無いと外出先の端末は家の blocky を引けない (広告遮断も
23+ # gapul.net の内向き解決も効かない)。
2024 settings = import ../lib/blocky-settings.nix {
21- listen = "127.0.0.1:53,192.168.116.98:53" ;
25+ listen = "127.0.0.1:53,192.168.116.98:53,100.127.129.31:53 " ;
2226 } ;
2327 } ;
2428
29+ # tailscale0 は blocky より後に上がる。tailnet アドレスを名指しで待ち受ける以上、
30+ # 起動順で「まだ存在しないアドレスに bind できない」で落ちうるので、非ローカル
31+ # アドレスへの bind を許す。After= で順序を付ける手もあるが、tailscaled が
32+ # 再接続でアドレスを付け直す局面まではカバーできない。
33+ boot . kernel . sysctl . "net.ipv4.ip_nonlocal_bind" = 1 ;
34+
2535 # 53 番は Blocky のもの。このホストでは他の何にも渡さない。
2636 services . resolved . enable = false ;
2737
Original file line number Diff line number Diff line change 2020let
2121 # このホストの LAN アドレス。ルーターの DHCP 予約で固定してある。
2222 lanAddress = "192.168.116.100" ;
23+ # tailnet アドレス。tailnet の DNS 設定はこちらを指す (外出先の端末は LAN の
24+ # アドレスに届かない)。Tailscale のアドレスは機械ごとに固定。
25+ tailnetAddress = "100.105.135.49" ;
2326
2427 settings = import ../lib/blocky-settings.nix {
25- listen = "127.0.0.1:53,${ lanAddress } :53" ;
28+ listen = "127.0.0.1:53,${ lanAddress } :53, ${ tailnetAddress } :53 " ;
2629 } ;
2730
2831 # blocky は YAML を読む。JSON は YAML の部分集合なので、そのまま渡せる。
5154 serviceConfig = {
5255 ProgramArguments = [ "${ launch } " ] ;
5356 RunAtLoad = true ;
57+ # 起動時に tailnet のアドレスがまだ付いていないと bind に失敗して終了する。
58+ # launchd が 30 秒おきに起こし直し、Tailscale が上がった時点で成功する。
59+ # Linux 側の ip_nonlocal_bind に当たるものが macOS には無いので、順序ではなく
60+ # 再試行で吸収する。
5461 KeepAlive = true ;
55- # 上流が落ちている間に再起動を繰り返しても意味がないので少し置く。
5662 ThrottleInterval = 30 ;
5763 StandardOutPath = "/var/log/blocky.log" ;
5864 StandardErrorPath = "/var/log/blocky.log" ;
You can’t perform that action at this time.
0 commit comments