千家信息网

Linux系统iptables命令该怎样使用

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,Linux系统iptables命令该怎样使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。很多人以为iptables就是防护墙,其实ip
千家信息网最后更新 2026年11月01日Linux系统iptables命令该怎样使用

Linux系统iptables命令该怎样使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

很多人以为iptables就是防护墙,其实iptables是一个命令行工具,其背后的netfilter才是防火墙,我们只是用iptables操作防火墙。

iptables -A INPUT -s 192.168.109.10 -j DROP:拒绝192.168.109.10主机访问本服务器;

注意:-A:添加一条规则,默认是加在最后。

注意:"拒绝给192.168.109.10主机提供服务",最好使用INPUT链。使用PREROUTING,也可以满足要求,但是如果用户的要求是让服务器提供转发功能,添加到PREROUTING链中,"转发"功能也将被拒绝掉。

注意:链名要大写;

注意:-s:指定源地址,可以是IP地址,也可以是网段"192.168.109.10/24″;"-s 为空",表示拒绝所有;

注意:-j:指定所需要的操作;

注意:拒绝有两种方式,一种是"REJECT",还有一种是"DROP";DROP是不回应,REJECT是拒绝;

注意:iptables -A INPUT -j DROP,表示拒绝所有。不过加规则的时候,不要将自己的ssh给拒绝掉。

iptables -nvL -t mangle:查看mangle表中的防火墙规则;

注意:-t:指定表名,默认情况下是"fliter"表;

注意:-v:查看详细信息;

pkts:被本机报文所匹配的个数;

prot:放行哪种协议;

opt:额外的选项,–表示没有;

target:处理机制;

注意:选项中"v"和"L"的顺序(V只能在L的前面);

iptables -nvL –line-numbers:查看fliter表中规则的顺序;

注意:–line-numbers:查看指定表中的规则的顺序;

注意:不指定表,默认情况下就是"fliter"表;

注意:表中的规则是有执行顺序的,编号(num)越小,越先执行。只要匹配到结果,就不会往下执行了;

iptables -F:清空"fliter"表中的所有的规则;

注意:-F:表示清空指定表中的所有链中的规则;

iptables -I INPUT -s 1.1.1.1 -j DROP:在"fliter"表中的INPUT链中,链首插入一条规则;

注意:-I:表示在指定的链中插入一条规则,可以指定编号;

iptables -R INPUT 1 -s 2.2.2.2 -j REJECT:表示替换第一条规则;

注意:-R,replace,替换指定的规则;

iptables -S:以iptables-save命令格式显示fliter链上的规则;

iptables -A INPUT -s 192.168.109.10 -d 192.168.109.4 -j REJECT:拒绝来自192.168.109.10的主机访问192.168.109.4的ip地址;

注意:-d:指定目标地址,使规则更加详细;

iptables -A INPUT -s 192.168.109.10 -d 192.168.109.4,192.168.109.5 -j REJECT:拒绝192.168.109.10的主机访问192.168.109.4,192.168.109.5这两个ip地址。

注意:一条命令添加两条规则;

注意:源地址也可以使用这种方式,快速添加规则;

注意:该命令在规则中的语义的含义,-s、-d属于并且的关系,即:拒绝源是192.168.109.10的ip,且源是192.168.109.4的访问;而192.168.109.4和192.168.109.5在逻辑上属于或者的关系。

iptables -A INPUT -s 192.168.109.10 -p tcp –dport 22 -j REJECT:拒绝192.168.109.10主机使用tcp协议访问我的所有ip的22端口。

注意:-p:指定协议;可以通过"/etc/protocols"文件查看协议类型;

注意:–dport:指定目标主机的端口号;(拒绝别人链接我。)

注意:–sport:指定源主机的端口号;(拒绝我链接别人。)

注意:此处,注意区分dport和sport;

iptables -A INPUT -s 192.168.109.10 -p icmp -j REJECT:拒绝来自192.168.109.10主机发来的ping包。

注意:icmp协议没有端口号,即不属于tcp也不属于udp。由于icmp协议的特性,这条命令的结果会造成,192.168.109.10无法ping通自己,自己也无法ping通192.168.109.10主机。

注意:如果要想实现别人无法ping通自己,自己可以ping通别人,需要根据state来判断。0表示回应包,8表示请求包。

