【发布时间】:2016-10-13 03:46:32
【问题描述】:
我在 Redhat 计算机上运行 Django 服务器。我可以通过 ssh 连接远程连接到计算机,所以我假设没有防火墙问题。但是,当我执行以下命令时(据说应该使服务器公开可用)
python3 manage.py runserver 0.0.0.0:8080
无法从任何其他计算机访问服务器。在本地(从 redhat 机器本身)我可以看到服务器正在运行。
我是 redhat 的新手,所以如果我需要提供任何其他信息,请告诉我。
到目前为止,我发现我可以使用localtunnel 使我的服务器可访问,但是,由于它更改了 url,我更喜欢以其他方式解决问题。
更新:问题与 Django 无关。令人困惑的是服务器运行没有问题,并且没有特定原因变得无法访问。
无论如何,我需要添加一些配置(在here 中找到)以使端口:8080 可达。
【问题讨论】:
-
尝试
netstat -tanp | grep LISTEN查看端口是否正在监听网络,并尝试iptables -L确保没有防火墙规则禁止它。 -
尝试了第一个命令,似乎端口正在监听。我不确定如何解释第二个命令的输出,所以我为您提供输出日志:dropbox.com/s/zoul6y8dag04h74/iptables.txt?dl=0
-
嗯,相当复杂的规则,最新的RedHat似乎使用firewalld而不是iptable,所以我不能说太多。底部有一条规则
dpt:ssh ctstate NEW允许新的 ssh 连接,顶部的ACCEPT all -- anywhere anywhere可能是lo接口,所以我很确定它阻止了到您的 Django 端口的传入连接。你能运行iptables -vL吗,它会清除ACCEPT all规则,因为它会显示界面。不幸的是,我不确定在 firewalld 上打开端口的最佳方法是什么。 -
firewall-cmd --zone=public --add-port=8080/tcp我认为是这样的,但请谨慎对待。我不是 RH 系统管理员。
标签: redhat