我尝试使用 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 和端口