systemd-resolve 在網路命名空間內錯誤解析

systemd-resolve 在網路命名空間內錯誤解析

我有一台 Ubuntu 機器,其網路命名空間 (ns1) 透過 veth 連接到主機網路命名空間。我在 iptables 中創建了一個 MASQUERADE 規則來訪問互聯網,並且可以從網絡命名空間 ping 8.8.8.8。

當我dig google.com從主機上執行此操作時,它可以工作,並且我在主介面中看到:

08:03:02.376478 IP 10.0.10.40.51566 > 10.0.10.2.53: 48449+ [1au] A? google.com. (39)
08:03:02.378335 IP 10.0.10.2.53 > 10.0.10.40.51566: 48449 1/0/1 A 216.58.204.110 (55)

但是,當我在網路命名空間中執行 dig 時,sudo ip netns ns1 dig google.com它不起作用,這是我在主機主介面中看到的:

08:03:09.033958 IP 10.0.10.40.50888 > 10.0.10.2.53: 32798+ [1au] A? ip-10-0-10-40.eu-west-3.compute.internal. (69)
08:03:09.034152 IP 10.0.10.40.36297 > 10.0.10.2.53: 43961+ [1au] AAAA? ip-10-0-10-40.eu-west-3.compute.internal. (69)
08:03:09.034460 IP 10.0.10.2.53 > 10.0.10.40.50888: 32798 NXDomain 0/1/1 (144)
08:03:09.034460 IP 10.0.10.2.53 > 10.0.10.40.36297: 43961 NXDomain 0/1/1 (144)
08:03:09.034559 IP 10.0.10.40.50888 > 10.0.10.2.53: 32798+ A? ip-10-0-10-40.eu-west-3.compute.internal. (58)
08:03:09.034639 IP 10.0.10.40.36297 > 10.0.10.2.53: 43961+ AAAA? ip-10-0-10-40.eu-west-3.compute.internal. (58)
08:03:09.034837 IP 10.0.10.2.53 > 10.0.10.40.50888: 32798 NXDomain 0/1/0 (133)
08:03:09.034906 IP 10.0.10.2.53 > 10.0.10.40.36297: 43961 NXDomain 0/1/0 (133)

為什麼來自網路命名空間的請求不是嘗試解析主機名稱google.com而是主機名稱ip-10-0-10-40.eu-west-3.compute.internal?後者顯然是我的 Ubuntu 機器的主機名

編輯

如果我停止 systemd-resolve 並添加上游名稱伺服器,它就可以工作。因此,肯定是systemd-resolve的問題

答案1

systemd-resolve預設情況下,將重寫您的 DNS 以指向 127.0.0.53。在您建立的命名空間中無法存取它,因此 DNS 查找失敗。

嘗試使用dig google.com. @1.1.1.1它應該可以工作,無論systemd-resolve是否正在運行。

相關內容