1. 介绍

方案适合技术新手,同时博客网站内容发布是面向国内群体。

可以通过域名解析商进行拦截国外Ip地址的访问。

例如:本站主要是面向国内中文群体,进行分享相关知识。

近期通过nginx中的日志发现有大量的来自国外ip的攻击访问。我们如果采用防火墙进行拦截ip又比较繁琐。

不管是什么样的手动防护,都避免不了被攻击。

最终,总结了一下。国内也有各种自动攻击的。但是更多的还是国外ip的访问。

所以,就思考有没有办法直接封禁呢?

有,而且方法比较简单。

2. 阿里云DNS解析

首先通过阿里云工作台,访问云解析DNS 功能。然后找到你需要限制的域名,进行解析配置的添加

点击上图中的:添加记录按钮。

首先,配置记录类型:A, 主机记录:* 代表所有的包括域名下的二级域名等等。

最主要的是解析请求来源和记录值这两个参数。

我们选择:境外

所有的中国内地以外的地区和国家访问我们的域名时,都会直接指向下面填写的记录值的地址。

2.1 解释

稍微解释一下请求来源和记录值的关系。

所有的域名地址,最终都是通过DNS服务器指向一个具体的IP地址的。

而我们在这里配置的各种参数,就是在告诉DNS服务器,如果有人访问我们的域名。那么你应该给它返回什么样的ip。

而记录值就是要返回的ip了。

例如,配置所有境外ip的访问时,我们将域名指定到127.0.0.1 这个ip地址。这个ip地址是所有电脑的本地ip地址。

也就是说所有国外访问我们的域名,最终都会访问到它的本机上去。

PS1:你也可以通过这里,让访问者访问到其他的服务器中。根据大家的实际需求进行调整。

当我们配置完毕后,执行保存。就可以了。

PS2:配置完毕之后,根据实际使用经验来说。并不是10分钟之后,全球所有境外访问的ip都指向我们定义的地址了。

而是会有一个逐步更新的过程。毕竟服务器更新同步,是需要时间的。特别是这种dns配置的刷新。所以,多等一段时间,

就我个人体验来说,过了两天nginx日志中还是会收到国外ip的访问。但是可以明显感觉到减少了。

3. 其他

当我们配置国外ip访问域名禁止之后。请注意如果对方直接通过ip还是能够访问我们的服务器的。

这个时候,我们可以通过nginx进行过滤,将所有ip地址的访问直接返回404或444。具体的可以参考我的文章:

Nginx 配置,禁止通过ip地址直接访问Web 服务

3.1 记录类型

扩展一下,我们在添加dns记录类型的时候,会有很多种选择:

只需要把握一个核心观点,不管是什么样的记录,目标都是将用户访问我们的域名时,引导到具体的服务器去处理。

而不同的记录类型, 它影响的是记录值的类型和参数格式。

  • A:将域名指向一个IPV4地址。就是配置该记录类型后,我们在下面添加记录值的时候,只能是填写一个ipv4的地址
  • CNAME:将域名指向另外一个域名。通常就是cdn服务等,对方访问的是我们的域名地址,但是实际数据是需要第三方服务商提供的,例如oss,cdn等等。
  • AAAA:将域名指向一个IPV6地址。我们如果有一个ipv6的服务器地址,那么就需要配置这个选项,将域名引导到ipv6的服务器上去。
  • NS:将子域名指向其他DNS服务器解析。我们可以将二级域名等其他子域名,指定由巨团体的DNS服务器进行解析。(个人用的比较少)
  • MX:将域名指向邮件服务器地址。通常搭建邮件服务器的时候会用到,现在个人用的比较少。
  • SRV:提供特定的服务的服务器。其实就是通过该标识记录了服务器都提供了哪些服务信息,一般是为Microsoft的活动目录设置时的应用。(特殊服务器配置比较多,个人较少)
  • TXT:文本记录类型,长度限制512,通常做SPF记录。常见的情况下是各种厂商需要验证我们域名是否属于本人时,进行添加的txt记录。不会影响域名的正常访问。
  • CAA:CA证书颁发机构授权校验。和txt是类似的,但是是CA证书进行域名认证检测使用的。(个人可以暂时忽略,不影响)
  • 显性URL:将域名重定向到另外一个地址。例如我们想将所有访问某个二级域名的请求,重定向到其他域名,就可以直接使用这个配置。而不用通过nginx等软件的重定向功能。
  • 隐性URL:将域名重定向到另外一个地址,但是会隐藏真实目标地址。和显性URL不一样,就是重定向的时候,不会告诉访问者你现在访问的是哪个url而已。