![使用 dnsmasq.conf 阻止内部 IP 地址](https://linux22.com/image/1586838/%E4%BD%BF%E7%94%A8%20dnsmasq.conf%20%E9%98%BB%E6%AD%A2%E5%86%85%E9%83%A8%20IP%20%E5%9C%B0%E5%9D%80.png)
可以在 conf 文件中执行如下操作来阻止广域网站点:
address=/verystrangesite.com/127.0.0.1
因此,如果用户尝试在我的客户局域网上进行一些不太有趣的操作,他就会收到 ERR_CONNECTION_REFUSED 错误。
不幸的是,这不适用于内部站点(路由器、网关、hwfw、ip cam),至少如果它们只能通过 IP 访问的话(不知道如果我有 my-ip.com 而不是 172.16.1.54 之类的东西,它是否会起作用)。我尝试的结果如下:
address=/172.16.1.2/127.0.0.1
那么,您知道实现这一点的正确语法吗?
先感谢您
托拜厄斯
答案1
没有正确的语法来实现这一点。
dnsmasq 只是一个 DNS 服务器——它才不是位于所有网络流量的中间,它仅响应 DNS 查询并将域名转换为 IP 地址。您的 dnsmasq 示例没有堵塞这些网站只是欺骗 DNS 查询结果(并且只有当客户端使用您的 DNS 时才如此)。
尝试通过 IP 地址直接访问网站的客户端不使用DNS 首先解析它——可以说,该地址已经被“预先解析”。因此,不dnsmasq 配置可能会影响此类连接。
相反,要通过 IP 地址阻止任意主机,请在路由器的防火墙(Linux iptables/nft/ferm,BSD pf)。要生成“连接被拒绝”错误消息,请添加“拒绝”连接的防火墙规则:
iptables -I FORWARD [...] -d 172.16.1.2 -p tcp -j REJECT --reject-with tcp-reset
iptables -I FORWARD [...] -d 172.16.1.2 ! -p tcp -j REJECT --reject-with icmp-port-unreachable