SmartDNS是一个运行在本地的DNS服务器,SmartDNS接受本地客户端的DNS查询请求,从多个上游DNS服务器获取DNS查询结果,并将访问速度最快的结果返回给客户端,提高网络访问速度。 同时支持指定特定域名IP地址,并高性匹配,达到过滤广告的效果。
详情可见SmartDNS官网
本文主要实现加速访问的效果,暂不考虑其他功能。
SmartDNS安装主要参考上述官网,本文将以OpenWrt luci为例,安装步骤如下:
系统
下的软件包
选项过滤器
中输入smartdns
,点击查找软件包
luci-app-smartdns
,luci-i18n-smartdns-zh-cn
,smartdns
三项大部分openwrt编译版本一般都含有此软件包
见下图:
应注意以下选项:
双栈IP优选
,应注意您的设备是否完全支持IPv6,尤其是您所在的网络运营商是否支持
重定向
,应选择重定向53端口到SmartDNS
,但如果您存在其他涉及DNS的软件,应自行选择
DNS服务器名称 | DNS服务器地址 |
---|---|
阿里 AliDNS | 223.5.5.5 |
百度 BaiduDNS | 180.76.76.76 |
114 DNS | 114.114.114.114 |
腾讯DNS | 119.29.29.29 |
山东联通 | 202.102.128.68 |
Google DNS | 8.8.8.8 |
CloudFlare | 1.1.1.1 |
Quad9 | 9.9.9.9 |
最终效果如下图:
由于SmartDNS具有一般的DNS能力,我们可以在域名地址
中进行指定的域名解析IP。
1 | address /home.lan/192.168.10.50 |
如上述设置的作用是,当访问http://home.lan
时,将解析成192.168.10.50
,即我个人的路由器地址。
在Windows 10中,通过以下步骤完成DNS设置:
点击Windows 设置
下的网络和Internet
选项
点击状态
中的属性
,如下图:
IP设置
,点击编辑
,如下图:IP地址
填入任一未被占用的IP地址,子网前缀
填入32
,网关填入192.168.10.50
,DNS服务器填入192.168.10.50
,点击保存
测试方法1:
打开浏览器,输入http://home.lan
,如果生效可以直接访问到软路由主页
测试方法2:
打开cmd
,输入nslookup baidu.com
,如果设置正确则结果如下图:
]]>配置正确返回的IP地址仅有一个,若返回多个则配置不正确
家庭的基本情况如下:
家庭的主要硬件如下:
联通光猫与接入光纤直接相连,光猫已设置为桥接模式并不进行拨号,功能仅为转换光电信号。
光猫任选一个Lan口,与后端千兆无线路由器的Wan口连接。由于此网线承载这个家庭网络,故应尽可能选择高规格网线,此处我个人选择了六类网线。此处千兆无线路由器主要负责一楼的无线网络。
网线规格表
该表来源于Wikipedia
千兆路由器任选Lan口与斐讯N1软路由连接,再选一个Lan口与二楼的百兆路由器的Lan口使用五类网线相连接。该百兆路由器使用2.4GHz频段,负责二楼与三楼的无线网络。
Wan口设置为PPPoE拨号,PPPoE拨号用户名和密码自行设置。
Lan口IP设置为 192.168.10.1
,子网掩码设置为 255.255.255.0
。
DHCP服务器开启,地址池设置为开始地址为 192.168.1.100
,结束地址为 192.168.1.255
。
注意此处为保证家庭网络位于同一网段,我们需要特殊设置,使路由器启用AP交换机模式。具体内容可参考以下教程。
简单来说,就是放弃Wan口,仅使用Lan口,并在Lan口设置DHCP服务器。Lan口IP设置为 192.168.10.2
,子网掩码设置为 255.255.255.0
。DHCP服务器开启,地址池设置为开始地址为 192.168.1.3
,结束地址为 192.168.1.49
,网关为 192.168.10.1
。
打开软路由器的设置界面,点击“网络”,点击“接口”,修改“br-lan”,各项设置如下图:
注意此处DHCP服务器选择
忽略此接口
家内所有设备位于同一网段并可互相访问,这对软路由器为全家设备服务是很重要的前提。
Openwrt系列教程:使用WireGuard实现VPN访问
Openwrt系列教程:使用Aria2实现离线下载
Openwrt系列教程:使用smb实现共享文件
Openwrt系列教程:使用动态DNS实现动态访问
WireGuard是一个免费的网络通信隧道,它可以让您的私有网络和公共网络之间通过一个隧道,让您的私有网络不会被窃听。一般情况下,我们选择使用Linux服务器自带的iptables实现路由转发,实现私有网络和公共网络之间的通信。但是,在Windows上,尤其是个人Windows计算机上,我们缺乏有效的工具实现路由转发,因此我们很难实现私有网络和公共网络之间的通信。搭建出的WireGuard隧道毫无意义。此教程主要讲解如何使用Windows的NAT实现路由转发,并进一步实现私有网络和公共网络之间的通信。
由于本文主要涉及到Windows的NAT实现路由转发,所以我们仅介绍Windows下的安装方法。此过程较为简单,可自行可以参考WireGuard安装中的介绍。
在后文描述中,我们假定计算机A为服务端,计算机B为客户端。我们需要生成服务端的配置文件,以便计算机B能够连接到服务端后访问公共网络。
我们需要生成服务端的公钥和私钥。打开WireGuard软件,使用 Ctrl+N
快捷键创建新的隧道。
将隧道名称设置为 wg0
,将公钥复制保存到本地。
然后,输入以下配置内容
1 | ListenPort = 55555 |
其中,ListenPort
为隧道监听端口,Address
为隧道的IP地址和子网掩码。此处选择端口55555
进行监听,使用了10.254.0.1/24
的IP地址作为内网IP地址。
/24表示子网掩码为24,即255.255.255.0
最终效果如下图所示:
在计算机B上,我们需要生成客户端的配置文件。与上述服务端配置文件相同,我们需要生成客户端的公钥和私钥,并保存公钥钥到本地。该隧道命名为 wg1
。
然后,输入以下配置内容
1 | Address = 10.254.0.2/32 |
其中,Address
为客户端的IP地址和子网掩码。
注意此处设置IP地址需要与服务器端的IP处于同一网段。
编辑服务端配置文件 wg1
,键入以下内容
1 | [Peer] |
注意替换PublicKey
为计算机B的公钥,AllowedIPs
为计算机B的IP地址。
AllowIPs
为路由的IP地址段,可以设置多个,用逗号分隔。其含义为若服务器接收到此IP地址的数据包,则转发给私有网络。通常是该 Peer 的隧道 IP 地址和通过隧道的路由网络。
编辑客户端配置文件 wg1
,键入以下内容
1 | [Peer] |
注意替换PublicKey
为计算机A的公钥,Endpoint
为计算机A的IP地址,PersistentKeepalive
为保持连接的时间,单位为秒。
AllowedIPs
设置为0.0.0.0/0
的含义为路由此计算机的所有流量至私有网络。
PersistentKeepalive
该参数可不设置,但设置了该参数,则客户端会在每次连接后发送心跳包,保持连接。
打开WireGuard
客户端,选定wg2
为连接的隧道,再点击连接
按钮。
如果连接成功,可以看到对端以及上次握手时间。
如下图:
即使测试连接成功,我们发现客户端仍无法连接入公共网络。原因在于Windows服务端没有流量转发设置。在Liunx上,我们可以通过iptable
等设置流量转发,但在Windows 10上我们缺乏响应的工具。经过测试,我们发现,如果我们设置了NAT转发,则客户端可以连接公共网络。
以下主要内容主要来自微软,如果您的英语水平较高,可以自行查阅。
主要分为以下几个步骤:
以 管理员 身份打开PowerShell
首先找到需要设置NAT转发的网络接口,键入以下命令Get-NetAdapter
,可以找到所有的网络接口,并记录wg0
的ifIndex
。如下图:
配置NAT网关IP,我们一般使用命令New-NetIPAddress
,完整命令如下:
1 | New-NetIPAddress -IPAddress <NAT Gateway IP> -PrefixLength <NAT Subnet Prefix Length> -InterfaceIndex <ifIndex> |
<NAT Gateway IP>
替换为NAT网关IP地址,在上述操作中为10.254.0.1
<NAT Subnet Prefix Length>
为NAT网关的子网掩码长度,在上述操作中为24
<ifIndex>
为wg0
的ifIndex
1 | New-NetNat -Name <NATOutsideName> -InternalIPInterfaceAddressPrefix <NAT subnet prefix> |
<NATOutsideName>
为NAT网关的名称,可随意命名
<NAT subnet prefix>
为NAT网关的子网掩码长度,在上述操作中为10.254.0.0/24
完整命令执行图如下:
使用客户端连接服务端,访问任一外部网络资源,如可成功访问则证明NAT转发成功。
以安卓客户端为例,展示效果:
使用 Wireguard 前,网络 IP 为中国移动,如下图
使用 Wireguard 链接 windows 客户端后,网络 IP 显示为 windows 的联通 IP ,如下图
]]>1 | $ hexo new "My New Post" |
More info: Writing
1 | $ hexo server |
More info: Server
1 | $ hexo generate |
More info: Generating
1 | $ hexo deploy |
More info: Deployment
]]>