当前位置: 首页 > news >正文

debian12拒绝海外ip连接

确保 nftables 已安装: Debian 12 默认使用 nftables 作为防火墙框架。检查是否安装:

sudo apt update
sudo apt install nftables

启用并启动 nftables 服务

sudo systemctl enable nftables
sudo systemctl start nftables

下载maxmind数据库
在这里插入图片描述
将文件解压后放在任意目录
在这里插入图片描述

# 备份 nftables.conf
sudo cp /etc/nftables.conf /etc/nftables.conf.bak# 清空所有规则
sudo nft flush ruleset# 停止服务
sudo systemctl stop nftables删除原配置文件
sudo rm -rf /etc/nftables.conf修改配置文件
sudo vim  /etc/nftables.conf

修改后配置文件如下

#!/usr/sbin/nft -fflush rulesettable inet filter {# 定义中国大陆 IPv4 地址集合set cn_ips {type ipv4_addrflags interval#CN_IPV4_ELEMENTS#}# 定义中国大陆 IPv6 地址集合set cn_ips6 {type ipv6_addrflags interval#CN_IPV6_ELEMENTS#}# 定义局域网 IPv4 地址集合set lan_ips {type ipv4_addrflags intervalelements = { 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12 }  # 替换为你的局域网范围}# 定义局域网 IPv6 地址集合set lan_ips6 {type ipv6_addrflags intervalelements = { fc00::/7 }  # 替换为你的局域网 IPv6 范围}chain input {type filter hook input priority 0; policy drop;# 允许本地回环接口iifname "lo" accept# 允许已建立和相关的连接ct state established,related accept# 允许局域网 IPv4 访问ip saddr @lan_ips accept# 允许局域网 IPv6 访问ip6 saddr @lan_ips6 accept# 允许中国大陆 IPv4 地址访问ip saddr @cn_ips accept# 允许中国大陆 IPv6 地址访问ip6 saddr @cn_ips6 accept# 记录被拒绝的连接(可选)log prefix "[nftables] Blocked: " flags all counter drop# 拒绝所有其他连接counter drop}chain output {type filter hook output priority 0; policy accept;}chain forward {type filter hook forward priority 0; policy drop;}
}

创建替换ip的脚本

sudo vim update_nftables.sh

脚本内容

#!/bin/bash# 提取中国大陆 IPv4 地址
grep '1814991' GeoLite2-Country-Blocks-IPv4.csv | awk -F',' '{print $1}' > cn_ipv4.txt# 提取中国大陆 IPv6 地址
grep '1814991' GeoLite2-Country-Blocks-IPv6.csv | awk -F',' '{print $1}' > cn_ipv6.txt# 转换为 nftables 集合格式(IPv4)
echo "elements = {" > cn_ipv4_nft.txt
awk '{print $1","}' cn_ipv4.txt >> cn_ipv4_nft.txt
echo "}" >> cn_ipv4_nft.txt# 转换为 nftables 集合格式(IPv6)
echo "elements = {" > cn_ipv6_nft.txt
awk '{print $1","}' cn_ipv6.txt >> cn_ipv6_nft.txt
echo "}" >> cn_ipv6_nft.txt# 使用 sed 替换 IPv4 占位符
sudo sed -i '/#CN_IPV4_ELEMENTS#/r cn_ipv4_nft.txt' /etc/nftables.conf
sudo sed -i 's/#CN_IPV4_ELEMENTS#//' /etc/nftables.conf# 使用 sed 替换 IPv6 占位符
sudo sed -i '/#CN_IPV6_ELEMENTS#/r cn_ipv6_nft.txt' /etc/nftables.conf
sudo sed -i 's/#CN_IPV6_ELEMENTS#//' /etc/nftables.conf# 应用规则
sudo nft -f /etc/nftables.conf
# 清理文件
sudo rm cn_ipv4.txt cn_ipv4_nft.txt cn_ipv6.txt cn_ipv6_nft.txt

给权限

sudo chmod +x update_nftables.sh

执行脚本

sudo ./update_nftables.sh

检查规则

sudo nft list ruleset

查看被拒绝的信息

查看系统日志文件
sudo grep "\[nftables\] Blocked:" /var/log/syslog

示例输出:

Jun  8 22:30:45 hostname kernel: [nftables] Blocked: IN=eth0 OUT= MAC=... SRC=203.0.113.1 DST=192.168.1.100 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=12345 PROTO=TCP SPT=54321 DPT=22 WINDOW=65535 RES=0x00 SYN URGP=0

解释:

  • SRC=203.0.113.1:源 IP(被拒绝的外部 IP)。
  • DST=192.168.1.100:目标 IP(你的服务器)。
  • PROTO=TCP:协议类型。
  • SPT=54321 DPT=22:源端口和目标端口(例如,尝试访问 SSH 的 22 端口)。
  • IN=eth0:入站接口。

实时监控日志: 使用 tail 实时查看新记录的被拒绝连接:

sudo tail -f /var/log/syslog | grep "\[nftables\] Blocked:"

过滤特定信息: 如果日志量大,可以提取特定字段(如源 IP)

sudo grep "\[nftables\] Blocked:" /var/log/syslog | awk '{print $8}' | sort | uniq

这会提取被拒绝的源 IP(SRC=…)并去重。

查看 nftables 计数器
   sudo nft list ruleset
示例输出:
 table inet filter {chain input {type filter hook input priority 0; policy drop;iifname "lo" acceptct state established,related acceptip saddr @lan_ips acceptip6 saddr @lan_ips6 acceptip saddr @cn_ips acceptip6 saddr @cn_ips6 acceptlog prefix "[nftables] Blocked: " flags all counter packets 123 bytes 4560 dropcounter packets 123 bytes 4560 drop}
...
}
  • counter packets 123 bytes 4560 drop:表示有 123 个数据包(共 4560 字节)被拒绝。
  • packets:被拒绝的数据包数量。
  • bytes:被拒绝的数据总字节数。

相关文章:

  • DHCP / DHCPv6 原理 / 报文解析 / 配置示例
  • 对比传统引擎,Unity3D 在生产配套中的独特优势
  • 前端打包工具简单介绍
  • 前端知识导图
  • Spring Boot中Bean注入方式对比与最佳实践
  • webpack其余配置
  • 详解鸿蒙Next仓颉开发语言中的动画
  • RabbitMQ入门
  • 大数据+智能零售:数字化变革下的“智慧新零售”密码
  • 【Docker 02】Docker 安装
  • 【Mac 从 0 到 1 保姆级配置教程 16】- Docker 快速安装配置、常用命令以及实际项目演示
  • Maven入门(够用)
  • windows10下搭建nfs服务器
  • Maven的使用
  • maven 1.0.0idea的使用说明
  • amd64 -- buildx linux 镜像 Docker docker
  • 0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
  • 大数据治理的常见方式
  • uniapp跳转到webview组件的时候,要注意:移除所有不可见字符(包括零宽空格)
  • Fetch API 使用详解:Bearer Token 与 localStorage 实践
  • 免费ppt模板在线下载/seo内容优化方法
  • 东道设计学院/seo是什么品牌
  • pc做网站服务器吗/新网站seo外包
  • 新闻网站开发课程设计模板/淘宝seo是什么
  • 北京网站制作公司哪家好/快手刷评论推广网站
  • 网络广告营销概念/优化师和运营区别