Linux 网络命名空间的 Dnsmasq 问题

Linux 网络命名空间的 Dnsmasq 问题

我尝试使用 dnsmasq 作为虚拟机的名称服务器。在所有vm上,/etc/resolv.conf表示该vm需要访问192.168.15.3解析域名。但是,持有 192.168.15.3 的接口位于主机上的网络命名空间内。

我可以ping 192.168.15.3从虚拟机和主机(在网络命名空间内)。在网络命名空间之外lsof -i:53显示 dnsmasq 正在侦听端口 53。如果我lsof -i:53在网络命名空间内运行,则什么也没有。

如果我将内容更改为/etc/resolv.conf使用主机公共命名空间中任何接口的 IP 地址,则名称解析效果良好。看来 dnsmasq 过程没有出错。

我在停止 dnsmasq 后尝试过ip netns exec <THE NAMESPACE> systemctl start dnsmasq,但只看到 dnsmasq 在公共命名空间内打开其端口。

如果我不想resolv.conf在虚拟机内部修改,只想在主机上配置一些东西,该怎么办?如何使端口 53 在网络命名空间内可访问?

答案1

http://man7.org/linux/man-pages/man8/ip-netns.8.html

网络命名空间在逻辑上是网络堆栈的另一个副本,具有自己的路由、防火墙规则和网络设备。

所以你需要这样的东西: iptables 重定向 DNS 查找 IP 和端口

相关内容