VPS屏蔽指定国家IP访问的技巧!
通过 iptables
阻止区域 IP 的同时,确保能够通过 SSH 从中国访问你的服务器。
步骤 1:安装 ipset
和 iptables
首先确保服务器上安装了 ipset
和 iptables
。
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
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:保存 iptables
和 ipset
规则
为了在服务器重启后仍然有效,需要保存 iptables
和 ipset
规则。
(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 的规则在阻止中国 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
总结
- 安装并配置
ipset
和iptables
。 - 导入中国 IP 地址段到
ipset
集合。 - 配置
iptables
规则,确保允许 SSH 访问,同时阻止来自中国 IP 的其他连接。 - 保存规则并确保它们在重启后仍然有效。
- 验证设置,确保 SSH 规则优先执行,避免锁死自己。