iptables 语法、iptables filter表小案例

本文详细介绍了iptables的基本语法和常用命令,包括查看、清空、增加、插入和删除规则等操作,并通过实例演示如何设置默认策略及使用脚本批量配置iptables规则。

1、iptables 语法

iptables 语法、iptables filter表小案例

查看规则,输入命令 iptables -nvL ,回车,见下图,
iptables 语法、iptables filter表小案例
现在重启下,再查看,见下图,
iptables 语法、iptables filter表小案例
可以看到,规则没有改变。那么规则在哪里保存的呢?见下图,
iptables 语法、iptables filter表小案例
清空规则,使用命令 iptables -F ,见下图,
iptables 语法、iptables filter表小案例
清空规则之后,使用命令 iptables -nvL,就看不到默认规则了,但是配置文件 /etc/sysconfig/iptables 里面的内容没有改变。也就是说,想要把当前的规则保存到配置文件里,还需要执行一个命令 service iptables save ,这样清空的规则才会生效。如果不保存的话,可以重启 iptables ,再加载回来,见下图,
iptables 语法、iptables filter表小案例
也就是说,重启服务器或是重启 iptables 规则,都会去加载配置文件上的规则。
这些默认的规则都在 filter 这个表上,-t 是指定表,不使用 -t 的话,默认就是 filter 这个表。nat 表里面都是没有规则的,见下图,
iptables 语法、iptables filter表小案例

service iptables save 保存规则。当我们把规则写完之后,仅仅在当前内存中生效。想要重启后还依然生效,就要做这个保存规则的操作。
-Z (大写)可以把计数器清零,具体操作见下图,
iptables 语法、iptables filter表小案例
注意上图左边的红色框框的内容,一开始是有数据的,执行了 -Z 的命令之后,就清零了。然后一会会之后又有数据了,因为每时每刻都在通信。
现在给filter表增加一条规则,输入命令 iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP ,回车,见下图,
iptables 语法、iptables filter表小案例
这条命令省略了 -t ,默认为 filter 表;-A 表示增加一条规则,另外还有-I (大写的i)表示插入一条规则,-D删除一条规则;INPUT 表示针对的链,还可以是OUTPUT或者FORWORD;-s 表示后面跟着指定的来源IP,-p 表示协议(tcp, udp, icmp),--sport/--dport 后跟来源端口/目标端口;-d 后跟目的IP(主要针对内网或者外网);-j 后跟动作(DROP即把包丢掉,REJECT即包拒绝;ACCEPT即允许包)。上图中,最下面的红色框框内容就是刚刚增加上去的规则。
总结一下各个选项的作用:
-A/-D :增加删除一条规则;
-I :插入一条规则,其实跟-A的效果一样;
-p :指定协议,可以是tcp,udp或者icmp;
--dport :跟-p一起使用,指定目标端口;
--sport :跟-p一起使用,指定源端口;
-s :指定源IP(可以是一个ip段);
-d :指定目的IP(可以是一个ip段);
-j :后跟动作,其中ACCEPT表示允许包,DROP表示丢掉包,REJECT表示拒绝包;
-i :指定网卡(不常用,但有时候能用到);
还有一种用法 -I(大写的i),输入命令 iptables -I INPUT -p tcp --dport 80 -j DROP ,回车,见下图,
iptables 语法、iptables filter表小案例
可以看到使用 -I 选项,规则就插入到第一行了。
既然可以增加和插入,肯定也可以删除,使用选项 -D ,输入命令 iptables -D INPUT -p tcp --dport 80 -j DROP ,回车,见下图,
iptables 语法、iptables filter表小案例
可以看到,第一条插入的规则没有了。同样的,输入命令 iptables -D INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP ,回车,见下图,
iptables 语法、iptables filter表小案例
可以看到,增加的最后一条命令也没有了。
这边做一个假设,假如忘记掉之前增加或是插入的规则了,要怎么删除这些规则呢?先把两条规则加上去,见下图,
iptables 语法、iptables filter表小案例
接着往下操作,输入命令 iptables -nvL --line-number ,回车,见下图,
iptables 语法、iptables filter表小案例
先给每一行前面增加显示行号,然后再针对行号做操作,输入命令 iptables -D INPUT 7 ,回车,见下图,
iptables 语法、iptables filter表小案例
可以看到增加和插入的规则,已经成功删除了。再看一下行号,见下图,
iptables 语法、iptables filter表小案例
可以看到,行号果然还是少了2行的。
还有一个选项 -P(大写), 表示预设策略,这是默认的规则,在PuTTY上远程登录的话,输入命令 iptables -P OUTPUT DROP ,回车,会发现整个断掉了,什么也执行不了,只能重启。-P后面跟链名,策略内容或者为DROP或者为ACCEPT,默认是ACCEPT。
所以要注意:如果你在连接远程服务器,千万不要随便敲这个命令,因为一旦你敲完回车你就会断掉。
这个策略一旦设定后,只能回到原始的虚拟机上,使用命令 iptables -P OUTPUT ACCEPT ,回车,才能恢复成原始状态。
上面这一步 -P 的选项不要随意操作,这边不演示了。

