Linux之iptables命令用法解读

 更新时间:2025年09月04日 09:17:27   作者:minh_coo  
文章概述了Linux下的netfilter框架与iptables工具,二者协同实现包过滤防火墙,详解四表五链结构、规则配置命令及常用场景,强调规则顺序、匹配条件、方向性考虑和默认策略设置(如白名单采用ACCEPT而非DROP)的重要性

一、netfilter/iptables

  • netfilter:Linux内核中的一个软件框架,用于处理网络数据包,提供的功能包括:网络地址转换NAT,数据包内容修改、过滤、转发等防火墙的功能
  • iptables:运行在用户空间的应用软件,命令行工具,通过其设置规则,来控制netfilter模块,从而实现网络数据包的管理,从而实现防火墙的配置。

二者组成Linux下的包过滤防火墙。

二、四表五链

1、规则表

  • filter表:过滤数据包
  • nat表:网络地址转换
  • mangle表:管理mangle包
  • raw表:关闭在nat表启用的连接追踪机制

2、规则链

  • PREROUTING:对数据包作路由选择前应用此链中的规则
  • INPUT:进来的数据包
  • FORWARD:转发数据包
  • OUTPUT:出去的数据包
  • POSTROUTING:路由选择后

三、规则配置

1、命令格式

iptables [-t table] command chain parameter target

table:指定操作的表,默认filter表

command:操作的命令

  • -A:在指定链尾添加一条新的规则(append)
  • -D:删除指定链中的一条规则,可以根据序号或内容进行删除(delete)
  • -I:在指定链插入一条新的规则,默认在第一行(insert)
  • -L:列出所有规则(list)
  • -R:修改、替换指定链的某一条规则,可以根据序号和内容进行替换(replace)
  • -N:新建一条自定义规则链(new-chain)
  • -X:删除自定义的规则链
  • -E:重命名自定义链
  • -F:清空(flush)

chain:规则链(INPUT、OUTPUT、FORWARD…)

parameter:匹配规则

  • -s:匹配报文的源地址,可以同时指定多个,每个用逗号进行隔开
  • -d:匹配报文的目标地址,可以同时指定多个,每个用逗号进行隔开
  • -p:匹配报文的协议类型,如tcp、udp、icmp、sctp、udplite、esp等
  • -i:匹配报文从哪个网卡接口流入
  • -o:匹配报文将要从哪个网卡接口流出

  • –sport:匹配源端口,可以用冒号指定一个连续的端口范围
  • –dport:匹配目的端口,可以用冒号指定一个连续的端口范围
  • -m multiport --sports/dports:匹配多个离散的端口号,用逗号隔开
示例:
iptables -t filter -I OUTPUT -s 192.168.1.111 -p tcp -m tcp --dports 22:25 -j DROP

target:处理数据包的方式

  • -j ACCEPT:允许数据包通过
  • -j DROP:丢弃数据包,不给回应信息
  • -j REJECT:拒绝数据包通过,必要时会给数据发送端一个响应信息

四、常用规则示例

1、规则保存

service iptables save

若不保存,待服务器重启时会恢复原先状态。

2、查看规则(带编号)

iptables -L -n --line-number

3、删除OUTPUT第一条规则

iptables -D OUTPUT 1

4、拒绝进入防火墙的所有ICMP协议数据包

iptables -I INPUT -P icmp -j REJECT

5、限制udp53端口只进不出

iptables -I OUTPUT -p udp --dport 53 -j REJECT

6、获取域名服务端口号

grep domain /etc/services

五、注意点

1、规则顺序

若报文已被前面的规则匹配,则会直接执行对应的操作,即使后续规则也能匹配,但不会再执行。

2、匹配条件

若一条规则中有多个匹配条件,则需同时满足所有匹配条件,报文才能被匹配,即"与"的关系。

3、将更容易被匹配的规则放在前面

在没有顺序要求的情况下,不同类别的规则,被匹配次数多、匹配频率高的规则应放在前面。

4、当IPTABLES所在主机作为网络防火 墙时,在配置规则时,应着重考虑方向性,双向都要考虑,从外到内,从内到外。

5、在配置IPTABLES白名单时,往往会将链的默认策略设置为ACCEPT,通过在链的最后设置REJECT规则实现白名单机制,而不是将链的默认策略设置为DROP,如果将链的默认策略设置为DROP,当链中的规则被清空时,管理员的请求也将会被DROP掉。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Apache为mysql以及自己的项目设置虚拟路径

    Apache为mysql以及自己的项目设置虚拟路径

    Apache为mysql以及自己的项目设置虚拟路径
    2009-12-12
  • linux服务器ubuntu定时任务cron设置每秒执行

    linux服务器ubuntu定时任务cron设置每秒执行

    这篇文章主要介绍了linux服务器ubuntu定时任务cron设置每秒执行,使用 cron 时,有一些注意事项可以帮助你确保任务按预期执行,并减少潜在的问题,本文给大家介绍的非常详细,需要的朋友参考下吧
    2024-02-02
  • 详解Linux系统无法上网解决方案

    详解Linux系统无法上网解决方案

    本篇文章主要介绍了详解Linux系统无法上网解决方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • 详解CentOS7安装配置vsftp搭建FTP

    详解CentOS7安装配置vsftp搭建FTP

    这篇文章主要介绍了详解CentOS7安装配置vsftp搭建FTP,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • 详解linux dma驱动编写

    详解linux dma驱动编写

    这篇文章主要介绍了详解linux dma驱动编写,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Linux系统之service创建方式

    Linux系统之service创建方式

    Linux下创建service的方法:1.创建一个新的service文件在/etc/systemd/system目录中,2.编写service文件的内容,包括Description、After、ExecStart、User、Group、Restart和WantedBy,3.启用service,使用命令systemctl enable
    2024-11-11
  • Centos 6.5 下配置DNS服务器的方法(图文详解)

    Centos 6.5 下配置DNS服务器的方法(图文详解)

    这篇文章主要介绍了Centos 6.5 下配置DNS服务器的方法详解,需要的朋友可以参考下
    2017-05-05
  • linux让程序开机自动运行最简单的方法

    linux让程序开机自动运行最简单的方法

    在本篇文章里小编给大家整理的是一篇关于linux让程序开机自动运行最简单的方法以及相关代码,需要的朋友们学习下。
    2019-11-11
  • Linux多线程编程(二)

    Linux多线程编程(二)

    条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待条件变量的条件成立而挂起(此时不再占用cpu);另一个线程使条件成立(给出条件成立信号)。
    2014-08-08
  • Linux VPS备份教程 数据库/网站文件自动定时备份

    Linux VPS备份教程 数据库/网站文件自动定时备份

    这篇文章老左分享目前大家比较常用的自动定时备份方案,数据库发送到我们的邮箱、文件发送同步到我们另外空间FTP中
    2012-09-09

最新评论