首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ubuntu:理解iptables规则以允许域名查找

Ubuntu:理解iptables规则以允许域名查找
EN

Server Fault用户
提问于 2019-01-08 09:44:10
回答 2查看 4.1K关注 0票数 2

我目前正在我的web服务器上设置iptables规则(Ubuntu18.04)。除了适用于DN查找查询的规则之外,几乎所有东西都能像我预期的那样工作。以下是我的理解:

  • DN查找请求被发送到DN服务器的端口53 (默认情况下)
  • DN查找请求可以同时发生在TCP和UDP协议上。

因此,我制定了以下规则:

代码语言:javascript
复制
iptables -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT

换句话说,接受来自端口53的任何传入连接(假设它们是我的服务器将发送到端口53的DN查询的响应)。然而,这是行不通的。nslookup ubuntuforums.org命令超时。下面是我没有得到的部分:如果我在下面添加iptable规则,那么它就能工作了

代码语言:javascript
复制
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT

如果我正确地读取了上面的内容,就意味着我正在接受发送到服务器端口53的传入连接。我不明白为什么要这么做。我使用tcpdump来查看当我运行nslookup ubuntuforums.org时发生了什么,并且看不到发送到机器端口53的任何连接。很明显我错过了什么但我不知道.有谁有主意吗?提前谢谢。

在ubuntuforums.org上的原始文章:https://ubuntuforums.org/showthread.php?t=2409812

EN

回答 2

Server Fault用户

回答已采纳

发布于 2019-01-10 06:16:21

我假设您的服务器至少有两个接口:本地回送和以太网接口。

在应用规则的方式上,它们适用于两个接口。

当您进行DNS查询时,很长一段时间内,它直接通过以太网接口(或用于到达DNS服务器的路由所使用的任何东西)。

但这只是通过OUTPUT链,而不是INPUT (和其他几个与此无关的)。

最近,发行版开始发布本地DNS缓存系统(dnsmasqsystemd-resolved、.)。

使用Ubuntu18.04,您可以获得最新的systemd功能。因此,我怀疑systemd-resolved使用环回接口来提供DNS缓存。当您使用nslookup时,它不是直接访问/etc/resolv.conf中指定的服务器,而是先通过systemd-resolved

为了允许这样做,您需要添加防火墙规则,允许端口53上的输入通信量用于回送接口。

我的建议是使用iptables -I INPUT 1 -i lo -j ACCEPT将环回接口的所有通信量白名单。

票数 3
EN

Server Fault用户

发布于 2019-01-08 10:04:50

--dport --sport标志分别为Source PortDestination Port

源端口是连接开始的端口,对端口53的请求可以从端口55231启动,例如,如果您的服务器执行DNS查询,它的目标端口将是端口53,但源端口不是。根据您的示例,您说它不是工作--正是因为这个原因,请求源端口不是53,所以iptables完成了它的工作。

相反,目的地端口将过滤目的地端口的数据包,因此发送到端口53的请求将被接受,并且不会从哪个端口或主机(根据您的示例)进行测量。

总之,您现在允许对服务器的端口53进行查询,您在运行nslookup时看不到与端口53的任何连接,这可能是因为查询被发送到/etc/resolv.conf文件中配置的远程服务器。

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

https://serverfault.com/questions/948050

复制
相关文章

相似问题

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