旁路由的好处在于,即使旁路由挂了,也不影响主路由正常上网。设备接入旁路由之后,自动获取IP,可以享受广告过滤以及特殊上网需求。
接入的设备,如果有特殊的需要,比如广告过滤,就需要把当前的接入设备手动设置网关和DNS为旁路由的IP。
路由设置参考官网:https://oldwiki.archive.openwrt.org/doc/recipes/routedap
默认GFW不能生效,是因为没搞清楚本地dns设置,如果正确设置好本地dns,网上教程大概率是不能生效的。
在干净openwrt上做实验,本地服务器127.0.0.1么有配置好文件,在lan口interface指定本地服务器做自定义的dns服务器就不能上网。
本地服务器dns配置:
1.interface-lan:使用自定义的 DNS 服务器:127.0.0.1 #如果要进行安装联网,只需要改成上游路由器的dns解析即可。
2.DHCP/DNS:本地服务器:127.0.0.1
DNS转发:114.114.114.114 #在进行densmasq-full设置时候需要取消这里的dns转发,不然的话/etc/config目录下dhcp文件中有list server ‘114.114.114.114’。这样的话/etc/dnsmasq.d目录下的配置文件不起作用。
如此这般,设置本地dns服务器后,可正常解析域名。
dnsmasq-full设置
以下是测试,了解dnsmasq如何对DNS请求区别对待的。
修改/etc/dnsmasq.conf,最后添加conf-dir=/etc/dnsmasq.d,然后新建/etc/dnsmasq.d目录并添加配置文件dns_test.conf,该目录下可以添加多个配置文件。
添加如下测试样例:对于域名为baidu.com相关的DNS请求,转发到服务器8.8.8.8的53端口进行查询,并将查询的结果返回给查询者,同时也将查询结果加入ipset中
每次修改配置文件后,执行命令/etc/init.d/dnsmasq restart重启dnsmasq服务!
server=/baidu.com/8.8.8.8#53
server=/taobao.com/114.114.114.114#53
server=/qq.com/8.8.4.4#53
server=/google.com/127.0.0.1#5300
address=/msy.com/192.168.0.1
通过对配置文件dns_test.conf进行配置,可对baidu,taobao,qq进行配置#,可以对DNS请求进行区别对待了。比如#qq那行,那ping qq.com就不能域名解析。
常用命令:
/etc/init.d/dnsmasq restart
查看本机的 DNS 配置:
cat /etc/resolv.conf
查看 dnsmasq 配置:
cat /etc/dnsmasq.conf
conf-dir=/etc/dnsmasq.d
dnsmasq --test
显示活动中连接
netstat -lptn
有几个坑需要注意:
1、设置dns相关配置,有可能不起作用,是因为dns有缓存,需要重启就好啦。
2.dnsmasq-full安装非常重要,否则dhcp服务和dns服务都将不能使用,dnsmasq.d下配置的脚本也将不能识别,从而导致dnsmasq出错,路由器将不能联网和正常dns解析,切记dnsmasq-full必须安装成功。
执行:opkg remove dnsmasq && opkg install dnsmasq-full,切记此时openwrt的dns服务器应设在上游网关处。因为remove后本地服务器dns不可用,也就不要解析安装dnsmasq-full。
3.network-DHCP/DNS:本地DNS 服务器:127.0.0.1 #5300,必须加#5300,5300与dns转发的local port的要一致。DNS forwardings空着。
4.以上dhcp等服务更新配置后,最好都需要/etc/init.d/xxx restart下。
5…测试GFW是否生效?不要试图在openwrt下去ping,一定要用把网关和dns设置成openwrt的ip地址去测试。
dnsmasq的简介
Dnsmasq 提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。作为DHCP 服务器,dnsmasq 可以用于为局域网电脑分配内网ip地址和提供路由。DNS和DHCP两个功能可以同时或分别单独实现。dnsmasq轻量且易配置,适用于个人用户或少于50台主机的网络。此外它还自带了一个 PXE 服务器。
dnsmasq的解析流程
当接受到一个DNS请求时,Dnsmasq首先会查找/etc/hosts这个文件, 再去解析/etc/dnsmasq.d/下的*.conf文件,并且这些文件的优先级要高于dnsmasq.conf,我们自定义的resolv.dnsmasq.conf中的DNS也被称为上游DNS,这是最后去查询解析的;
DNS劫持:
修改已经安装Dnsmasq的服务器Hosts文件:/etc/hosts,指定域名到特定的IP中。例如想让局域网中的所有用户访问www.msy.com时跳转到192.168.0.2,添加:
192.168.0.2 www.sh.com