Linux防火墙问题总结(CentOS的iptables、Ubuntu的ufw):

我们在刚安装完Linux虚拟机,配置好网络的IP地址之后,可能会进行SSH连接和ping进行测试,这时候如果SSH连接失败,或者ping失败了,不妨使用设置一下设置一下Linux系统的防火墙。

一、CentOS的iptables

CentOS上默认防火墙为iptables,先切换到root用户,进行如下设置:

1、先检查iptables的默认状态,输入

service iptables status

如果没有启动,输入

service iptables start

2、改变IPUT、OUTPUT、FORWARD默认策略为DROP,意思是将所有的端口都设置为不可被访问,为下面开启指定的端口做铺垫,输入

iptables -P INPUT DROP
iptables -P FORWAR DROP
iptables -P OUTPUT DROP

3、保存设置,输入

service iptables save

4、查看设置的结果

iptables -nL

5、设置哪些端口可以被访问,包括出(OUTPUT)方向和进方向(INPUT),这里举例开启80端口和22端口,输入

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

6、到这里就可以进行SSH远程连接了。小伙伴们可用远程连接工具自行测试哦。

7、这时如果在windows(宿主机)上打开黑窗口ping一下Linux虚拟机的ip,发现居然是ping不通的,然后楼主就去搜了一下关于这方面的知识,根据了解,ping指令用到ICMP协议,我重新输入指令

iptables -nL

查看了所有的防火墙规则,发现INPUT和OUTPUT类下面的规则中都有ACCEPT(允许)和REJECT(拒绝)规则,而REJECT规则后面正是写着关于ICMP的东西,然后我就知道了要如何解决这个问题,把REJECT ICMP的规则都删除不就完了。方法如下:

1)先输入
iptables -nxvL --line-number //后面的--line-number可以显示规则前的行号,方便删除。
2)根据显示的结果,INPUT中第4行和第5行,以及FORWARD类的第12行显示REJECT ICMP,所以我们再输入如下命令:
iptables -D -INPUT 4
iptables -D -INPUT 5
iptables -D -FORWARD 12
3)添加允许ICMP(ping)的规则,输入如下命令:

自己可以ping别人,别人也可以ping自己:

iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT

还可以这么玩(–icmp-type的参数为0就是禁止,为8就是允许):
允许自己ping别人,禁止别人ping自己:

iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT 
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT

允许别人可ping自己,禁止自己ping别人:

iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
ptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT

8、删除完之后再在window下启动黑窗口ping虚拟机的ip

iptables还是很复杂的,详细操作和参数解释请看:

http://blog.51cto.com/linsj/1769563.
==============================================================================================================================================================================================.

二、Ubuntu的ufw防火墙

接下来看看Ubuntu上面默认的防火墙ufw,同样切换到root用户下:
1、先查看ufw防火墙是否启动了

service ufw status

如果没有启动,输入

service ufw start

启动后,输入

ufw enable

2、开启了SSH服务后,可以直接ping和SSH了
3、如果要开启端口,如22、80端口

ufw allow 22
ufw allow 80

ufw还是很简单的

今天被这个防火墙的问题困扰了好久好久,网上搜索了各种资料,结果成功了,高兴之于就写下了此文章记录下了这个问题