no comments yet
09 Oct 2014

Linux配置防火墙,开启80端口

一个VPS,小硬盘只有5个G,经常因为空间不足而导致web server无法正常启动,虽然知道肯定是log越来越大占用了空间,但一直苦于找不到,今天终于通过du -sh ./*命令查出了这些巨大的log文件,按说将其删除以后web server应该可以正常启动了,结果却悲剧了,各种试就是无法访问,使用netstat -ntpl命令查看端口的占用情况,显示如下:

[root@test ~]# netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      12064/nginx
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      984/sshd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1116/sendmail
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      12054/mysqld
tcp        0      0 :::22                       :::*                        LISTEN      984/sshd
tcp        0      0 :::88                       :::*                        LISTEN      12061/httpd
tcp        0      0 :::443                      :::*                        LISTEN      12061/httpd

说明web server已经正常启动,可就是访问不了。
重启也无果的情况下,忽然想到是不是防火墙禁用了端口,于是输入

service  iptables  stop

关闭防火墙后再试,果然可以访问了。。

找到原因以后就可以对症下药了,编辑iptables

vi /etc/sysconfig/iptables

加入以下这条规则来允许80端口通过防火墙

-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT

特别提示:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面

添加好之后防火墙规则如下所示:

# Firewall configuration written by system-config-firewall 
# Manual customization of this file is not recommended. 
*filter 
:INPUT ACCEPT [0:0] 
:FORWARD ACCEPT [0:0] 
:OUTPUT ACCEPT [0:0] 
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT 
-A INPUT -j REJECT –reject-with icmp-host-prohibited 
-A FORWARD -j REJECT –reject-with icmp-host-prohibited 
COMMIT 

最后重启防火墙使配置生效

/etc/init.d/iptables restart