iptables -A INPUT -s 192.168.109.10 -i eth0 -j REJECT:拒绝192.168.109.10主机访问我的eth0网卡。

注意:-i:加上网卡名,表示报文流入的接口;

注意:-o:加上网卡名,表示报文流出的接口;

iptables -A INPUT ! -s 192.168.109.4 -p tcp –dport 80 -j REJECT:除了192.168.109.4的主机可以访问我的tcp的80端口,其他的主机全部拒绝;

注意:!:表示"非";一般情况下,很少使用该方式。

iptables -A INPUT -s 192.168.109.4 -p icmp –icmp-type 8 -j REJECT:拒绝来自192.168.109.10主机发送来的icmp的请求包。即192.168.109.10主机无法ping通我,我可以ping通它。

注意:icmp协议中,ping通需要满足两个条件,首先源主机向目标主机发送一个请求包(8),目标主机收到之后,便会返回一个回应包(0)。

注意:-p:指定协议;

注意:–icmp-type:指定ping包的类型。(code可以省略;)

iptables -A INPUT -s 192.168.109.10 -p tcp -m multiport –dports 20:22,80 -j REJECT:拒绝来自192.168.109.10主机发送来的访问我的20-22,80端口的包。

注意:-m:后面跟模块名,multiport:以离散形式表示的多端口(最多可以跟15个端口);

注意:–dports:目标端口是多个端口;

注意:使用samba服务测试多端口的话,可能存在问题。想要抓包测试的话,可以使用"tcpdump -i eth0 -nn host 192.168.109.4″;

iptables -A INPUT -m iprange –src-range 192.168.109.1-192.168.109.10 -j REJECT:拒绝192.168.109.1~192.168.109.10范围内的所有主机的访问。

注意:iprange:ip范围的模块;

注意:–src-range:源地址范围;

注意:–dsc-range:目标地址的范围;

iptables -A INPUT -m mac –mac-source 00:0c:29:2f:b1:d6 -j REJECT:拒绝该mac地址的主机访问本主机的资源。

注意:mac:mac地址模块;

注意:–mac-source:源主机的mac地址;

iptables -A OUTPUT -p tcp -m string –algo bm –string "han" -j REJECT:拒绝所有主机访问访问我的有"han"字符串的报文。

注意:string:字符串模块;

注意:–algo:指定匹配算法,bm、kmp算法,两个随便选一个;

注意:–string:指定要匹配的字符串;

注意:–from offset:开始偏移,–to offset:结束偏移;

注意:添加的是OUTPUT链;

iptables -F OUTPUT:清空OUTPUT链中的规则;

iptables -A INPUT -m time –weekdays 1,2,3,4,5 –timestart 9:00 –timestop 10:00 -j REJECT:拒绝所有的主机在周一到周五的九点~十点之间,访问本主机的所有资源;

注意:time:时间模块;

注意:–datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 日期

–datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]

–timestart hh:mm[:ss] 时间

–timestop hh:mm[:ss]

–monthdays day[,day…] 每个月的几号

–weekdays day[,day…] 星期几

注意:centos7中,使用的是UTC时间(北京时间转化成UTC时间是减8);centos6中使用的是本地时间;

iptables -A INPUT -m connlimit –connlimit-above 2 -j REJECT:并发连接的数量大于两条的时候,就拒绝;

注意:connlimit:并发连接数量的模块;

注意:–connlimit-upto n:连接的数量小于等于n时匹配;

注意:–connlimit-above n:连接的数量大于n时匹配;

注意:可以使用ssh服务测试;

iptables -A INPUT -p icmp -m limit –limit 10/minute –limit-burst 5 -j ACCEPT:对于icmp协议,ping通5个包后,便会以每分钟接收十个的速度匹配。

注意:–limit-burst 5:达到5个之后,便会限制速度;

注意:–limit 10/minute:以每分钟通过10个的速度匹配;

注意:需要"iptables -A INPUT -p icmp -j REJECT"配合使用。

iptables -N ACCOUNT:在"fliter表中,"创建一个自定义链,命名为ACCOUNT;

注意:-N:创建一条链;建议,将一些常用的规则放在自定义的链中,当使用的时候,将自定义的链关联到INPUT链中。

注意:可以将自定义链的操作,理解为函数的声明。将关联操作,理解为函数的调用;

iptables -A ACCOUNT -s 192.168.109.10,192.168.109.220 -j REJECT:在自定义链ACCOUNT中添加一条规则;

