Linux iptables 命令行操作常用指令 日期:2023-02-01 人气:626 #### 基本操作 ##### 查看当前 IPTABLES 规则 ``` iptables -L --line-numbers ``` 该命令会以列表的形式显示出当前使用的 iptables 规则,每一条规则前面的编号可以用来做为其它操作——例如后面的删除操作——的参数,很有用。显示的结果类似于, ``` # service iptables status Table: filter Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) num target prot opt source destination ``` 显示出该 iptables 中有一个表 filter,其中在 INPUT chain 中有 5 条规则,在 FORWARD chain 中有 1 条规则,在 OUTPUT chain 中没有规则。 #### iptables 规则中各参数的含义 - -P 代表协议(PROTOCOL) 指明当前规则针对的传输协议(如 TCP、UDP、ICMP 等) 可能的参数值有:tcp, udp, icmp, all 使用 “all” 表示适用于所有协议。而如果在规则中不指定 -p 参数,则默认使用 “all” 参数。一般不使用 “all” 这个值,要么指定某个特定的协议,要么就指定 -p 参数。 -p 的参数值既可以用名称(如 tcp)也可以用协议对应的数值(如 6 代表 tcp 协议) /etc/protocols 文件中包含了所有允许的协议名称和相应数值 也可以用长的参数名 –protocol - -S 代表源地址(SOURCE) 指定数据包的源地址 可以是 ip 地址,或者网络地址,或者主机名(hostname) 例如:-s 192.168.1.101 表示针对特定的 ip 地址 对于网络掩码,使用 /mask。例如,“-s 192.168.1.0/24″ 表示网络掩码为 255.255.255.0 的所有 192.168.1.x 地址都匹配。 如果不指定 -s 参数,默认匹配所有源地址 也可以用长参数名 –src 或者 –source - -D 代表目的地址(DESTINATION) 指定数据包的目的地址 使用方式与上面的 “-s” 一样(不同之处仅在于 -s 指源,而 -d 表示目的地址) 也可以用长参数名 –dst 或者 –destination - -J 代表跳转(TARGET) j 的意思是 “jump”(跳转) 到目标 指定当某个数据包满足该规则的时候的就跳转到的下一个处理规则,而不再顺序执行后面的规则判断 可能的值有:ACCEPT, DROP, QUEUE, RETURN,分别表示接受、丢弃、进入队列,返回(跳出,通常是从某个 chain 中跳回到调用该 chain 的上层 chain) 也可以跳转到某个自定义的 chain 中,使用该 chain 的名称做为跳转目标 - -I 代表 IN INTERFACE(入站接口) i 表示 “input interface”(输入接口,即,指定网络数据处理的网卡,一般 eth0 即表示第一块有线网卡的外网接口,lo 表示局域网接口) 可以直接理解为 “-i” 表示接口。不过,-i 和 -o 都表示接口,-i 表示输入时的接口,而 -o 特指输出用的接口。 指定数据包进入 INPUT、FORWARD 和 PREROUTING 链时经由的接口。 例如:-i eth0 表示该规则应该针对从 eth0 接口进来的数据包。 如果不指定 -i 参数,则经由系统中所有可用的接口进入的数据包都可以匹配该规则。 也可以使用长参数 –in-interface - -O 代表 OUT INTERFACE(出站接口) o 表示 “output interface”(出站经由接口) 指定发送出去的数据包进入 INPUT、FORWARD 和 PREROUTING 链时经由的接口。 如果不指定 -o 参数,则经由系统中所有可用的接口发出的数据包都可以匹配该规则。 也可以使用长参数 –out-interface #### 其它防火墙参数选项 上面某些防火墙参数还有属于它自己的参数选项,可以与其配合使用。下面是一些常用的选项。 要使用这些参数选项,需要指定相应的参数,例如,要使用 “–sport” 选项,应该在规则中指定 “-p tcp” (或者 “-p udp”)等参数。 > 注意:所有这些选项前面都是 –(2个短横线 – )。 - –SPORT 表示 SOURCE PORT (源端口,用于 -P TCP, 或者 -P UDP) 默认匹配所有端口(未特别指定时) 可以指定端口号(数字),也可以指定端口名称。例如,默认的 SSH 端口号码为 22,名称为 ssh,可以表示为 “–sport 22″ 或者 “–sport ssh”。 /etc/services 文件包含了所有允许的端口名称和对应的端口号码。 在规则中使用号码比使用名称要好(效率高些) 要匹配一个端口范围,使用英文半角冒号(:),如 22:100 匹配从 22 到 100 的所有端口号。 也可以使用长名称 –source-port - –DPORT 表示 DESTINATION PORT (目的端口,-P TCP, 或者 -P UDP) 与 –sport 的用法相同,区别仅在于对象是目的端口 也可以使用长名称 –destination-port - –TCP-FLAGS 表示 TCP FLAGS (用于 -P TCP) 可以使用英文半角逗号(,)来指定多个 TCP 状态标识 可能值有:SYN, ACK, FIN, RST, URG, PSH。可以全用,也可以不用。 - –ICMP-TYPE 表示 ICMP TYPE (ICMP 类型,用于 -P ICMP) 当使用 icmp 协议 “-p icmp” 的时候,可以使用 “–icmp-type” 特别指定 ICMP 类型 例如,使用 “–icmp-type 0″ 表示 “Echo Reply”,“–icmp-type 8″ 表示 “Echo”。 ### 鸣谢 - [水景一夜](https://cnzhx.net/blog/common-iptables-cli/) 标签: 防火墙 上一篇:vscode使用Community Server Connector运行JDK1.8项目报错 下一篇:CentOS / Redhat 上的 Iptables 防火墙配置简介 随便看看 2025-07-04 vscode使用Community Server Connector运行JDK1.8项目报错 2025-07-03 vscode中为maven项目指定java版本 2025-06-27 利用puppeteer将网页保存为pdf 2025-06-27 一天二十四时辰表 2025-06-27 家谱中儿子和父母的关系有哪些? 留言