linux系统怎么配置iptables
时间: 2025-03-09 16:10:42 浏览: 53
### 配置 Linux 系统中的 Iptables
#### 查看现有规则
为了查看当前 `mangle` 表中的所有规则,可以执行命令来显示详细的列表。这有助于理解现有的网络包处理逻辑[^1]:
```bash
sudo iptables -L -v -n -t mangle
```
#### 定义新的规则链
创建自定义链用于特定目的时,可以通过以下方式实现:
- 使用 `-N` 参数新建一条链。
例如,在过滤表中新增名为 `CUSTOM_CHAIN` 的链:
```bash
sudo iptables -t filter -N CUSTOM_CHAIN
```
#### 插入和追加规则到指定链
向已有的链里添加新规则有两种方法:
- **插入**:使用 `-I` 将规则放在最前面或者指定位置。
示例:阻止除 SSH (端口 22) 外的所有传出流量[^2]:
```bash
sudo iptables -I OUTPUT -j DROP
sudo iptables -I OUTPUT -p tcp --sport 22 -j ACCEPT
```
- **追加**:利用 `-A` 把规则附加到最后面。
示例:允许 HTTP 请求通过防火墙:
```bash
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
```
#### 删除规则
当不再需要某些规则时,可按编号删除或直接匹配整个规则语句移除它。
- 按序号删除:
```bash
sudo iptables -D INPUT 3 # 假设要删掉INPUT链里的第3条规则
```
- 或者完全匹配整条规则进行删除:
```bash
sudo iptables -D INPUT -p tcp --dport 80 -j ACCEPT
```
#### 清空并重置规则集
有时可能希望清空某个表内的全部规则以便重新设置它们。
- 对单个表操作:
```bash
sudo iptables -F -t nat # 清空nat表下的所有规则
```
- 彻底清除所有表的数据:
```bash
sudo iptables -F # 清空默认filter表
sudo iptables -X # 移除用户自建的额外链条
sudo iptables -Z # 计数器归零
```
#### 设置策略(Policy)
为输入、转发以及输出三个方向设定缺省行为非常重要,默认情况下通常会拒绝一切未被显式许可的动作。
示例:将 INPUT 和 FORWARD 方向都设成丢弃模式:
```bash
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
```
#### 保存更改后的配置
不同发行版有不同的工具用来持久化这些修改;比如 Debian/Ubuntu 可能要用到 `iptables-save` / `iptables-restore` 组合,而 RedHat/CentOS 则依赖于 `/etc/sysconfig/iptables` 文件或其他服务管理脚本。
对于 Ubuntu 用户来说,可以这样保存当前状态:
```bash
sudo sh -c 'iptables-save > /etc/iptables/rules.v4'
```
而对于 CentOS/RHEL,则可能是这样的过程:
```bash
service iptables save
```
阅读全文
相关推荐