2、iptables filter表小案例

iptables 语法、iptables filter表小案例

具体操作如下,输入命令 vi /usr/local/sbin/iptables.sh ,回车,见下图,
iptables 语法、iptables filter表小案例
输入如下的内容:
#! /bin/bash
ipt="/usr/sbin/iptables"
$ipt -F
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -i ACCEPT
$ipt -A INPUT -s 192.168.218.0/24 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT
这边的IP地址要注意,输入自己机子上的IP,跟着前面PPT的截图操作的话,远程连接就会断开,需要回到虚拟机上重新接受,才可以继续使用远程登录。
保存后退出。然后使用 vim 命令登录进入,vim 命令自带颜色显示,看起来比较清楚。输入 vim /usr/local/sbin/iptables.sh ,回车,见下图,
iptables 语法、iptables filter表小案例
上图中,ipt 定义了一个变量,变量要写绝对路径,这样才不会被环境变量所影响。然后使用 -F 命令清空规则,-P 是定义默认的策略,-A 增加规则。这边用脚本执行命令,就是因为第一条命令会使远程连接断开,所以不能一条一条的执行命令。脚本后面才会说到,这边先用一下。
iptables 语法、iptables filter表小案例
w 命令可以看到使用情况,接着使用命令 iptables -nvL 查看,见下图,
iptables 语法、iptables filter表小案例
几个增加的规则都能看到,然后重启服务,见下图,
iptables 语法、iptables filter表小案例
接着在Windows上查看网络可不可以连接,见下图
iptables 语法、iptables filter表小案例
能看到,网络是可以连接的。接着在 PuTTY 上输入命令 iptables -I INPUT -p icmp --icmp-type 8 -j DROP ,回车,见下图,
iptables 语法、iptables filter表小案例
操作完毕,可以看到网络是可以连接外网的,接着在 Windows 上操作,见下图,
iptables 语法、iptables filter表小案例
可以看到,网络不能连接。
以上就是 icmp 的作用。

总结:
iptables -nvL 查看 iptables 规则
service iptables restart 重启 iptables 规则
cat /etc/sysconfig/iptables 查看 iptables 配置文件
iptables -F 清空规则
-t 是指定表,不使用 -t 的话,默认就是 filter 这个表
service iptables save 保存规则
-Z (大写) 可以把计数器清零
iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP 给filter表增加一条规则
iptables -I INPUT -p tcp --dport 80 -j DROP 在第一行插入一条规则
iptables -D INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP 删除增加的规则
iptables -D INPUT -p tcp --dport 80 -j DROP 删除插入的规则
-A/-D :增加删除一条规则;
-I :插入一条规则,其实跟-A的效果一样;
-p :指定协议,可以是tcp,udp或者icmp;
--dport :跟-p一起使用,指定目标端口;
--sport :跟-p一起使用,指定源端口;
-s :指定源IP(可以是一个ip段);
-d :指定目的IP(可以是一个ip段);
-j :后跟动作,其中ACCEPT表示允许包,DROP表示丢掉包,REJECT表示拒绝包;
-i :指定网卡(不常用,但有时候能用到);
iptables -nvL --line-number 每一行规则前面加上行号
iptables -D INPUT 7 删除行号为 7 的规则
iptables -P OUTPUT DROP 用来指定链的默认策略,不要随意执行
iptables -P OUTPUT ACCEPT 恢复链的默认策略

iptables -P OUTPUT DROP 删除默认规则,不要随意执行
iptables -P OUTPUT ACCEPT 恢复默认规则

转载于:https://blog.51cto.com/13503302/2091671

