不久以前,是直接修改
/etc/resolv.conf
文件来修改DNS服务器配置的。
起
接到云服务器商的电话推销,在HK区新释放了一批自建路线的IP资源,更好更快更强,可以申请用来替换现有IP资源。鄙人应和之后,丢在一边。
隔两日,又接到电话通知,这次直言旧IP需要升级维护,吧啦吧啦一通之后,我明白了一个事实:旧的IP在15号之前需要更换,不然可能就无法使用了。
在两通负责任的电话通知(实际上是谈心)之后。我明白了一定得进行操作,不能偷懒了。
旧的服务器使用的IP已平平安安用了两年,账户余额已经不多,还是Ubuntu上个LTS的xenial
系统。
既然操作无可避免,那么不如去新的区域整一个新的系统,体验新的bionic
(其实这把申请一个新的动态IP,绑定资源,释放旧的IP,这个简单的操作变复杂了)。
于是乎,我开始了新的系统体验。
承
感谢平时用ansible
脚本化部署的好习惯。简单的点击加上命令行,新机器很快就创建出来。
服务器在香港的主要原因是为了必须的科学上网,SS服务是必不可少的。
新环境,特意用了Go版本的,替换之前一直使用的Python原版的server端。
部署好了该有的服务,连接成功。一番测试,延迟低,网速快,一切是那么的美好。
转
时不时的,某G开头的搜索引擎会无法使用,但是过一会儿又会变好。
家里网络环境最近也是不太稳定,没有在意。
在又一次连接失败之后,我看了下浏览器提示的错误信息,发现问题了。
“SSL证书不匹配“
访问某G网站,返回的某F网站的SSL证书。根据当前的IP地址反查,的确此IP对应的是某F网站。
所以去G家的请求,为什么会拿到F家的证书?为什么时好时坏?脑中闪过了600
这个数字,DNS服务器有污染。
主机位于祖国香港,理论上应该不会走国内的DNS服务器。但是现在事实上DNS有概率被污染,事实胜于雄辩,强制使用不受污染的DNS Server应该能解决问题。
Python版的SS服务支持设置dns_server
参数指定服务器,很遗憾我现在用了Go版本的。查看了一下项目代码,好像并不支持在参数里面设置DNS服务器。转而考虑设置系统的DNS服务。
不久以前,是直接修改
/etc/resolv.conf
文件来修改DNS服务器配置的。
打开/etc/resolv.conf
,按照经验,两行nameserver
就能解决问题。但迎接我的是
1 | This file is managed by man:systemd-resolved(8). Do not edit. |
/etc/resolv.conf
实际上软链到了/run/systemd/resolve/stub-resolv.conf
。
这意味着直接修改的话,重启估计就没了。systemd-resolved(8)
又是什么东西?
Google 一下,按顺序追踪:
archlinux
的资料 https://wiki.archlinux.org/index.php/Systemd-resolved- 阅读1,来到了 https://jlk.fjfi.cvut.cz/arch/manpages/man/core/systemd/systemd-resolved.8.en 。其中有描述:
See resolved.conf(5) and systemd.network(5) for details about systemd’s own configuration files for DNS servers. - 阅读2,来到了 https://jlk.fjfi.cvut.cz/arch/manpages/man/resolved.conf.5.en
- 阅读3,基本看懂了现在的
systemd-resolved
该怎么配置。 vim /etc/systemd/resolved.conf
,在[Resolve]
块,设置DNS=8.8.8.8 8.8.4.4
。- 重启服务,
sudo service systemd-resolved restart
合
执行systemd-resolve --status
,可以看到现在的配置,已经更新成8.8.8.8
这个全球稳定的服务。
1 | Global |
意外看到了以前的DNS Server 列表。其中包含有国内的114.114.114.114
,这个对于某G的IP肯定是被污染的。
以前看到某些网络攻击,是污染DNS指向攻击目标,形成DDOS。现在和平年代,干起了G和F互换的骚操作。佩服佩服。
Cloudflare 旗下的1.1.1.1
号称比8.8.8.8
更快,以后可以尝试。多一个可用的选择,厂商存在着竞争,总归是一件好事情。