Phi*_*ldo 57 linux apache webserver centos
我在rackspace上启动了一个CentOS服务器并执行了yum install httpd'd.然后services httpd start.所以,只是准系统.
我可以通过ssh(22)远程访问其IP地址没问题,所以DNS或任何东西都没问题(我认为......),但是当我尝试连接端口80(通过浏览器或其他东西)时,我得到了拒绝连接.
但是,从localhost,我可以使用telnet(80),甚至可以使用lynx,并且可以毫无问题地使用它.从外面(我的房子,我的学校,当地的咖啡店等),telnet连接22,但不是80.
我用netstat -tulpn(< - 我不会撒谎,我不明白这-tulpn部分,但这就是互联网告诉我要做的......)并且看到
tcp 0 0 :::80 :::* LISTEN -
Run Code Online (Sandbox Code Playgroud)
因为我相信我应该.该httpd.conf说Listen 80.
我有services httpd restart很多次.
老实说,我不知道该怎么做.机架空间没有办法在传入的端口80请求上有防火墙.我觉得我失去了一些东西愚蠢的,但我现在已经启动了一个准系统服务器的两倍,并已做了最小,以获得此功能的思考我已经弄脏的东西与我的修修补补,但既不工作.
任何帮助是极大的赞赏!(对于冗长的帖子抱歉...)
编辑
我被要求发布输出iptables -L.所以这里是:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Run Code Online (Sandbox Code Playgroud)
ant*_*nie 108
如果还没有解决.你的iptables说:
州相关,已建立
这意味着它只允许传递已经建立的连接......这是由您建立的,而不是由远程机器建立的.然后,您可以在下一个规则中看到此例外情况:
state NEW tcp dpt:ssh
Run Code Online (Sandbox Code Playgroud)
这仅适用于ssh,因此您应该为http添加类似的规则/行,您可以这样做:
state NEW tcp dpt:80
Run Code Online (Sandbox Code Playgroud)
您可以这样做:
sudo iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
(在这种情况下,我选择在第四行添加新规则)
请记住,在编辑文件后,您应该像这样保存:
sudo /etc/init.d/iptables save
Run Code Online (Sandbox Code Playgroud)
Jos*_*osh 18
现在,CentOS 7默认使用firewalld.但所有答案都集中在iptables上.所以我想添加一个与firewalld相关的答案.
由于firewalld是iptables的"包装器",使用antonio-fornie的答案似乎仍然有效,但我无法"保存"这个新规则.因此,一旦重启防火墙,我就无法连接到我的apache服务器.幸运的是,使用firewalld命令进行等效更改实际上要简单得多.首先检查firewalld是否正在运行:
firewall-cmd --state
Run Code Online (Sandbox Code Playgroud)
如果它正在运行,响应将只是一行"运行".
要在公共区域上临时允许http(端口80)连接:
sudo firewall-cmd --zone=public --add-service=http
Run Code Online (Sandbox Code Playgroud)
以上不会被"保存",下次重新启动firewalld服务时,它将返回默认规则.您应该使用此临时规则进行测试,并确保它在继续之前解决您的连接问题.
要永久允许公共区域上的http连接:
sudo firewall-cmd --zone=public --permanent --add-service=http
Run Code Online (Sandbox Code Playgroud)
如果你在没有执行"临时"命令的情况下执行"永久"命令,则需要重新启动firewalld以获取新的默认规则(对于非CentOS系统,这可能会有所不同):
sudo systemctl restart firewalld.service
Run Code Online (Sandbox Code Playgroud)
如果这还没有解决您的连接问题,可能是因为您的界面不在"公共区域".以下链接是了解firewalld的重要资源.它详细介绍了如何检查,分配和配置区域:https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7
小智 5
SELinux默认阻止Apache(因此所有Apache模块)进行远程连接.
# setsebool -P httpd_can_network_connect=1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
146952 次 |
| 最近记录: |