软件路由中的dnsmasq的用途

LEDE OpenWRT中 luci-app-turboacc 组件有几个功能分别是

  • 流量分载 (用处不大,我的是x86的,对CPU不行的路由器有作用,对CPU够用的就没有什么用处了)
  • 全锥型NAT (打游戏有作用,对UDP协议有一定的效果)
  • BBR 拥塞控制算法 (对开启上行流量的有作用)
  • DNS缓存 (基本没用)

为什么说这个DNS缓存没啥用处呢?因为OpenWRT本身就有dnsmasq,我个人觉得,有了这个就够用了,我简单介绍一下,我是如何使用dnsmasq的

DNS缓存

这个功能是默认就有的,不用多说,唯一的,你可以调整cache size,会调的就调一下,不会的也没关系

内网和外网解析地址不同

我在家里有一个网盘,出门在外需要解析成家里出口的公网IP,回到家里应该解析成内网IP,假设域名是pan.macgeeker.com

  • 解析成公网出口的IP,使用DDNS,要么直接DDNS pan.macgeeker.com,要么把pan.macgeeker.com cname到 ddns的域名上
  • 解析内网IP,就需要借助dnsmasq
    1vim /etc/hosts
    2# 增加以下几行
    3192.168.x.x pan.macgeeker.com
    4
    5# dnsmasq会读取hosts文件的
    
    当然也可直接修改dnsmasq的配置文件
    1vim /etc/dnsmasq.conf
    2# 增加
    3address=/pan.macgeeker.com/192.168.x.x
    

对于开启IPv6的用户不能正常访问netflix

这个我就不详细说了,直接说原因吧。不能正常访问是因为netflix.com被解析成一个IPv6的地址了,但是大多数科学上网的组件是不支持IPv6的,或是VPS不支持(我的就是VPS不支持IPv6),这个时候就需要强行把netflix.com解析成IPv4的地址。解决办法也很变态

1vim /etc/dnsmasq.conf
2
3增加
4# disable ipv6
5address=/fast.com/::
6address=/netflix.com/::
7#address=/googlevideo.com/::
8address=/openwrt.org/::
9address=/instagram.com/::

把这几个域名针对IPv6的解析置为空,这样子流量就可以走梯子了。

对于部分域名解析被污染

对于被污染的解决办法就是指定域名去8.8.8.8上解析

1vim /etc/dnsmasq.conf
2
3# 如下格式增加
4server=/instagram.com/8.8.8.8
5server=/google.com/8.8.8.8
6server=/youtube.com/8.8.8.8
7server=/googlevideo.com/8.8.8.8
8server=/github.com/8.8.8.8

如github.com正常是解析到新加坡去了,如果强制用8.8.8.8就解析在美国(我是CN2线路,走美国更快)

对于某些网站可能省流量了

前面的配置文件中我注释了googlevideo原因是发现走梯子没有不走梯子快

走梯子的

不走梯子的

debug一下,确实是解析成一个IPv6地址了

解析结果

地址查询

居然解析到毛子去了,不是闹掰了么?

同样的还有fbcdn等,看官可以自己试

解决vpn到办公网络的域名解析问题

这里不方便深入分享,说一下原理吧。一般办公网络都有安全验证,所以基本上都是需要有台被认证过的电脑才能vpn,因此你的内网中有一台电脑要能vpn到公办网络,并在上面安装proxy软件,在openwrt的dnsmasq中把针对办公环境的域名解析都指到这台vpn的电脑上,举个例子

1vim /etc/dnsmasq.conf
2# 把 officecorp.com的解析都指向你的vpn电脑
3server=/office.com/192.168.x.x
4# 这代表,所有office.com的域名解析是都通过你的vpn来解析的

下一步,就是在OpenWRT中把有office.com的流量转vpn的电脑代理上网

这样只要你的vpn电脑VPN开启了,代理都是正常开启的,你内网中所有的机器都能正常访问你的办公网络了