Linux-中的-iptables
Intro
iptables
命令用于配置 Linux 内核 的 firewall.
iptables
用于 IPv4, 而 ip6tables
用于 IPv6. 两者的语法相同.
有一些 iptables
的前端命令可使用, 如:
Arno's firewall
ferm
等.
同样也有 GUI 封装版本.
基本概念
iptables 中有一个 chains
的概念: 其为规则的集合, 也就是说, 一个 chain
包含多条规则.
其被称为 chain
的原因: 流量会按照这些规则在 chain
中的顺序被处理.
而 table
则是由 chains
组成的.
rule
则用于处理网络包的规则, 每一个 rule
都有一个匹配 (match) 和与之对应的行为 (target).
一个基本的原理图为:
(这里没有包含 raw
, mangle
, security
这些 tables 的处理过程)
Tables
iptables 一共有 5 个 tables:
raw
filter
nat
mangle
security
大多数情况下只用得到 nat
和 filter
.
Chains
filter
表有 3 种内置的 chians
:
INPUT
OUTPUT
FORWORD
nat
表也包含 3 种内置的 chains
:
PREROUTING
POSTROUTING
OUTPUT
默认情况下, 这些 chains
都不会有任何规则.
也可以自定义 chains
.
Rules
一个 rule 分为两个部分:
matches
, 数据包想要通过需要满足的条件target
, 数据包通过后的行为
内置的 target
有:
ACCEPT
DROP
QUEUE
RETURN
target
也可以是用户自定义的 chains
.
配置和使用
iptables 的规则保存在:
/etc/iptables/iptables.rules
/etc/iptables/ip6tables.rules
文件中.
可通过:
1 |
|
来启动.
若在命令行添加了 rules, 还需要运行以下命令来添加到文件中:
1 |
|
reload 配置可以:
1 |
|
命令行操作
默认是对 filter 表操作.
列出 rules 信息:
1 |
|
-n
是 --numeric
的缩写.
-v
是 --verbose
的缩写.
-L
是 --list
的缩写.
可以用 -t
指定 table.
Resetting rules
-F
, --flush
-X
, --delete-chain
Linux-中的-iptables
http://example.com/2023/10/09/Linux-中的-iptables/