混合ループバック/インターフェースUDP要求

混合ループバック/インターフェースUDP要求

この質問の最も正確な場所であるかどうかはわかりません。そうでない場合は、お知らせください。

私の設定は次のとおりです。 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インターフェースから入ってくるので、問題が発生していないかどうか疑問に思います。

コンテナのルーティングテーブルを使用してこの問題を解決できますか?それともこの問題を解決する他の方法はありますか?

関連情報