centos iptables如何学习使用
导读:CentOS下iptables学习使用指南 一、iptables基础概念 iptables是Linux内核级的IPv4防火墙工具,通过配置规则实现对数据包的过滤、转发、地址转换等功能。其核心逻辑围绕“表(Table)”“链(Chain)”“...
CentOS下iptables学习使用指南
一、iptables基础概念
iptables是Linux内核级的IPv4防火墙工具,通过配置规则实现对数据包的过滤、转发、地址转换等功能。其核心逻辑围绕“表(Table)”“链(Chain)”“规则(Rule)”展开:
- 表(Table):根据功能划分,CentOS常用
filter表(默认,用于数据包过滤)、nat表(用于网络地址转换,如端口转发)、mangle表(修改数据包头部)、raw表(连接跟踪前处理)。 - 链(Chain):数据包处理的流程节点,
filter表包含INPUT(进入本机)、OUTPUT(本机发出)、FORWARD(转发);nat表包含PREROUTING(路由前,如端口转发)、POSTROUTING(路由后,如SNAT)。 - 规则(Rule):由“匹配条件”(如源IP、目标端口)和“目标动作”(如ACCEPT、DROP)组成,数据包按规则顺序匹配,首条匹配后停止。
二、安装与初始化
1. 安装iptables
CentOS 7及以上默认使用firewalld,若需使用iptables,需先禁用firewalld并安装iptables-services:
systemctl stop firewalld # 停止firewalld服务
systemctl disable firewalld # 禁用firewalld开机启动
yum install -y iptables-services # 安装iptables-services
systemctl enable iptables # 启用iptables开机启动
systemctl start iptables # 启动iptables服务
2. 清空现有规则
首次使用需清空默认规则,避免残留规则影响配置:
iptables -F # 清空filter表所有规则
iptables -X # 删除用户自定义的空链
iptables -Z # 清空所有计数器(匹配包数、字节数)
三、常用命令详解
1. 查看规则
- 查看filter表所有规则(详细模式,数字显示IP/端口):
iptables -L -n -v - 查看特定链(如INPUT)的规则:
iptables -L INPUT -n -v - 查看带行号的规则(便于删除/修改):
iptables -L -n --line-numbers
2. 添加规则
- 追加规则到链尾(如允许SSH端口22):
iptables -A INPUT -p tcp --dport 22 -j ACCEPT - 插入规则到链首(如优先拒绝特定IP):
iptables -I INPUT 1 -s 192.168.1.100 -j DROP - 允许已建立的连接(避免断开现有会话):
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
3. 删除规则
- 按规则序号删除(如删除INPUT链第3条规则):
iptables -D INPUT 3 - 按条件删除(如删除允许192.168.1.100的规则):
iptables -D INPUT -s 192.168.1.100 -j ACCEPT
4. 设置默认策略
- 默认拒绝所有输入(增强安全性,需提前允许必要流量):
iptables -P INPUT DROP - 默认允许所有输出(本机发出的流量通常无需限制):
iptables -P OUTPUT ACCEPT - 默认拒绝所有转发(若无需做转发网关):
iptables -P FORWARD DROP
5. 保存与恢复规则
- 保存规则(CentOS 7及以上):
service iptables save # 保存到/etc/sysconfig/iptables - 恢复规则(从保存的文件):
iptables-restore < /etc/sysconfig/iptables
四、常见应用场景
1. 允许特定IP访问
- 允许IP
192.168.1.100访问所有端口:iptables -A INPUT -s 192.168.1.100 -j ACCEPT - 允许IP段
192.168.1.0/24访问SSH(端口22):iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
2. 开放特定端口
- 允许HTTP(端口80):
iptables -A INPUT -p tcp --dport 80 -j ACCEPT - 允许HTTPS(端口443):
iptables -A INPUT -p tcp --dport 443 -j ACCEPT - 允许FTP(端口21+被动端口范围):
iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A INPUT -p tcp --dport 49152:65534 -j ACCEPT # 被动模式端口范围
3. 屏蔽IP/IP段
- 屏蔽单个IP
10.0.0.1:iptables -A INPUT -s 10.0.0.1 -j DROP - 屏蔽IP段
10.0.0.0/8:iptables -A INPUT -s 10.0.0.0/8 -j DROP
4. 端口转发(nat表)
- 将公网8080端口转发到内网80端口(需开启内核IP转发):
echo 1 > /proc/sys/net/ipv4/ip_forward # 临时开启IP转发 iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80 - 永久开启IP转发(编辑
/etc/sysctl.conf):net.ipv4.ip_forward = 1 sysctl -p # 生效配置
五、注意事项
- 规则顺序至关重要:iptables按“从上到下”顺序匹配规则,需将“允许已有连接”“允许必要端口”等规则放在前面,避免被后续“拒绝所有”规则覆盖。
- 避免锁死远程连接:远程操作时,先允许SSH端口(22),再设置
INPUT链默认策略为DROP,防止误操作导致无法连接。 - 测试规则有效性:修改规则后,可通过
ping、telnet等工具测试端口是否可达,确保配置正确。 - 持久化规则:CentOS 7及以上使用
service iptables save保存规则,重启后自动加载;若使用iptables-persistent(Debian/Ubuntu),可通过iptables-save > /etc/iptables/rules.v4保存。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos iptables如何学习使用
本文地址: https://pptw.com/jishu/738746.html
