文章目錄

今天早上登服务器测试,试了很多次就是连接不上,折腾了很久发现是因为今天服务器重启了,然后没有把防火墙关闭。因为是内网测试服务器,所以图省事每次服务器重启之后都会把防火墙关了,这样就能正常登陆了。于是今天忘了关了就查了很久……
还是为了图省事,决定更改防火墙设置,来个一劳永逸。
linux防火墙默认阻挡了大部分端口的外部连接,也就是说如果你不修改防火墙,你从外面主动连接不到linux内部,但是可以从linux内部向外部发起连接。
下面是我服务器上的默认防火墙配置

vim /etc/sysconfig/iptables
如果没有/etc/sysconfig/iptables文件,则可以直接运行命令:
iptables -A INPUT -p tcp -m state –state NEW -m tcp –dport 3306 -j ACCEPT
service iptables save
service iptables restart

1
2
3
4
5
6
7
8
9
10
11
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [55:3890]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

可以看到它只默认打开了22端口,即ftp服务端口。
但是登录服务器的话要连接你自己的服务器端口,所以要把服务器监听端口添加到配置文件里面。
以mysql服务端口3306为例,

vim /etc/sysconfig/iptables

1
2
3
4
5
6
7
8
9
10
11
12
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [55:3890]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT #就是这里
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

然后重启防火墙服务service iptables restart

注意要把-A INPUT -p tcp -m state –state NEW -m tcp –dport 3306 -j ACCEPT这句添加到icmp那句的上面,不然配置不生效(关于这点网上也有人说放在22那句下面或者COMMIT上面之类的,都试了下不怎么管用,不知道是不是系统原因)

文章目錄