You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过DNSMasq将公网域名本地DNS欺骗指向本地NGINX

DNSMasq 配置指南:让局域网机器指向本地NGINX

嘿,看起来你已经搞定了最核心的域名映射部分,而且用dig验证也确认规则生效了,那咱们就把dnsmasq.conf里的关键配置捋清楚,确保整个DNS欺骗流程稳稳妥妥跑起来:

1. 确认自定义hosts文件被正确加载

首先得确保dnsmasq.conf里已经配置了读取你那套spoof.hosts的规则,不然哪天修改配置后可能出现加载失效的情况:

# 方式一:加载/etc/dnsmasq.d/目录下所有后缀为.hosts的文件
conf-dir=/etc/dnsmasq.d/,*.hosts

# 方式二:直接指定单个文件
# addn-hosts=/etc/dnsmasq.d/spoof.hosts

你现在验证生效了,说明这条配置应该已经没问题,但确认一下总是好的。

2. 配置上游DNS,别让其他域名解析挂了

咱们只需要欺骗myserver.com相关域名,其他域名还是得正常解析对吧?所以在dnsmasq.conf里加上上游DNS服务器:

# 推荐用稳定的公共DNS,比如Cloudflare或者Google
server=1.1.1.1
server=8.8.8.8

这样局域网机器访问其他网站时,DNSMasq会自动把请求转发到上游DNS拿正确结果。

3. 让DNSMasq监听局域网接口

得确保DNSMasq不是只监听本地回环地址,不然局域网里的其他机器连不上你的DNS服务:

# 监听你的本地机器IP(192.168.1.142)和回环地址
listen-address=127.0.0.1,192.168.1.142

# 如果你的机器有多网卡,也可以直接监听所有接口:
# listen-address=0.0.0.0

要是不需要IPv6解析,还可以加上no-ipv6来禁用,避免不必要的干扰。

4. 把欺骗域名“锁”在本地(可选但推荐)

为了防止上游DNS覆盖你的自定义解析结果,可以加一条配置,让DNSMasq对myserver.com域名只使用本地解析,不转发到上游:

local=/myserver.com/

这样就彻底杜绝了解析冲突的可能性,保证局域网机器访问这个域名时,只会拿到你设置的本地IP。

5. 重启服务+最终验证

改完配置后,重启DNSMasq让设置生效:

sudo systemctl restart dnsmasq

然后去局域网其他机器上做两个测试:

  • 打开浏览器访问www.myserver.com,应该直接跳转到你本地NGINX的页面
  • 访问其他正常域名(比如google.com),确保解析和访问都没问题

另外提一句:如果你想让局域网机器自动获取DNS服务器地址,可以把DNSMasq同时当成DHCP服务器用,在dnsmasq.conf里加这段配置:

# DHCP地址池示例,分配192.168.1.100到200的IP,租期24小时
dhcp-range=192.168.1.100,192.168.1.200,255.255.255.0,24h
# 告诉DHCP客户端用你的机器当DNS服务器
dhcp-option=option:dns-server,192.168.1.142

还有,你有公网的SSL证书,记得把证书文件复制到本地NGINX的配置目录里,在NGINX的server块里配置HTTPS,这样局域网机器用HTTPS访问www.myserver.com时才不会报错。

要是还有具体的配置疑问,比如NGINX的SSL配置细节,或者DNSMasq的其他参数调整,随时说~

内容的提问来源于stack exchange,提问作者PhilBot

火山引擎 最新活动