Iptables常见用法
2024年8月1日 · 903 字 · 2 分钟
Iptables常见用法
iptables是什么
iptables
是Linux系统中用于配置防火墙规则的工具。
它基于Netfilter内核模块,能够对数据包进行过滤、转发和NAT(网络地址转换)等操作。
iptables非常强大且灵活,可以用来保护网络安全、限制网络流量、实现网络地址转换(NAT)等功能。
iptables
的基本概念
-
链(Chains):
iptables
使用链来处理数据包的流向。每个链包含一系列规则,这些规则会根据特定条件匹配数据包并采取相应的动作。- 常见的链包括:
INPUT
:处理所有流入的数据包。FORWARD
:处理所有转发的数据包。OUTPUT
:处理所有流出的数据包。
-
表(Tables):
- 表是规则链的集合,
iptables
中有几种常用的表:filter
:默认表,包含数据包过滤规则。常用链有INPUT
、FORWARD
和OUTPUT
。nat
:用于网络地址转换(NAT),常用链有PREROUTING
、POSTROUTING
和OUTPUT
。mangle
:用于更改数据包的服务类型(TOS)、TTL 等特殊标记。raw
:用于配置数据包的跟踪。
- 表是规则链的集合,
-
规则(Rules):
- 每个链包含的规则定义了如何处理数据包。规则包含匹配条件和处理动作(目标)。
iptables
常见用法
显示现有规则
sudo iptables -L -v
添加规则
- 允许 SSH 连接(端口 22):
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- 允许 HTTP 连接(端口 80):
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
- 允许 HTTPS 连接(端口 443):
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
拒绝所有其他流量
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT DROP
删除规则
删除方法一:使用规则的描述删除规则
使用 -D
参数和规则的具体描述来删除规则。例如,要删除之前添加的 SSH 规则:
sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT
删除方法二:使用编号删除
列出带编号的规则:
sudo iptables -L --line-numbers
根据编号删除规则:
sudo iptables -D INPUT <rule-number>
保存和恢复规则
- 保存规则(在 Debian/Ubuntu 上):
sudo iptables-save > /etc/iptables/rules.v4
- 恢复规则(在 Debian/Ubuntu 上):
sudo iptables-restore < /etc/iptables/rules.v4
在 CentOS/RHEL 上,可以使用 iptables-save
和 iptables-restore
命令,但保存的位置和方式可能有所不同。
NAT 和端口转发
- 将端口 80 的流量重定向到端口 8080:
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
- 设置端口转发:
sudo iptables -t nat -A PREROUTING -p tcp -d <public-ip> --dport 80 -j DNAT --to-destination <private-ip>:80
其他常见命令
- 清空所有规则:
sudo iptables -F
- 删除所有自定义链:
sudo iptables -X
- 设置默认策略为接受:
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT