xiaoxietongxue

导航

centos7 开启防火墙Iptables

一、Centos7安装iptables 

  参考:https://blog.csdn.net/weixin_34867823/article/details/116745327

二、Iptables操作命令

        注意:规则链匹配顺序是从上向下,匹配到即执行该规则并停止继续匹配,所以先设置允许,再设置拒绝;命令执行后会立即生效。

1、启动/停止防火墙

#查看防火墙状态
service iptables status
#停止防火墙
service iptables stop
#启动防火墙
service iptables start
#重启防火墙
service iptables restart

2、查看iptables现有规则

iptables -L -n

3、删除规则

#清空所有默认规则
iptables -F
#清空所有自定义规则
iptables -X
#所有计数器归0
iptables -Z
#删除某条规则
查看到每个规则chain的序列号
iptables -L -n --line-number
删除INPUT的第三条已添加规则,这里3代表第几行规则
iptables -D OUTPUT 3

4、允许本地访问

#允许来自于lo接口的数据包(本地访问)
iptables -I INPUT -i lo -j ACCEPT

5、INPUT链路(访问入口限制)

#【按照实际需求配置】允许10.199.16.62访问本机tcp协议的2181端口
iptables -A INPUT -s 10.199.16.62 -p tcp --dport 2181 -j ACCEPT
#【按照实际需求配置】允许192.168.1.0/24整个网段访问本机tcp协议的2181端口
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 2181 -j ACCEPT
#记录未符合上面规则的tcp包  /var/log/messages
iptables -A INPUT  -p tcp --dport 2181   -j LOG --log-prefix "[zk 2181]"
#禁止所有服务器通过tcp协议访问2181端口
iptables -A INPUT -p tcp --dport 2181 -j DROP  

6、OUTPUT链路(访问出口限制)

#【按照实际需求配置】当本机访问202.108.22.5地址时,会将记录打印在/var/log/messages中
iptables -I OUTPUT -d 202.108.22.5 -j LOG --log-prefix "Iptables-output: " --log-level 4
#【按照实际需求配置】当本机访问202.108.22.5地址时,请求包全部被拒绝
iptables -A OUTPUT -d 202.108.22.5 -j DROP

7、保存规则

#保存上述规则(不保存的话,重启防火墙就失效了)
service iptables save

 

三、案例记录

1、高并发下的防火墙响应问题

问题描述:

某系统的服务器开启了主机防火墙,主机防火墙开启后,系统会加载nf_conntrack跟踪表,在centos6.x 64位操作系统中的跟踪表的默认bukets为16384,最大TCP连接为65536,当并发过大时,防火墙跟踪表响应不及时,会直接dropping pakage。造成网络丢包,从而造成前端部分访问卡顿。

问题分析:
通过分析发现防火墙开启后在高并发情况下会有系统瓶颈。防火墙跟踪表响应不过来,会有丢包情况。并查询到相关优化参数(nf_conntrack_max),可解决丢包现象。
经测试系统配置了该项优化参数,也还是存在丢包。继续排查,发现防火墙跟踪表优化参数修改存在BUG,需要进一步修改防火墙加载顺序过程中参数。单纯通过修改nf_conntrack_max,防火墙重启并不会生效。原因如下:
我们分析iptables启动过程:
执行iptables start --->启动nf_conntrack模块 ---> 应用iptables策略。
执行iptables stop --->卸载nf_conntrack模块(sysctl的nf_conntrack 选项恢复默认值)--->停止iptables 进程
最后的解决方案:
执行iptables stop --->卸载nf_conntrack模块(sysctl的nf_conntrack 选项恢复默认值)--->停止iptables 进程 
执行iptables start --->启动nf_conntrack模块 (加载/etc/sysctl中的配置)---> 应用iptables策略。

解决方法:

配置优化

#针对centos 6.x 16G内存 64bit系统配置参数:
vi /etc/sysctl.conf net.netfilter.nf_conntrack_max=524288 net.nf_conntrack_max=524288 #使参数生效 sysctl -p

修改防火墙启动加载过程

sed -ri 's/IPTABLES_SYSCTL_LOAD_LIST=.*/IPTABLES_SYSCTL_LOAD_LIST="net.nf_conntrack"/g' /etc/init.d/iptables
再重启防火墙
service iptables restart

 

 

posted on 2022-07-15 11:19  小谢同学-记录总结  阅读(31)  评论(0)    收藏  举报