如何配置局域网工作站使用服务器端dnsmasq解析OpenShift本地路由域名
我来一步步帮你搞定这个问题,刚好之前折腾OpenShift本地路由的时候也碰到过类似需求,分两部分给你说清楚:
A) 把服务器上的dnsmasq暴露给局域网
dnsmasq默认只监听本地回环地址(127.0.0.1),所以得先调整配置让它能响应局域网的DNS请求:
编辑dnsmasq的主配置文件(一般是
/etc/dnsmasq.conf),找到listen-address这一行,去掉注释后加上服务器的局域网IP,比如:listen-address=127.0.0.1,192.168.1.100(把
192.168.1.100换成你服务器实际的LAN IP,用ip addr可以查看)为了更安全,指定dnsmasq只在局域网网卡上监听,找到
interface配置,加上你的网卡名(比如eth0、ens33,同样用ip link查看):interface=eth0开放防火墙的DNS端口,DNS同时使用TCP和UDP的53端口:
- 如果是RedHat/CentOS这类用firewalld的系统:
firewall-cmd --add-service=dns --permanent firewall-cmd --reload - 如果是Ubuntu/Debian这类用ufw的系统:
ufw allow 53/tcp ufw allow 53/udp ufw reload
- 如果是RedHat/CentOS这类用firewalld的系统:
重启dnsmasq服务让配置生效:
systemctl restart dnsmasq验证配置是否成功,查看dnsmasq的监听状态:
ss -tulpn | grep dnsmasq输出里如果能看到类似
udp LISTEN 0 511 192.168.1.100:53的内容,就说明dnsmasq已经在局域网IP上监听了。
B) 配置工作站使用这个DNS解析OpenShift路由域名
这里有两种方案,你可以根据需求选:一种是全局所有DNS请求都走服务器的dnsmasq,另一种是只针对OpenShift的子域名(比如*.apps.my-cluster.local)用这个DNS,后者更推荐,不会影响其他域名的正常解析。
方案1:全局使用服务器DNS(简单直接)
适合整个局域网都需要解析OpenShift路由的场景:
Linux工作站:
编辑/etc/resolv.conf,替换原有的nameserver为服务器的LAN IP:nameserver 192.168.1.100注意如果是使用
systemd-resolved的系统(比如Ubuntu 18.04+),建议通过netplan配置持久化DNS:
编辑netplan配置文件(比如/etc/netplan/00-installer-config.yaml,文件名可能不同):network: ethernets: eth0: addresses: [192.168.1.101/24] gateway4: 192.168.1.1 nameservers: addresses: [192.168.1.100] version: 2执行
sudo netplan apply生效。Windows工作站:
- 打开「设置」→「网络和Internet」→「以太网」(或当前WiFi连接)
- 点击「更改适配器选项」,右键当前连接选择「属性」
- 找到「Internet协议版本4 (TCP/IPv4)」,双击打开
- 选择「使用下面的DNS服务器地址」,填入服务器的LAN IP,点击确定。
macOS工作站:
- 打开「系统设置」→「网络」,选中当前局域网连接
- 点击「高级」→「DNS」,点击「+」号添加服务器的LAN IP,拖到列表最顶部。
方案2:仅针对OpenShift域名使用服务器DNS(更灵活)
只让*.apps.my-cluster.local这类OpenShift路由域名走服务器的dnsmasq,其他域名继续用原来的DNS,不影响日常上网:
Linux工作站(systemd-resolved):
- 创建自定义配置目录和文件:
sudo mkdir -p /etc/systemd/resolved.conf.d/ sudo nano /etc/systemd/resolved.conf.d/openshift-dns.conf - 写入以下内容:
([Resolve] Domains=~apps.my-cluster.local DNS=192.168.1.100~表示仅对这个域使用指定的DNS服务器) - 重启
systemd-resolved服务:sudo systemctl restart systemd-resolved - 验证效果:
如果返回服务器的IP,说明配置成功。resolvectl query console-openshift-console.apps.my-cluster.local
- 创建自定义配置目录和文件:
Windows工作站:
- 打开「控制面板」→「管理工具」→「DNS」
- 右键你的计算机名,选择「新建条件转发器」
- 输入域
apps.my-cluster.local,添加服务器的LAN IP,点击确定即可。
macOS工作站:
通过系统自带的resolver配置实现条件解析:- 创建resolver目录(如果不存在):
sudo mkdir -p /etc/resolver - 创建对应域名的配置文件:
sudo nano /etc/resolver/apps.my-cluster.local - 写入:
nameserver 192.168.1.100
保存退出后,macOS会自动识别这个配置,解析该域下的域名时会自动请求服务器的dnsmasq。
- 创建resolver目录(如果不存在):
备注:内容来源于stack exchange,提问作者the_endian

