iptables
iptables
是一个在 Linux 中广泛用于网络流量控制的工具,它允许系统管理员配置 Linux 内核防火墙的规则。在简单的用法中,
iptables
命令通常如下所示:iptables -t <table> <chain> <num> <action> <protocol> <condition> -j <target>每个部分的含义如下:
-t <table>
:iptables 提供了四个内置的表:filter
,nat
,mangle
和raw
。每个表用于特定类型的处理。如果没有指定表,iptables 默认使用filter
表。
<chain>
:这是防火墙规则链。它们可以是:-A
(append),-D
(delete),-I
(insert),-R
(replace),-L
(list),-F
(flush),-Z
(zero),-N
(new),-X
(delete),-P
(default),-E
(rename)。例如,-A INPUT
将规则追加到输入链。
<num>
:链中规则的位置,例如-I INPUT 1
在输入链中插入规则到位置 1。
<action>
:这是iptables
操作,比如-p
(protocol),-s
(source),-d
(destination),-j
(jump),-g
(goto),-c
(counters) 等。
<protocol>
:协议可以是tcp
,udp
,icmp
,all
等。
<condition>
:这是匹配的条件,例如,-s 192.168.1.1
表示源 IP 地址是 192.168.1.1。
-j <target>
:当匹配条件满足时,跳转到的目标。目标可以是:ACCEPT
,DROP
,RETURN
,REJECT
,或自定义链的名称。一个典型的
iptables
命令示例如下:iptables -A INPUT -p tcp --dport 22 -j ACCEPT该命令的含义是:将一个规则追加到
INPUT
链,该规则允许所有源的 TCP 流量通过 SSH 端口(22)。注意:
iptables
配置是即时生效的,但在重启后将不再生效。要保存iptables
配置,你可以使用iptables-save
命令。不同的 Linux 发行版可能有不同的方法来永久保存iptables
配置。你可能需要查阅你的发行版的相关文档来获取详细信息。警告:在你熟悉
iptables
命令并明白每个参数的作用之前,你应该避免在生产环境中使用它。错误的iptables
配置可能会导致网络连接中断。
iptables
的命令选项:
- `-n`:以数字形式展示 IP 地址和端口,而不是尝试解析为名称,可以加快显示速度。 - `-L`:列出所有规则。可以与 `-t` 一起使用来指定要列出哪个表的规则。 - `-t`:指定操作的表。例如,`-t nat` 会操作 NAT 表。如果不指定 `-t`,默认操作的是 filter 表。 - `-A`:在链(Chain)的末尾添加一条或者更多的规则。 - `-D`:从链中删除一条规则。 - `-I`:在链的顶部或者指定位置插入一条规则。 - `-F`:从链中删除所有规则。 - `-P`:设置链的默认策略(ACCEPT, DROP, REJECT)。 - `-X`:删除用户自定义的链。 - `-Z`:将所有链的包计数和流量计数归零。