在服务器部署不同的程序时,总会遇到各种各样的问题,其中本文介绍的iptables开放80端口也是在服务器部署常见的问题之一。常见情况有以下两种:
情况一:在linux服务器部署好web运行环境和程序时,却发现访问被拒绝,http请求无响应。
情况二:在做本地服务器的环境,发现网站trustauth.cn能正常访问,用ip访问就访问不了,常使用CentOS的朋友,可能会遇到这样的问题。开启了防火墙导致80端口无法访问。
情况一:面对第一种情况,可以通过下面步骤完成iptables 开启80端口:
确认是否linux的iptables限制了访问
输入命令service iptables status,查看防火墙工作状态。如果是开启的,输入service iptables stop关闭防火墙,此时在电脑中上访问程序url。如果能打开网站,则说明问题就是iptables限制引起的。通常web的url是默认端口(即80端口),而iptables没有放行80端口。所
以需要允许此端口通过防火墙,当然也可以是其它端口,根据需要来配置。
解决方法:
方法一、关闭iptables(不推荐);
方法二、修改iptables配置文件,添加访问规则:
(1)、打开文件:vi /etc/sysconfig/iptables
(2)、添加规则(放行80端口):-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
(3)、保存退出:按esc,:wq!
(4)、重启防火墙,使规则生效:service iptables restart
此时就可以访问网站了,当然你可以输入命令service iptables status看到此时多了条规则:
ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
情况二:CentOS的是Linux的家族的一个分支。
原因:CentOS的防火墙在虚拟机的CENTOS装好APACHE不能用。
解决方法:
/ sbin / iptables -I INPUT -p tcp -dport 80 -j ACCEPT
/ sbin / iptables -I INPUT -p tcp -dport 22 -j ACCEPT
然后保存:
/etc/rc.d/init.d/iptables save
centos 5.3,5.4以上的版本需要用
iptables保存
来实现保存到配置文件。
这样重启计算机后,CentOS防火墙默认已经开放了80和22端口。
这里应该也可以不重启计算机:
/etc/init.d/iptables重启
CentOS的防火墙的关闭,关闭其服务即可:
查看CentOS防火墙信息:/etc/init.d/iptables状态
关闭CentOS防火墙服务:/etc/init.d/iptables停止
永久关闭不知道怎么个永久法?
chkconfig -level 35 iptables关闭
上面的内容是针对老版本的centos,下面的内容是基于新版本
iptables -P INPUT DROP
这样就拒绝所有访问CentOS 5.3本系统数据,除了链RH-Firewall-1-INPUT的规则外。
用命令配置了iptables一定还要服务iptables保存才能保存到配置文件。
cat / etc / sysconfig / iptables可以查看防火墙iptables配置文件内容
#生成的iptables-save v1.3.5在Sat Apr 14 07:51:07 2001
* filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1513:149055]
:RH-Firewall- 1-INPUT – [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m icmp -icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p esp -j ACCEPT
-A RH-Firewall-1-INPUT -p ah -j ACCEPT
-A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp -dport 5353 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp -dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp -dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state -state相关,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state -state NEW -mcp-port 22 -j ACCEPT
-A RH -Firewall-1-INPUT -j REJECT -reject-with icmp-host-prohibited
COMMIT
#完成于Sat Apr 14 07:51:07 2001
补充:
CentOS防火墙配置80端口
看了好几个页面内容都有错,下面是正确方法:
#/ sbin / iptables -I INPUT -p tcp -dport 80 -j ACCEPT
#/ sbin / iptables -I INPUT -p tcp -dport 22 -j ACCEPT
然后保存:
#/ etc / rc.d / init.d / iptables保存
再查看是否已经有了:
[root @ vcentos〜]#/etc/init.d/iptables status
表:filter
chain INPUT(policy ACCEPT)
num target prot opt source destination
1 ACCEPT udp – 0.0.0.0/0 0.0.0.0 / 0 udp dpt:80
2 ACCEPT tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
3 RH-Firewall-1-INPUT all – 0.0.0.0/0 0.0.0.0/0
Chain FORWARD(policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all – 0.0.0.0/0 0.0.0.0/0
*设置iptables为自动启动
chkconfig -level 2345 iptables on
可能因为大家使用的版本不一,所有使用方法也略有不同。
如果需要远程管理的MySQL,则使用以下指令临时打开,用完后关闭
*打开指令
iptables -A INPUT -p tcp -s trustauth.cn.xxx -dport 3306 -j ACCEPT
*关闭指令
iptables -D INPUT -p tcp -s trustauth.cn.xxx -dport 3306 -j ACCEPT