侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux iptables命令的教程:如何通过防火墙精确控制网络流量(附实例详解和注意事项)

Linux iptables命令介绍

iptables是Linux系统的一个防火墙程序,它可以监控和过滤从服务器进出的网络数据包。iptables使用表(tables)来组织不同的过滤动作,每个表包含一些规则(rules),每条规则定义了对符合条件的数据包的处理方式(target)。iptables有四个默认的表,分别是filter、nat、mangle和raw,其中filter表是最常用的一个,它负责控制数据包的访问权限。iptables命令可以用来查看、添加、删除或修改iptables表中的规则,从而实现对网络安全的管理和配置。

Linux iptables命令适用的Linux版本

iptables命令适用于大多数Linux发行版,如Ubuntu、Debian、CentOS、Fedora等。如果您的系统没有预装iptables,您可以使用以下命令来安装:

[linux@bashcommandnotfound.cn ~]$ sudo apt-get update # Ubuntu/Debian
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install iptables
[linux@bashcommandnotfound.cn ~]$ sudo yum update # CentOS/Fedora
[linux@bashcommandnotfound.cn ~]$ sudo yum install iptables

注意,iptables命令只适用于IPv4协议,如果您需要对IPv6协议进行防火墙设置,您需要使用ip6tables命令。

Linux iptables命令的基本语法

iptables命令的基本语法如下:

sudo iptables [option] CHAIN_rule [-j target]

其中,option是指定操作的选项,如-A表示追加一条规则,-D表示删除一条规则,-L表示列出所有规则等;CHAIN_rule是指定规则所属的链(chain)和规则的匹配条件,如-p表示协议,-s表示源地址,-d表示目的地址等;-j target是指定规则的目标动作,如ACCEPT表示允许通过,DROP表示丢弃,REJECT表示拒绝并返回错误信息等。

Linux iptables命令的常用选项或参数说明

iptables命令有很多选项和参数,以下是一些常用的:

选项参数说明
-ttable指定要操作的表,如filter、nat、mangle或raw
-Achain在指定的链的末尾追加一条规则
-Ichain [rulenum]在指定的链的开头或指定的位置插入一条规则
-Dchain rulenum删除指定的链的指定位置的规则
-Rchain rulenum替换指定的链的指定位置的规则
-L[chain]列出指定的链或所有链的规则
-F[chain]清空指定的链或所有链的规则
-Z[chain]清零指定的链或所有链的计数器
-Nchain创建一个新的自定义链
-X[chain]删除一个空的自定义链或所有空的自定义链
-Pchain target设置指定的链的默认策略
-pprotocol指定要匹配的协议,如tcp、udp、icmp等
-saddress[/mask]指定要匹配的源地址,可以是IP地址或主机名,也可以带有子网掩码
-daddress[/mask]指定要匹配的目的地址,同上
--sportport指定要匹配的源端口,可以是端口号或服务名
--dportport指定要匹配的目的端口,同上
-iinterface指定要匹配的输入网卡接口,如eth0
-ointerface指定要匹配的输出网卡接口,同上
-mmatch指定要使用的扩展匹配模块,如state、multiport、limit等
-jtarget指定要执行的目标动作,如ACCEPT、DROP、REJECT、LOG等
-v以详细的方式显示规则和计数器
-n以数字的方式显示IP地址和端口号
-h显示帮助信息

Linux iptables命令的实例

以下是一些iptables命令的实例,展示了如何使用不同的选项和参数来配置防火墙规则。

实例1:查看当前的iptables规则

[linux@bashcommandnotfound.cn ~]$ sudo iptables -L -v -n

这个命令会列出当前所有表中的所有链的规则,以及每条规则的数据包和字节的计数器。-v选项表示以详细的方式显示,-n选项表示以数字的方式显示IP地址和端口号,这样可以加快显示的速度。

实例2:允许本地回环接口的数据包通过

[linux@bashcommandnotfound.cn ~]$ sudo iptables -A INPUT -i lo -j ACCEPT

这个命令会在INPUT链的末尾追加一条规则,允许从本地回环接口(lo)输入的数据包通过。-i lo选项表示匹配输入网卡接口为lo的数据包,-j ACCEPT选项表示将目标动作设置为ACCEPT。

实例3:拒绝来自某个IP地址的数据包

[linux@bashcommandnotfound.cn ~]$ sudo iptables -A INPUT -s 192.168.1.100 -j DROP

这个命令会在INPUT链的末尾追加一条规则,拒绝来自192.168.1.100的数据包。-s 192.168.1.100选项表示匹配源地址为192.168.1.100的数据包,-j DROP选项表示将目标动作设置为DROP。

实例4:允许SSH服务的数据包通过

[linux@bashcommandnotfound.cn ~]$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

这个命令会在INPUT链的末尾追加一条规则,允许SSH服务(端口号为22)的数据包通过。-p tcp选项表示匹配协议为tcp的数据包,--dport 22选项表示匹配目的端口为22的数据包,-j ACCEPT选项表示将目标动作设置为ACCEPT。

实例5:限制每分钟只能接收三个ping请求

[linux@bashcommandnotfound.cn ~]$ sudo iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 3/minute -j ACCEPT

这个命令会在INPUT链的末尾追加一条规则,限制每分钟只能接收三个ping请求。-p icmp选项表示匹配协议为icmp的数据包,--icmp-type echo-request选项表示匹配类型为echo-request的数据包,-m limit选项表示使用limit模块,--limit 3/minute选项表示设置限制为每分钟三个数据包,-j ACCEPT选项表示将目标动作设置为ACCEPT。

Linux iptables命令的注意事项

  1. iptables的规则是顺序敏感的,链中的规则是自上而下检查的。数据包会受到链中首个匹配的规则的影响,其余的规则被忽略。

  2. 不正确配置iptables规则可能会使你的系统变得无法访问。只在你完全理解你正在做什么的情况下使用iptables。

  3. 如果在你的系统中执行iptables命令时返回bash: iptables: command not found错误,可能需要你手动安装iptables。

Iptables相关命令

netfilter:这是iptables所依据的内核框架,用于控制和操作网络数据包
firewalld:这是新一代的防火墙工具,用于CentOS7和Fedora以后的版本,用于替代iptables
nftables:这是另一个新的防火墙框架,可以作为iptables的替代品

0

评论区