首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制本地DNS查询的源IP到本地服务器?

控制本地DNS查询的源IP到本地服务器?
EN

Unix & Linux用户
提问于 2016-11-06 18:09:19
回答 2查看 1.3K关注 0票数 1

我有一个本地DNS服务器运行在我的Linux路由器上。我将它配置为只允许来自局域网的请求(192.168.1.0/24)。我还希望服务器能够查询自己的DNS。为此,我也允许使用127.0.0.1作为源。

问题是,该框对自己进行的每个查询都将其源IP设置为我的外部IP。我用tcpdump确认了这一点;当服务器在127.0.0.1查询自己时,一个数据包到达目标IP 127.0.0.1的接口lo上,但源IP是我的ISP的IP。

使用dig -b没有帮助。同样的效果也会发生。

这意味着,除非我显式地将ISP的IP添加到允许的IP中,否则DNS查找将无法在本地工作。因为我的IP可以是动态的,这实际上意味着向DNS服务器添加整个IP。这显然不是一个问题,在我的局域网上的机器,因为他们正在正确地设置他们的源IP。这个问题是针对服务器上的本地查询本身的。

我希望能够告诉服务器使用一个显式的源IP地址(而不仅仅是一个源接口)来对自己进行查询。这能办到吗?

EN

回答 2

Unix & Linux用户

发布于 2016-11-06 21:25:11

若要设置服务器主接口以外的源查询,请在绑定选项中使用query-source

设置是这样的,只有由服务器/守护进程发起的查询才会与该IP一起运行。

请注意,如果这是一个内部/RFC 1918私人地址,您将不得不NAT它时,去外面。

根据我的服务器,在/etc/bind/named.conf.options中:

代码语言:javascript
复制
options {
    query-source address X.X.X.X;
}

其中X.x是您的IP地址。

另一个选项是使用动态DNS服务,在那里注册您的IP地址,并根据DNS名称执行规则。当然,当IP地址发生变化时,必须将脚本作为DHCP挂钩重新应用规则会带来很小的不便。

票数 0
EN

Unix & Linux用户

发布于 2016-12-03 17:12:43

@roaima的评论把我引向了正确的方向。

我的iptables POSTROUTING规则如下所示:

-t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to <my public IP>

只是在上面添加了一条规则来排除路由器自己的IP,修复了所有内容:

-t nat -I POSTROUTING 1 -s 192.168.1.1 -j ACCEPT

@roaima,如果你想发帖作为回答,我会给你一张上等票。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/321472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档