VPS屏蔽指定国家IP访问的技巧!

通过 iptables 阻止区域 IP 的同时,确保能够通过 SSH 从中国访问你的服务器。

步骤 1:安装 ipsetiptables

首先确保服务器上安装了 ipsetiptables

CentOS/RedHat:

sudo yum install ipset iptables-services

Ubuntu/Debian:

sudo apt-get install ipset iptables iptables-persistent

步骤 2:下载中国的 IP 段

       1.创建存放 IP 地址段的目录

sudo mkdir -p /etc/ipset

      2.下载中国的 IP 段文件: 使用以下命令从 IP 数据库下载中国的 IP 段:

wget -O /etc/ipset/china.zone https://www.ipverse.net/ipblocks/data/countries/cn.zone

步骤 3:创建 ipset 集合并导入中国 IP

 

     1.创建一个 ipset 集合来存储中国的 IP 地址
sudo ipset create china hash:net

     2.将下载的中国 IP 地址导入到 ipset 集合中

for ip in $(cat /etc/ipset/china.zone); do sudo ipset add china $ip; done

步骤 4:配置 iptables 规则

(1)允许 SSH 访问

为了确保你能通过 SSH 访问服务器,先添加允许 SSH 端口(默认端口 22)访问的规则:

sudo iptables -I INPUT -p tcp --dport 22 -j ACCEPT

注意:如果你的 SSH 使用的是自定义端口,请将 22 替换为你实际的 SSH 端口。

(2)阻止所有其他来自中国 IP 的连接

然后添加阻止中国 IP 的规则,确保它在允许 SSH 规则之后执行:

sudo iptables -I INPUT -m set --match-set china src -j DROP

步骤 5:保存 iptablesipset 规则

为了在服务器重启后仍然有效,需要保存 iptablesipset 规则。

(1)保存 ipset 集合

ipset 集合保存到文件中,以便重启后恢复:

sudo ipset save > /etc/ipset.conf

(2)保存 iptables 规则

  • CentOS/RedHat:
sudo service iptables save
  • Ubuntu/Debian: 使用 iptables-persistent 保存规则:
sudo netfilter-persistent save

(3)确保 ipset 在启动时恢复

编辑 /etc/rc.local 文件,确保系统启动时恢复 ipset 规则:

sudo nano /etc/rc.local

在文件末尾添加以下行:

ipset restore < /etc/ipset.conf
保存并退出(按 CTRL + X,然后按 Y 确认保存)。

步骤 6:验证设置

     1.检查 ipset 集合: 使用以下命令验证 ipset 集合是否正确加载了中国的 IP 地址段:

sudo ipset list china

     2.检查 iptables 规则: 使用以下命令检查 iptables 规则是否设置正确,确保允许 SSH 规则在前:

sudo iptables -L --line-numbers

你应该看到允许 SSH 的规则在阻止中国 IP 的规则之前。

如果你的ssh规则在屏蔽规则之后,那你的ssh就连接不上去。调整下规则!

解决方案:

我们需要调整规则顺序,让允许 SSH 的规则在阻止中国 IP 的规则之前。

步骤 1:删除第 1 条阻止中国 IP 的规则

首先删除阻止中国 IP 的规则(即第 1 条规则):

sudo iptables -D INPUT 1

步骤 2:重新插入阻止中国 IP 的规则

然后,将阻止中国 IP 的规则重新插入到第 2 条规则之后(也就是 SSH 规则之后),确保 SSH 端口优先处理:

sudo iptables -A INPUT -m set --match-set china src -j DROP

这样会将阻止中国 IP 的规则放在链的末尾,而不是优先执行。

步骤 3:保存修改的规则

确保规则在重启后依然有效,保存 iptables 配置。

  • CentOS/RedHat:
sudo service iptables save
  • Ubuntu/Debian:
sudo netfilter-persistent save

步骤 4:验证规则顺序

重新列出 iptables 规则,确保允许 SSH 的规则在阻止中国 IP 的规则之前:

sudo iptables -L INPUT --line-numbers

总结

  1. 安装并配置 ipsetiptables
  2. 导入中国 IP 地址段到 ipset 集合。
  3. 配置 iptables 规则,确保允许 SSH 访问,同时阻止来自中国 IP 的其他连接。
  4. 保存规则并确保它们在重启后仍然有效。
  5. 验证设置,确保 SSH 规则优先执行,避免锁死自己。
阅读剩余
THE END