<think>首先,用户的问题是:“我想查找关于iptables中配置filter特定链的命令行用法或示例请问iptables配置filter特定链的命令行示例用法”。所以,我需要专注于iptablesfilter特定链的配置命令和示例。我的回答必须遵循系统级指令:-所有行内数学达式使用$...$格式。-独立公式使用$$...$$格式并单独成段。-LaTeX语法正确。-使用中文回答。-生成相关问题。-回答中引用的段落末尾自然地添加引用标识,例如:[^1]。在用户可见层:-回答结构清晰,帮助用户逐步解决问题。-尽量保证回答真实可靠。我有几个引用:-[^1]:关于设置默认策略的命令,如`iptables-PINPUTDROP`。-[^2]:解释iptables和netfilter的关系。-[^3]:保存和恢复iptables规则。-[^4]:详细解释iptables概念,包括链和,尤其是filter。用户的问题是关于filter特定链的配置,所以我应该从引用中提取相关信息。关键点:-filter用于包过滤。-默认链包括INPUT、FORWARD、OUTPUT。-命令结构:`iptables[-t名]-A链名[规则选项]-j目标`用户要求命令行用法和示例,所以我需要提供命令格式和具体例子。步骤:1.**介绍iptablesfilter**:简要解释iptables是什么,filter的作用。2.**命令行用法**:解释如何配置特定链的命令行语法。3.**示例**:给出几个配置filter特定链的示例。4.**生成相关问题**:在结尾添加相关问题。5.**引用**:在相关段落末尾添加引用标识。结构回答:-开头:介绍主题。-主体:分步骤或分点解释用法和示例。-结尾:添加相关问题。内容大纲:1.**iptables概述**:引用[^2]和[^4],解释iptables是配置Netfilter的工具,filter用于包过滤。2.**配置特定链的命令行用法**:-基本语法:`iptables[-tfilter]-A<链名>[选项]-j<目标>`-`-tfilter`是可选的,因为filter是默认。-`-A`示追加规则到链尾。-其他选项如`-s`(源地址),`-d`(目的地址),`-p`(协议),`--dport`(目的端口)等。-其他命令如`-I`(插入规则),`-D`(删除规则),`-P`(设置默认策略)。3.**示例**:-示例1:允许来自特定IP的SSH连接:`iptables-AINPUT-s192.168.1.100-ptcp--dport22-jACCEPT`-示例2:拒绝所有到80端口的连接:`iptables-AOUTPUT-ptcp--dport80-jDROP`-示例3:设置INPUT链默认策略为DROP(引用[^1])。4.**保存规则**:引用[^3],使用`iptables-save`和`iptables-restore`。5.**相关问题**:生成3个相关问题。确保回答真实可靠:基于提供的引用和一般知识。引用[^4]详细解释了链和的概念,所以我应该引用它。添加引用标识:-在解释概念时引用[^2]和[^4]。-在示例或命令时引用[^1]和[^3]。数学达式:用户问题中没有数学内容,所以可能不需要,但如果有任何公式,要使用LaTeX格式。这里可能不适用。最终回答结构:-开头段落:介绍。-用法部分。-示例部分。-保存规则部分。-相关问题。</think>### iptables 配置 filter 特定链的命令行用法与示例 iptables 是 Linux 系统中用于配置 Netfilter 子系统的命令行工具,主要用于网络包过滤、地址转换等[^2]。其中,filter 是默认,用于实现包过滤功能,包含 INPUT、FORWARD 和 OUTPUT 三个内置链。配置特定链时,核心命令语法为: `iptables [-t 名] <命令> <链名> [规则选项] -j <目标>` - `-t filter`:指定名(filter 可省略,因为它是默认)。 - `<命令>`:如 `-A`(追加规则)、`-I`(插入规则)、`-D`(删除规则)、`-P`(设置默认策略)。 - `<链名>`:INPUT、FORWARD、OUTPUT 等内置链,或自定义链(需先创建)。 - `[规则选项]`:定义匹配条件,如 `-s`(源地址)、`-d`(目的地址)、`-p`(协议)、`--dport`(目的端口)。 - `-j <目标>`:指定动作,如 ACCEPT(接受)、DROP(丢弃)、REJECT(拒绝)[^4]。 #### 命令行用法详解 1. **追加规则到链尾**:使用 `-A` 命令。 - 示例:允许来自 192.168.1.100 的 SSH 连接(INPUT 链)。 ```bash iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT ``` - `-A INPUT`:追加到 INPUT 链。 - `-s 192.168.1.100`:匹配源 IP。 - `-p tcp --dport 22`:匹配 TCP 协议和端口 22。 - `-j ACCEPT`:接受匹配的包。 2. **插入规则到链头**:使用 `-I` 命令(优先级高于 `-A`)。 - 示例:在 INPUT 链开头拒绝所有 ICMP 请求。 ```bash iptables -I INPUT -p icmp -j DROP ``` 3. **删除规则**:使用 `-D` 命令,需指定规则位置或完整条件。 - 示例:删除 INPUT 链中的第一条规则。 ```bash iptables -D INPUT 1 ``` 4. **设置默认策略**:使用 `-P` 命令(影响整个链的未匹配包)。 - 示例:将 INPUT 链默认策略设为 DROP(丢弃所有未匹配包)[^1]。 ```bash iptables -P INPUT DROP ``` 5. **创建和使用自定义链**: - 创建自定义链:`iptables -N MY_CHAIN` - 将自定义链链接到默认链:例如,在 INPUT 链中调用自定义链。 ```bash iptables -A INPUT -j MY_CHAIN ``` - 在自定义链中添加规则:`iptables -A MY_CHAIN -p udp --dport 53 -j ACCEPT` 自定义链需“焊接”到默认链才生效[^4]。 #### 关键注意事项 - **规则顺序**:iptables 按规则顺序检查数据包,先匹配的规则优先执行。 - **保存规则**:配置后需保存,否则重启失效。使用 `iptables-save` 和 `iptables-restore`[^3]。 ```bash iptables-save > /etc/iptables/rules.v4 # 保存规则 iptables-restore < /etc/iptables/rules.v4 # 恢复规则 ``` - **调试建议**:先用 `iptables -L -v` 查看当前规则,测试后再设置默认策略,避免锁定自己。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值