VPN下访问内网域名服务

最近因某原因,我的SS集体阵亡,只能换方案了。没招,决定用公司VPN,但内网域名服务却无法访问了。

so,开始了解决之路。

VPN下内网域名服务为何不起作用

为了找到解决之路,先搞明白,为什么VPN下内网域名服务不可用。

我们就拿如何上谷歌来举例子,我们请求代理服务器,代理服务器帮我们解析域名请求找到对应IP,进而请求谷歌服务器,拿到请求结果,返回给我们。so,问题出现在代理服务器肯定解析不出我们的内网域名服务IP。so.问题的关键点在,如何让这些请求不走VPN代理?

办法就在hosts文件。

hosts文件

hosts文件(域名解析文件[1])是一个用于储存计算机网络中各节点信息的计算机文件。这个文件负责将主机名称映射到相应的IP地址。hosts文件通常用于补充或取代网络中DNS的功能。和DNS不同的是,计算机的用户可以直接对hosts文件进行控制。

打开hosts文件会看到一条记录

1
127.0.0.1 localhost

搞开发的应该很熟悉,我们经常localhost访问本地WEB项目,其实这个就是域名。假如这个请求在各级DNS也解析不到IP吧。那怎么没事呢,就是因为这里有这条记录,但同时是不是也说明DNS查询优先级低于hosts呢,是的!

hosts文件 VS DNS查询优先级

hosts文件仍然保留在操作系统中,hosts文件的优先级高于DNS查询。操作系统首先会在hosts文件中找域名对应的IP地址,没有找到它才会去问DNS服务器。

解决办法

搞明白了这些,就可以把内网域名服务及IP编辑下了。这里推荐一款APP-iHosts.对于我,只需要在公司开VPN的情况下执行这些host配置。so需要一款App来帮我分组和灵活开关这些设置。

查询域名对应IP

终端执行ping命令,如图即为baidu的公网IP

私有IP区段

TCP/IP协议中,保留了三个IP地址区域作为私有地址:

  • 10.0.0.0/8:10.0.0.0~10.255.255.255
  • 172.16.0.0/12:172.16.0.0~172.31.255.255
  • 192.168.0.0/16:192.168.0.0~192.168.255.255

写在最后

虽然没有了SS,但利用公司的稳定VPN,至少保证还能谷歌,也算是不影响正常工作生活了。

参考文档