我想在我的 Cent Os 远程服务器上打开一个端口。我在服务器上部署了一个使用端口 7500 的服务器应用程序,当我尝试从客户端与其建立连接时,客户端无法连接,然后我将端口更改为 8000,客户端便可以连接到它,端口 8000 允许从外部访问,但所有其他端口都受到限制,我如何在服务器上打开端口 7500 来访问它?
当我使用状态检查防火墙状态时,systemctl status firewalld
它没有运行;当我使用状态 iptables.service 检查 iptables 状态时,
iptables.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
然后通过使用除了 8000 之外的其他端口的访问受到限制,因为firewalld 没有运行并且 iptables 处于非活动状态。我可以在哪里检查服务器上允许从外部访问的端口。
答案1
您使用的是 Centos 7。它使用默认的 Firewalld 来管理防火墙规则。您可以执行命令“systemctl status Firewalld”来检查 Firewalld 是否正在运行。
执行“firewall-cmd --list-all”列出当前firewalld配置
如果firewalld正在运行,请使用以下命令打开7500 tcp:
- 获取区域名称
firewall-cmd --get-active-zone
- 在当前配置中打开端口
firewall-cmd --zone=YOURZONE --add-port=7500/tcp
- 在当前配置中打开端口,firewalld重启后生效
firewall-cmd --permanent --zone=YOURZONE --add-port=7500/tcp
答案2
您应该检查 SELinux 是否已启用。它很可能阻塞了端口。
您应该看到 getenforce 在命令行上返回的内容。如果它正在运行,则输出将是“enforced”
您可以通过运行“setenforce 0”暂时将 SELinux 置于“宽容”模式。
如果您的服务在执行此操作后运行,则意味着 SELinux 正在阻止它。
您可以在 audit.log 文件中查看它阻止您的服务的原因。
虽然有人可能会说禁用 SELinux,但我更愿意说找出服务被阻止的原因,使用 audit2why 等工具收集详细信息,然后更改 SELinux 策略以支持该服务。关闭 SELinux 并不是正确的解决方案。
端口 8000 对您有用的原因是,端口 8000 在 SELinux 策略中默认是允许的,对于端口 7000 或 7500,您需要调整策略并明确将它们标记为允许。
看看你能找到什么。