我正在配置我的服务器的安全性。为了方便防火墙的管理,我安装了UFW。我在 UFW 中做了一些设置,并允许了一些端口。因此,当我启用它时,DNS 服务没有响应。
我尝试运行命令DIG www.domain.com.br
来测试 DNS,但没有成功。当 UFW 禁用时,此命令运行不会出现问题。我已经允许 53 端口(TCP 和 UDP),但 DNS 不起作用。
我的 UFW 设置:
Status: active
Logging: on (low)
Default: deny (incoming), deny (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
21/tcp ALLOW IN Anywhere
16/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
80 ALLOW IN Anywhere
53 ALLOW IN Anywhere
465 ALLOW IN Anywhere
25/tcp ALLOW IN Anywhere
22 ALLOW IN Anywhere
21/tcp (v6) ALLOW IN Anywhere (v6)
16/tcp (v6) ALLOW IN Anywhere (v6)
443/tcp (v6) ALLOW IN Anywhere (v6)
80 (v6) ALLOW IN Anywhere (v6)
53 (v6) ALLOW IN Anywhere (v6)
465 (v6) ALLOW IN Anywhere (v6)
25/tcp (v6) ALLOW IN Anywhere (v6)
22 (v6) ALLOW IN Anywhere (v6)
答案1
完整正确的语法应该是
sudo ufw allow out to any port 53
答案2
我解决了这个问题。我允许端口 53(DNS 服务端口)的传出。谢谢。
sudo ufw allow out 53
答案3
首先ufw allow dns
允许传入的 DNS 请求,这不是您想要的。
其次,您可以遵循其他答案中提到的所有命令(最简单ufw allow out 53
),但是订单事宜。因此,如果您有一个拒绝语句,在单独使用时也会拒绝 DNS 请求,把它放在最后!
因此,首先允许您的 DNS 服务器使用端口 53,然后可能会禁止/拒绝某些请求。
答案4
我自己一直在为另一个项目制定一些防火墙规则,但无法让@diegoklapper 的解决方案发挥作用。
即使我自己尝试更明确地复制sudo ufw allow dns
(即特定接口)也失败了:
sudo ufw allow in on eth0 from any to any port 53 proto tcp
直到我意识到我做错了什么(注意协议):
sudo ufw allow in on eth0 from any to any port 53 proto udp
注意:这更具体地适用于dnsmasq
您正在处理或转发 DNS 请求并且默认情况下已允许出站请求的情况。
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip
To Action From
-- ------ ----
53/udp on eth0 ALLOW IN Anywhere