校园网下OpenWrt配置DNS

在上一篇文章的末尾写到,初次配置OP系统时候在校内网实现了IPV6穿透,但是DNS出现了问题。查阅资料后发现与OP的反域名劫持保护机制有关系,下面详述一下。

0x02 OP的反域名劫持保护

OP的反域名劫持保护在默认情况是开开启的,具体设置在/etc/config/dhcp下。

1
2
config dnsmasq
option rebind_protection '1'

在反域名劫持保护未关闭的情况下,由于上级dns返回的地址是个私有局域网地址,所以被看作是一次域名劫持,从而丢弃了解析的结果。

直接的方法就是将上面的字段值改为0,关闭即可。
在GUI配置界面等同于将
Network->DHCP DNS-Server Settings->General Settings->Rebind protection的勾取消掉。

再仔细查看文档发现也可以通过白名单的方式放行想要解析的内网域名,更为安全,此时Rebind protection也是处于开启状态,上面的关闭操作不需要进行。而具体修改的操作示例如下所示:

1
2
3
config dnsmasq
list rebind_domain 'bupt.edu.cn'
list rebind_domain 'byr.cn'

表示在反域名劫持保护情况下,将bupt.edu.cn,byr.cn域名加入白名单,允许返回内网地址。
在GUI配置界面等同于在
Network-DHCP DNS-Server Settings-General Settings-Domain whitelist添加想要解析的内网域名。

0x03 自定义DNS规则

在学校DNS偶尔抽风或者速度慢的情况下,产生了自定义DNS的想法。由于教务系统等系统的访问需要,在各个客户端修改hosts略显麻烦,并且DNSmasq亦可以实现广告屏蔽,因此采用DNSmasq来实现不同的DNS解析。
预期需求为bupt.edu.cn, byr.cn域名使用校内DNS解析,其他地址使用公共DNS解析(以114为例)。

修改Wan口DNS

Wan口DNS主要控制路由器访问网络使用的DNS服务器。例如,路由器安装软件需要访问网络,那么所使用的DNS服务器就是这个。

/etc/config/network文件中的wan接口添加两行peerdns以及dns字段:

1
2
3
4
5
config interface 'wan'
......
option peerdns '0'
option dns '114.114.114.114'
......

重启network服务后生效。
在GUI配置界面等同于在Network-Interface-Wan-Edit-Common Configuration-Advanced Settings中取消Use DNS servers advertised by peer的勾选,并在Use custom DNS servers添加默认的DNS服务器。

修改Lan口DNS(可跳过)

LAN口DNS主要控制连接到路由器的设备使用的DNS。例如,连到路由的电脑上网时使用的DNS服务器就在这里设置。

一般情况下,Lan和Wan口DNS保持一致即可。如若有需要,修改/etc/config/dhcp文件中dnsmasq的resolvfile指向即可:

1
2
3
4
config dnsmasq
....
option resolvfile '/etc/resolv.dnsmasq.conf'
....

同时需要在/etc/resolv.dnsmasq.conf下新建对应的配置文件。示例如下:

1
2
nameserver 114.114.114.114
nameserver 2001:4860:4860::8888

修改Dns自定义的内网解析规则

接下来就是配置校内域名使用的DNS解析地址。修改/etc/config/dhcp文件中dnsmasq。
首先是删除下面两行配置:

1
2
3
4
5
config dnsmasq
....
option filterwin2k '0'
option nonegcache '0'
....

其次添加list server字段,对bupt.edu.cn, byr.cn相关域名使用校内DNS解析:

1
2
3
config dnsmasq
list server '/bupt.edu.cn/10.3.9.5'
list server '/byr.cn/10.3.9.5'

在GUI配置界面等同于在
Network-DHCP and DNS-Server Settings-General Settings-DNS forwardings添加对应域名的DNS解析服务器地址。

0x04 后话

DNSmasq的用法远不止于此,可用来内网域名IP映射代替hosts,自定义域名解析规则屏蔽广告等,有时间会再研究。