服务器如何设置只允许中国ip访问

这是一个非常有效的安全策略,可以瞬间屏蔽掉来自全球95%以上的恶意扫描和自动化攻击。实现这一目标,主要依赖于防火墙和IP地址库。
以下是针对最常见的Linux(以CentOS为例)和Windows Server系统的实操指南。
核心思路:
- 获取一份最新的、包含所有中国IP地址段的列表。
- 配置服务器的防火墙,设置默认规则为“拒绝所有”入站连接。
- 在默认规则之上,添加“允许”规则,放行来自中国IP地址列表中的所有IP。
- (可选但推荐)再添加一条规则,永久放行您自己的办公或家庭网络的IP地址,以防万一。
实战操作:Linux (CentOS / RHEL 使用 firewalld + ipset)
这是在Linux上最高效、最推荐的方法。ipset可以一次性处理数万条IP规则,性能远高于逐条添加iptables规则。
第一步:安装 ipset
yum install ipset -y
第二步:下载最新的中国IP地址列表
您可以从多个开源项目中获取,例如 ipip.net 或 github上的项目。
# 从ipip.net下载CIDR格式的IP列表
wget -O /root/china_ip_list.txt https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt
第三步:创建并导入IP列表到 ipset
# 创建一个名为 "cnip" 的 ipset 集合
ipset create cnip hash:net
# 循环读取IP列表文件,并将每个IP段添加到 "cnip" 集合中
for i in $(cat /root/china_ip_list.txt); do ipset add cnip $i; done
这个过程可能需要几分钟,因为它需要处理大量的IP段。
第四步:配置 firewalld 防火墙规则
# 将 "cnip" 集合加入到 "public"区域(或者您正在使用的区域)
firewall-cmd --permanent --zone=public --add-source=ipset:cnip
# (非常重要)设置默认区域的规则为拒绝所有连接
# 注意:这会断开所有非中国IP的连接,包括您自己!请先确保您的IP在中国列表内,或已单独放行。
# firewall-cmd --set-default-zone=drop (这是一个更安全的设置,但操作前需谨慎)
# 重载防火墙使配置生效
firewall-cmd --reload
现在,您的服务器就只接受来自cnip集合中的IP地址的连接了。
实战操作:Windows Server
Windows Server没有类似ipset的便捷工具,通常需要通过PowerShell脚本来批量添加防火墙规则。
第一步:下载最新的中国IP地址列表
同样,先下载china_ip_list.txt文件,并将其放置在例如 C: 目录下。
第二步:使用 PowerShell 脚本批量添加规则
- 以管理员身份打开 PowerShell。
- 执行以下脚本:
# 创建一个新的防火墙规则,默认阻止所有入站连接(这是一个可选但更安全的步骤)
# New-NetFirewallRule -DisplayName "Block All Inbound" -Direction Inbound -Action Block
# 读取IP列表文件,为每个IP段创建“允许”规则
$ipList = Get-Content -Path "C:china_ip_list.txt"
foreach ($ip in $ipList) {
New-NetFirewallRule -DisplayName "Allow China IP - $ip" -Direction Inbound -Action Allow -RemoteAddress $ip
}
注意:在Windows上为数万个IP段逐一创建规则,可能会导致防火墙管理界面变得非常卡顿,且性能不如Linux的ipset方案。
更优的替代方案:使用硬件防火墙或云安全组
- 云服务器:如果您使用的是阿里云、恒创科技等云服务器,最佳实践是使用其**“安全组”**功能。您可以将中国IP地址段批量添加到安全组规则中,性能和管理都比在操作系统内部配置要好得多。
- -物理服务器:如果有条件,在服务器前端部署一台专业的硬件防火墙,在硬件层面进行IP过滤,效果最好。
FAQ 常见问题大全
问:这样设置后,会影响网站被Google等海外搜索引擎收录吗?
答:会的,而且是严重影响。Google的爬虫服务器遍布全球,如果您只允许中国IP访问,Googlebot将无法抓取您的网站,导致您的网站在Google上失去排名。此策略仅适用于那些确认100%不需要海外用户和海外搜索引擎流量的业务。
问:IP地址库会更新,我需要手动更新吗?
答:是的。IP地址段会随着时间发生变化。建议您每个月或每个季度,重新下载最新的IP列表,并执行一次脚本来更新您的防火墙规则。
问:我只想限制SSH/RDP等管理端口,而不是所有端口,可以吗?
答:完全可以,而且是更常见的做法。您可以在添加防火墙规则时,指定具体的端口号。例如,在Linux的firewall-cmd命令中加入--add-port=22/tcp参数,即可只对22端口应用此IP白名单策略。
问:这个方法能防御所有攻击吗?
答:不能。它能防御来自国外的自动化扫描和攻击,但无法防御来自中国国内的攻击,也无法防御DDoS攻击。它是一个有效的安全加固措施,但不能替代专业的DDoS防护和Web应用防火墙(WAF)。







