CENTOS 8-无法从服务绑定到 UDP 端口

CENTOS 8-无法从服务绑定到 UDP 端口

我在 CentOS 8 桌面上全新安装了 powerdns。在端口 53 上运行服务时,一切运行正常。更改端口 5300 时出错。我收到此错误消息:

visitel-vpn1.localdomain systemd[1]: Started PowerDNS Authoritative Server.
Loading '/usr/lib64/pdns/libgmysqlbackend.so'
This is a standalone pdns
Listening on controlsocket in '/var/run/pdns/pdns.controlsocket'
Unable to bind UDP socket to '0.0.0.0:5300': Permission denied
Fatal error: Unable to bind to UDP socket

这是我的服务文件。我将服务文件精简到最低限度,并将 --local-port 添加到命令行参数。

[Unit]
Description=PowerDNS Authoritative Server

[Service]
ExecStart=/usr/sbin/pdns_server --guardian=no --daemon=no --disable-syslog --log-timestamp=no --write-pid=no --local-port=5300
User=root
Group=root
RuntimeDirectory=pdns

[Install]
WantedBy=multi-user.target

我尝试过的事情:

  • 使用默认设置默认端口运行 PowerDNS。有效
  • 在端口 5300 的控制台中以 root 身份运行。有效
  • Ubuntu 20 Server 上的 PowerDNS 在端口 5300 上作为服务运行。有效
  • 禁用防火墙。失败
  • 使用端口 0.0.0.0:5300 或 127.0.0.0:5300 或 [localip]:5300 运行 powerDNS 服务。失败
  • 在 53 以外的任何端口上运行 PowerDNS,例如 25、1000、1024、54。失败

CentOS 8 桌面版中有一些安全设置限制服务绑定到 UDP 端口。我可以运行 Ubuntu,但我想知道为什么它在 CentOS 上失败了。有什么想法吗?谢谢。

答案1

SELinux 仅允许 DNS 服务器绑定到标记为 的端口dns_port_t,当前这些端口包括:

# semanage port -l | grep -w 53
dns_port_t                     tcp      53, 853
dns_port_t                     udp      53, 853

您可以添加自己的自定义端口来允许此访问。

# semanage port -a -t dns_port_t -p udp 5300
# semanage port -l | grep -w 53
dns_port_t                     tcp      53, 853
dns_port_t                     udp      5300, 53, 853

(您可能还需要允许 TCP,并在 PowerDNS 中对其进行配置。)

相关内容