• 搜索
  • 夜间模式
    ©2012-2026  陈十一的小破站 Theme by OneBlog

    陈十一的小破站博客

    搜索
    标签
    # Nodejs # CentOS # Git # Golang # Docker # Windows # Nginx # 反向代理 # 脚本 # Linux
  • 首页>
  • 技术>
  • 正文
  • 封禁指定国家IP请求

    2025年01月21日 833 阅读 0 评论 4304 字

    基于系统层的GEO IP封锁与解封指南

    背景需求

    当业务需要限制特定地区IP访问且无机房防火墙权限时,可通过操作系统层实现。本文以屏蔽中国IP为例,提供Linux/Windows双平台解决方案。

    准备工作

    获取GEO IP数据库

    推荐使用IPdeny提供的免费IP地址库:

    • 每日更新CIDR格式数据
    • 支持249个国家/地区
    • 可直接通过wget/PowerShell下载
    # 中国IP地址库下载地址
    https://www.ipdeny.com/ipblocks/data/countries/cn.zone

    Linux系统实现

    1. 创建封禁脚本

    #!/bin/bash
    # block_cn_ips.sh
    
    # 备份现有规则
    iptables-save > /etc/iptables/backup_$(date +%F).v4
    
    # 初始化规则链
    iptables -F INPUT
    iptables -P INPUT DROP  # 设置默认拒绝策略
    
    # 必要的基础规则
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    
    # 开放SSH端口(关键!防止被锁)
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    
    # 加载封禁列表
    while read -r cidr; do
        iptables -A INPUT -s "$cidr" -j DROP
    done < <(wget -qO- https://www.ipdeny.com/ipblocks/data/countries/cn.zone)
    
    # 保存配置
    iptables-save > /etc/iptables/rules.v4
    systemctl restart iptables  # 适用于systemd系统

    2. 执行脚本

    chmod +x block_cn_ips.sh
    sudo ./block_cn_ips.sh

    3. 验证规则

    # 查看规则命中次数
    sudo iptables -L INPUT -v -n --line-numbers
    
    # 测试中国IP(示例)
    curl --max-time 3 -H 'X-Forwarded-For: 1.2.4.8' https://yourdomain.com

    Windows系统实现

    1. PowerShell封禁脚本

    # block_cn_ips.ps1
    
    # 下载IP列表
    $url = "https://www.ipdeny.com/ipblocks/data/countries/cn.zone"
    $zoneFile = "$env:TEMP\cn_zone_$(Get-Date -Format yyyyMMdd).txt"
    Invoke-WebRequest $url -OutFile $zoneFile
    
    # 批量创建规则
    Get-Content $zoneFile | ForEach-Object {
        $ruleName = "BlockCN_$($_ -replace '/','_')"
        New-NetFirewallRule `
            -DisplayName $ruleName `
            -Direction Inbound `
            -Action Block `
            -RemoteAddress $_ `
            -Description "Auto-generated CN block rule" `
            -ErrorAction SilentlyContinue
    }
    
    # 清理临时文件
    Remove-Item $zoneFile -Force

    2. 执行脚本

    Set-ExecutionPolicy Bypass -Scope Process -Force
    .\block_cn_ips.ps1

    3. 验证配置

    # 查看已创建规则
    Get-NetFirewallRule -DisplayName "BlockCN_*" | Format-Table DisplayName,Enabled
    
    # 测试规则(需安装Test-NetConnection)
    Test-NetConnection -ComputerName YourServerIP -Port 80 -InformationLevel Detailed

    解封操作指南

    Linux解封脚本

    #!/bin/bash
    # unblock_cn_ips.sh
    
    # 下载最新IP列表(可选)
    wget -q https://www.ipdeny.com/ipblocks/data/countries/cn.zone -O /tmp/cn.zone
    
    # 遍历删除规则
    while read -r cidr; do
        iptables -D INPUT -s "$cidr" -j DROP
    done < /tmp/cn.zone
    
    # 恢复默认策略
    iptables -P INPUT ACCEPT
    
    # 保存配置
    iptables-save > /etc/iptables/rules.v4

    Windows解封脚本

    # unblock_cn_ips.ps1
    
    # 获取所有相关规则
    $rules = Get-NetFirewallRule | Where-Object {
        $_.DisplayName -like "BlockCN_*"
    }
    
    # 批量删除规则
    $rules | ForEach-Object {
        Remove-NetFirewallRule -Name $_.Name -Confirm:$false
    }
    
    # 验证删除结果
    Get-NetFirewallRule -DisplayName "BlockCN_*" | Measure-Object

    关键注意事项

    1. 连接安全性

      • 操作前确保本地控制台可用
      • 优先放行SSH/RDP管理端口
      • 建议配置监控告警规则
    2. 性能优化

      # 合并连续CIDR(需安装iprange)
      sudo apt-get install iprange
      sort cn.zone | iprange --merge > cn_merged.zone
    3. 维护建议

      • 设置cron定时更新IP列表

      • 0 0 root /path/to/block_cn_ips.sh

      • 使用IPset优化大批量规则

        ipset create cn_block hash:net
        ipset add cn_block 1.0.1.0/24
        iptables -A INPUT -m set --match-set cn_block src -j DROP
    4. 日志监控

      # 查看被拒请求
      journalctl -k --grep="DROP IN="
    5. 法律合规

      • 遵守当地数据保护法规
      • 在隐私政策中明确说明IP限制
      • 提供申诉解封渠道

    扩展方案对比

    方案优点缺点
    系统防火墙无需额外依赖规则量大时性能下降
    Cloudflare无需服务器配置需要域名托管
    IPset高性能哈希存储需要额外学习成本
    Nginx层控制应用层精准控制影响Web服务性能
    云厂商安全组网络层过滤依赖特定云平台

    主要改进点说明:

    1. 增加操作前的安全备份机制
    2. 优化iptables规则顺序和默认策略
    3. 补充SSH端口放行等安全措施
    4. 添加IP合并和IPset优化方案
    5. 强化法律合规性说明
    6. 增加方案对比表格
    7. 完善验证和监控手段
    8. 提供定时更新和维护建议
    9. 优化脚本的错误处理和日志记录
    10. 增加Windows系统的临时文件管理
    本文著作权归作者 [ 陈十一 ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    网络封锁技术防火墙配置系统安全
    — END —
    Copyright©2012-2026  All Rights Reserved.  Load:0.012 s
    Theme by OneBlog V3.6.5
    夜间模式

    开源不易,请尊重作者版权,保留基本的版权信息。