至此,一个鱼与熊掌不可兼得的问题出现了,使用微软的DNS可以快速访问微软服务,但访问部分国内站点有问题;使用国内运营商的DNS,国内站点访问正常,但是微软等部分国外站点访问有问题。于是心中涌现出一个疑问,有没有一个解决方案,可以在访问国外站点的时候,使用微软的DNS服务器,而访问国内站点的时候使用运营商的DNS呢,终于皇天不负有心人,这个方案还真被我找到了。
方案的基本思路是,在Linux系统上通过DNSmasq,自己搭建一个DNS服务器,而DNSmasq允许为不同的域名配置不同的DNS服务器,这样就完美解决了我的问题。DNSmasq是一个非常小巧的开源软件,提供DHCP、DNS以及TFTP等很多功能,正因为其小巧、且功能强大,Openwrt系统采用它来作为DHCP及DNS服务器,而恰好笔者在网上有这么一台Openwrt的服务器。Openwrt因为采用了图形化的配置方式,因此完成上述功能的配置也非常的简单,具体见下图:

图中,关键设置的部分已经用红框标出,其中,“DNS转发”设置就是为不同的域名设置不同的解析服务器。因为笔者是希望面向外网提供DNS服务,因此“仅本地服务器”选项并未勾选。
做完上述配置后,只需要将系统的DNS服务器指向openwrt服务器就大功告成了。需要提醒的是:
如果像笔者一样,需要从外网访问DNS服务器,则需要打开openwrt的防火墙,允许从外网接口,访问TCP、UDP协议的53号端口;如果openwrt服务器本身就是局域网的出口路由器,则不需要上述防护墙的设置。
有关在Linux系统上dnsmasq的安装和配置的信息,网络上有很多,这里不再赘述,有兴趣的读者可以自行搜索。
更进一步,这个方法虽然可以解决我的问题,但是毕竟需要另外一台机器充当dns服务器,不是每个人都像笔者一样,恰好在公网上有一台可以用于折腾的openwrt服务器。为此,笔者正在考虑自己写一个简单的DNS服务器,并注册成为系统服务,随系统启动而自动启动,幸运的是网络上有开源的DNS空间库:ARSoftToolsNet,在该库的基础上,笔者只需要编写代码将其封装成为windows系统服务就行了,工作量应该很小。1 安装Webdav服务器
首先,在OpenWrt系统上安装Webdav服务器,在OpenWrt的终端中输入以下命令:
opkg update
opkg install webdav
2 配置Webdav服务器
打开Webdav服务器的配置文件/etc/config/webdav,将其中的option enabled设置为‘1’,即
option enabled '1'
保存文件,然后重启Webdav服务器:
/etc/initd/webdav restart
3 设置Webdav访问权限
要设置Webdav访问权限,需要编辑/etc/config/webdav文件,在文件中添加以下行:
option users 'user1:password1, user2:password2'
其中user1和user2是Webdav用户名,password1和password2是对应的密码。
保存文件,然后重启Webdav服务器:
/etc/initd/webdav restart
4 连接Webdav
在客户端上,使用Webdav用户名和密码连接Webdav服务器。具体步骤如下:
(1)打开文件管理器,在地址栏中输入以下地址:
webdav://ip_address:port/
其中ip_address是OpenWrt的IP地址,port是Webdav服务器的端口号(默认为80)。
(2)输入Webdav用户名和密码,即可登录Webdav服务器。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)