はじめに
docker-compose やらでドーンと実行して nginx にリバースプロキシ設定すればパスワードマネージャーとしてはちゃんと動作するんだけど、管理画面の Diagnostics では Internet access や DNS に NG が出てしまっていた。
こういうの気になって仕方が無いタイプなので、暇さえあればググって調べてなんだかんだとやっていたんだけどやっと解決した。
解決に至る経緯
Vaultwarden のコンテナに入ったら curl があったんでこれでインターネット上の何かに適当にアクセスした。
するとタイムアウト。でも、内部ネットワークのページなら表示出来ていた。
LAN からお外に出られていないだけでは
と思ったんで相応の対処を思いつきでやってみた。
DNS に設定追加
ローカルに DNS サーバーが有る場合、172.16.0.0/12
からのクエリーを許可してあげればいいだけ。
allow-query { 192.168.1.0/24; 172.16.0.0/12; };
外部 DNS を参照している場合は次の nftables の設定で解決するかもしれない。
nftables にルールを追加
以下ハイライトした 2 つの行を追加した。
table ip filter {
chain input {
type filter hook input priority filter; policy drop;
iif "lo" counter accept
...
...
}
chain forward {
type filter hook forward priority filter; policy drop;
ct state established,related accept
...
...
ip saddr 172.16.0.0/12 counter accept
}
chain output {
type filter hook output priority filter; policy accept;
}
}
table ip nat {
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
...
...
ip saddr 172.16.0.0/12 oif "ネットワークインターフェース名" masquerade
}
}
docker のもつ IP アドレスを NAT してあげて外に出られるようにしたというそのまんまな感じで。
こうしたあと、nftables を再起動し、そのあとに docker を再起動で問題は解決した。
おわりに
docker ってこういう所まで自動でやってくれるもんかと思っていたが如何に。
しかしまぁ、これでやっと胸のつかえが下りた。
コメント