iptables -D INPUT 2:删除INPUT链中的第二条;

iptables -A INPUT -j ACCOUNT:将ACCOUNT链关联到INPUT链中;

iptables -F ACCOUNT:清空"fliter"表中的ACCOUNT链中的规则;

iptables -X ACCOUNT:删除"fliter"表中ACCOUNRT链;

注意:-X:删除指定的自定义的链

iptables -A INPUT -p icmp -m state –state NEW -j REJECT:拒绝使用icmp第一次连接的请求包;

注意:state:state模块;

注意:NEW:第一连接(注意此处并不是三次握手中的状态);

iptables -A INPUT -s 192.168.109.10 -j LOG –log-prefix "FROM .10~~":当192.168.109.10主机访问我时,将他记录到/var/log/messige日志文件中,并且,日志中的记录的前缀的"FROM .10~~"

注意:LOG,记录日志的target;

注意:–log-prefix:定义日志文件中的记录的前缀;

iptables -A FORWARD -s 192.168.109.4/24 -d 172.17.253.120/16 -m state –state NEW -j ACCEPT:在FORWARD表中添加一条规则,当源192.168.109.0网段中的主机,目标是172.17.0.0网段中的主机时,状态是NEW(第一条连接)时,就允许连接;

iptables -A FORWARD -m state –state ESTABLISHED -j ACCEPT:对于状态是ESTABLISHED的连接,允许通过。

iptables -A FORWARD -j REJECT:拒绝所有连接;

以上三条规则结合起来,可以实现允许192.168.109.0网段中的主机ping通172.17.0.0的主机,但是反过来,ping不通。实现网络防火墙的功能。

可以通过实验来验证:

四台机器,两台192的地址(A、B),一台172的地址(D),还有一台充当路由器(C),既有172的地址,又有192的地址。设置好四台主机的路由表,并开启C主机的路由转发功能。然后,执行iptables的命令,添加规则,即可实现功能。

iptables -t nat -R POSTROUTING 1 -s 192.168.109.0/24 -j SNAT –to-source 172.17.250.111:在nat表中的POSTROUTING链中,添加一策略,当收到192.168.109.0/24网段的主机访问的目标地址是任意地址的时候,就将该包的源地址改成172.17.250.111,发送。(SNAT)

注意:要保证防火墙主机上的路由表,有到达目标地址的路径。

注意:在实验中的C主机上,执行了该规则后,A主机通过C主机,到达C主机的POSTROUTING链的时候,将包的源地址改成C主机的公网地址,然后,发送给D主机。实验的时候,将D主机上的默认路由删掉。确保返回的包是将C主机的公网地址,作为目标地址的。

注意:可以在D主机上,安装一个httpd服务,A访问D之后,通过查看日志(/var/log/httpd/access_log),来验证结果。

iptables -t nat -A PREROUTING -d 172.17.250.111 -dport 80 -j DNAT –to-destination 192.168.109.4:8080:当访问172.17.250.111主机的80端口的时候,将目标端口改成192.168.109.4主机的8080端口。(DNAT)

注意:将192.168.109.4主机上的httpd服务监听的端口改成8080;

看完上述内容,你们掌握Linux系统iptables命令该怎样使用的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

主机 规则 地址 端口 目标 命令 时候 模块 服务 时间 功能 日志 网段 路由 防火墙 防火 报文 数量 范围 顺序 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 互联网科技公司简介 广州万易互联网科技有限公司 科技互联网产品 科技与互联网 网络科技有限互联网 平安科技 互联网 互联网高科技企业 互联网金融科技委员会 中国互联网金融科技基金 居家互联网科技有限公司 顶级互联网科技成果有哪些 湖南诚度互联网科技有限公司 岳阳华臻互联网科技有限公司 郑州欣桑互联网科技有限公司 2021世界互联网领先科技成果发布 萌小萌互联网科技河南有限公司 银川新华互联网科技学校是国营吗 重庆科技产业互联网有哪些 东风日产互联网科技公司叫什么 保险科技 互联网保险 亿人帮互联网科技有限公司 新华互联网科技 狮子座互联网科技 互联网 卓越科技 深圳前海聚择互联网科技有限公司 互联网科技大奖都有哪些公司 威龙国际互联网科技公司 互联网科技平台产品运营 山东亿川互联网科技有限责任公司
0