iptables教程
封面图
•
2026-01-12
•
Linux
264
0
0
0
`iptables` 是 Linux 系统中用于配置 IPv4 数据包过滤和网络地址转换(NAT)的工具。它是 `netfilter` 框架的一部分,允许系统管理员控制进出系统的网络流量。 --- ## 📚 一、iptables 基础概念 ### 1. **表(Tables)** iptables 有三个主要的表: | 表名 | 作用 | |------|------| | `filter` | 默认表,用于过滤数据包(防火墙规则) | | `nat` | 用于网络地址转换(NAT),如端口转发、IP 转换 | | `mangle` | 用于修改数据包的特定字段(如 TTL、TOS) | ### 2. **链(Chains)** 每个表中包含若干链,链是规则的集合: | 链名 | 作用 | |------|------| | `INPUT` | 进入本机的数据包 | | `OUTPUT` | 从本机发出的数据包 | | `FORWARD` | 经过本机转发的数据包(需启用 IP 转发) | | `PREROUTING` | 在路由前处理数据包(用于 NAT) | | `POSTROUTING` | 在路由后处理数据包(用于 NAT) | --- ## 🧩 二、常用命令格式 基本语法: ```bash iptables [-t table] -[A|I|D|S] chain rule-specification ``` - `-t table`: 指定表(如 `-t nat`) - `-A`: 添加规则到链末尾 - `-I`: 插入规则到链开头或指定位置 - `-D`: 删除规则 - `-S`: 显示规则 --- ## 🔐 三、常见操作示例 ### 1. 查看当前规则 ```bash iptables -L -n -v ``` - `-L`: 列出规则 - `-n`: 不解析主机名和端口 - `-v`: 显示详细信息 ### 2. 允许所有入站连接(仅用于测试) ```bash iptables -P INPUT ACCEPT ``` > ⚠️ 请谨慎使用,生产环境应设置更严格的规则。 ### 3. 拒绝所有入站连接 ```bash iptables -P INPUT DROP ``` ### 4. 允许 SSH 连接(端口 22) ```bash iptables -A INPUT -p tcp --dport 22 -j ACCEPT ``` ### 5. 拒绝特定 IP 的访问 ```bash iptables -A INPUT -s 192.168.1.100 -j DROP ``` ### 6. 允许本地回环接口 ```bash iptables -A INPUT -i lo -j ACCEPT ``` ### 7. 开启 IP 转发(用于 NAT) ```bash echo 1 > /proc/sys/net/ipv4/ip_forward ``` ### 8. 设置 SNAT(源地址转换) ```bash iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE ``` ### 9. 设置 DNAT(目标地址转换) ```bash iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80 ``` --- ## 🛡 四、保存与恢复规则 不同 Linux 发行版保存 iptables 规则的方式略有不同: ### Ubuntu/Debian: ```bash sudo iptables-save > /etc/iptables/rules.v4 ``` 重启后自动加载: ```bash sudo apt install iptables-persistent sudo netfilter-persistent save ``` ### CentOS/RHEL: ```bash service iptables save ``` 或者: ```bash iptables-save > /etc/sysconfig/iptables ``` --- ## 🧪 五、高级功能 ### 1. 使用 `ipset` 批量管理 IP 地址 ```bash ipset create mylist hash:ip ipset add mylist 192.168.1.100 iptables -A INPUT -m set --match-set mylist src -j DROP ``` ### 2. 限制连接速率 ```bash iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/sec -j ACCEPT ``` ### 3. 限制新连接数 ```bash iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 100 -j DROP ``` --- ## 🧩 六、常见问题排查 ### 1. 规则未生效? - 检查是否设置了默认策略(`-P`) - 检查是否启用了 IP 转发 - 检查是否保存了规则 ### 2. 无法访问某个服务? - 检查是否被 `DROP` 或 `REJECT` - 检查是否在 `INPUT` 链中被拦截 - 检查是否在 `FORWARD` 链中被拦截(如果需要转发) --- ## 📚 七、参考资料 - [iptables 官方文档](https://www.netfilter.org/projects/iptables/) - [Linux firewall with iptables](https://wiki.archlinux.org/title/iptables) - [iptables tutorial for beginners](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-iptables-on-ubuntu-18-04) --- 如果你有具体的使用场景(比如设置 Web 服务器防火墙、设置 NAT、禁止某 IP 访问等),我可以为你提供更详细的配置示例。欢迎继续提问!
上一篇:
FTP 批量删除
下一篇:
信息安全管理:阻止SSH口令尝试工具软件
标题录入,一次不能超过6条
留言
评论