iptables 使用、理解

设置3306端口IP白名单

复制代码
禁止全部访问
iptables -I INPUT -p tcp --dport 3306 -j DROP

添加允许访问的
iptables -I INPUT -s 127.0.0.1 -p tcp --dport 3306 -j ACCEPT
注意:后增加的后排在前面,iptables匹配的时候,优先匹配前面的,前面的匹配上了,后面的就忽略了。

删除规则
iptables -L 查看到 INPUT 链有多个规则,从1排序,删除第1个规则
iptables -D INPUT 1

永久保存
service iptables save
或者
iptables-save > /etc/sysconfig/iptables
可以先cat这个文件看是否存在
复制代码

有些通过改INPUT链不生效的情况

复制代码
如果时候docker启动的mysql,有时可能设置了没生效,这时要检查是否在DOCKER链上已经配置了ACCEPT了。
通过iptables -L 可以看到每个链的规则的情况
检查mysql容器对应的docker ip docker inspect
-f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器名 得到 172.17.0.4 给DOCKER链增加过滤规则 #全部默认丢弃 iptables -I DOCKER -d 172.17.0.4 -p tcp --dport 3306 -j DROP #源地址是127.0.0.1的接受 iptables -I DOCKER -s 127.0.0.1 -d 172.17.0.4/32 -p tcp --dport 3306 -j ACCEPT #源地址是192.168.1.2的接受 iptables -I DOCKER -s 192.168.1.2 -d 172.17.0.4/32 -p tcp --dport 3306 -j ACCEPT
复制代码

 

iptables理解

规则
根据指定的匹配条件来尝试匹配每个流经此处的报文,一旦匹配成功,则由规则后面指定的处理动作进行处理;
匹配条件:源地址Source IP,目标地址 Destination IP。
扩展匹配条件:源端口Source Port, 目标端口Destination Port 等等
处理动作:ACCEPT、DROP、REJECT、SNAT、MASQUERADE、DNAT、REDIRECT、LOG等等


很多规则串到一个链条上的时候,就形成了”链”。因此链上面的规则执行是有顺序的。
具体执行时,iptables 会按照链中规则的顺序逐一匹配,一旦匹配到一个规则,就会执行对应的操作,然后停止继续匹配。这意味着规则的顺序非常重要,因为如果一个数据包匹配了一个规则,后续的规则将不会再被考虑。
链的顺序决定了规则的优先级,从上到下依次检查规则,直到匹配或到达链末尾。
链有 PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING几种


我们对每个”链”上都放置了一串规则,但是这些规则有些很相似,比如,A类规则都是对IP或者端口的过滤,B类规则是修改报文,那么这个时候,我们是不是能把实现相同功能的规则放在一起呢,必须能的。
我们把具有相同功能的规则的集合叫做”表”,所以说,不同功能的规则,我们可以放置在不同的表中进行管理,而iptables已经为我们定义了4种表,每种表对应了不同的功能,而我们定义的规则也都逃脱不了这4种功能的范围。
有filter表、nat表、mangle表、raw表 4种
我们自定义的所有规则,都是这四种分类中的规则,或者说,所有规则都存在于这4张”表”中。

表链关系
表中可以包含规则。
链中可以包含规则。
表是把相同功能的规则放在一起。可以说,某个链,拥有某个表对应的功能。
链是把规则排序,按照顺序执行。

表链关系具体如下
链的规则存放于哪些表中(从链到表的对应关系):
PREROUTING 的规则可以存在于:raw表,mangle表,nat表。
INPUT 的规则可以存在于:mangle表,filter表,(centos7中还有nat表,centos6中没有)。
FORWARD 的规则可以存在于:mangle表,filter表。
OUTPUT 的规则可以存在于:raw表mangle表,nat表,filter表。
POSTROUTING 的规则可以存在于:mangle表,nat表。

 

表中的规则可以被哪些链使用(从表到链的对应关系)表(功能)<–> 链(钩子):
raw 表中的规则可以被哪些链使用:PREROUTING,OUTPUT
mangle 表中的规则可以被哪些链使用:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
nat 表中的规则可以被哪些链使用:PREROUTING,OUTPUT,POSTROUTING(centos7中还有INPUT,centos6中没有)
filter 表中的规则可以被哪些链使用:INPUT,FORWARD,OUTPUT

 

posted @   szcj~  阅读(76)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示