この質問の最も正確な場所であるかどうかはわかりません。そうでない場合は、お知らせください。
私の設定は次のとおりです。 slirp4netnsを使用して、根のないPodmanコンテナでピホールを実行します。
pihole サービスはコンテナ内のポート 53 で実行されます。コンテナはホストのポート 3953 をポート 53 にマップします。私はnftablesルールを使用し、これらすべてがうまく機能するようにしました。
これは機能します(piholeはHostA-10.10.10.5で実行されています)。
HostB --DNS (UDP/TCP:10.10.10.5:3953)--> HostA:3953 --> Container = valid response
HostA --DNS (UDP/TCP:10.10.10.5:3953)--> HostA:3953 --> Container = valid response
HostA --DNS (TCP:127.0.0.1:3953)--> HostA:3953 --> Container = valid response
HostA --DNS (UDP:127.0.0.1:3953)--> HostA:3953 --> Container = timed out
Container -- DNS (UDP:127.0.0.1:53) --> valid response.
コンテナを実行してtcpdumpを実行すると、すべての要求にUDP要求がありますが、HostAから127.0.0.1への要求が応答を受け取らないことがわかります。これは私のtcpdumpです。
#Internal To Container: success
01:04:18.425902 lo In IP 127.0.0.1.60839 > 127.0.0.1.53: 57697 [1au] A? pihole.home. (52)
01:04:18.426008 lo In IP 127.0.0.1.53 > 127.0.0.1.60839: 57697* 1/0/1 A 10.10.10.5 (52)
#External to Host: (from HostB): success
01:04:35.044972 tap0 In IP 10.10.10.6.55428 > 10.0.2.100.53: 63205+ [1au] A? pihole.home. (52)
01:04:35.045154 tap0 Out IP 10.0.2.100.53 > 10.10.10.6.55428: 63205* 1/0/1 A 10.10.10.5 (56)
#Host loopback (hostA 127.0.0.1): Failed.
01:04:23.666449 tap0 In IP 127.0.0.1.34179 > 10.0.2.100.53: 27771+ [1au] A? pihole.home. (52)
01:04:28.689778 tap0 In IP 127.0.0.1.50000 > 10.0.2.100.53: 27771+ [1au] A? pihole.home. (52)
そして、パイホールに丸太が見えず、果たして通過できるのか疑問があります。
私が考えるのに興味深いのは、HostAループバックのインターフェースはtap0ですが、IPは127.0.0.1です。パスがちょっと変だと思いますか?
これはコンテナのインタフェースです(出力:)ip -br a
。
lo UNKNOWN 127.0.0.1/8
tap0 UNKNOWN 10.0.2.100/24
私の「ローカル」ルーティングテーブルは次のとおりです。 ( # ip ro sh table local
):
local 10.0.2.100 dev tap0 proto kernel scope host src 10.0.2.100
broadcast 10.0.2.255 dev tap0 proto kernel scope link src 10.0.2.100
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
これは私の「基本」ルーティングテーブルです:(#ip ro sh table main
)
default via 10.0.2.2 dev tap0
10.0.2.0/24 dev tap0 proto kernel scope link src 10.0.2.100
私は要求が127.0.0.1に入ってきますが、ループバックではなくTap0インターフェースから入ってくるので、問題が発生していないかどうか疑問に思います。
コンテナのルーティングテーブルを使用してこの問題を解決できますか?それともこの問題を解決する他の方法はありますか?