首页主机资讯centos iptables如何学习使用

centos iptables如何学习使用

时间2025-10-30 12:16:03发布访客分类主机资讯浏览540
导读: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访问

  • 允许IP192.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段

  • 屏蔽单个IP10.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  # 生效配置
    

五、注意事项

  1. 规则顺序至关重要:iptables按“从上到下”顺序匹配规则,需将“允许已有连接”“允许必要端口”等规则放在前面,避免被后续“拒绝所有”规则覆盖。
  2. 避免锁死远程连接:远程操作时,先允许SSH端口(22),再设置INPUT链默认策略为DROP,防止误操作导致无法连接。
  3. 测试规则有效性:修改规则后,可通过pingtelnet等工具测试端口是否可达,确保配置正确。
  4. 持久化规则: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
VirtualBox如何克隆CentOS虚拟机 VirtualBox里CentOS如何调整分辨率

游客 回复需填写必要信息