分类 全部文章 下的文章

使用dnsmasq基于大陆域名白名单分流解析域名

20210617更新:RouterOS使用DNS转发功能实现域名分流解析
20210127更新:使用overture替换dnsmasq做域名分流解析
有朋友问我怎么用dnsmasq做分流解析,其实挺简单,下面介绍一下。

以下以debian系linux为例,已在路由器做ip地址分流,参考routeros配置vpn分流大陆ip

1,安装dnsmasq

apt update
apt install dnsmasq

2,配置dnsmasq,默认使用8.8.8.8和8.8.4.4解析

vi /etc/dnsmasq.conf

粘贴下面三行到文件末尾

no-resolv
server=8.8.8.8
server=8.8.4.4

3,配置dnsmasq的解析白名单
这里使用了felixonmars/dnsmasq-china-list的大陆域名白名单
这个列表使用了114.114.114.114的dns服务器,这里建议使用运营商给你的dns服务器,一是解析会快一点,二是cdn识别会更准确

这里假设拨号获得的dns服务器是223.5.5.5,可以使用下面命令来生成使用运营商dns服务器的域名列表

curl -s https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf|sed 's/114.114.114.114/223.5.5.5/g' >/etc/dnsmasq.d/accelerated-domains.china.223.5.5.5.conf

如果需要使用大陆dns服务器解析apple或者google的域名,可以使用下面命令生成对应列表,这里我不推荐。

curl -s https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/apple.china.conf|sed 's/114.114.114.114/223.5.5.5/g' >/etc/dnsmasq.d/apple.china.223.5.5.5.conf
curl -s https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/google.china.conf|sed 's/114.114.114.114/223.5.5.5/g' >/etc/dnsmasq.d/google.china.223.5.5.5.conf

4,重启dnsmasq服务使配置生效

service dnsmasq restart

5,测试dns分流解析
首先使用大陆dns服务器解析google.com,多次测试得到的ip地址并不是google的ip,可以用ipip.net来查询ip所属

dig google.com @223.5.5.5

然后使用dnsmasq解析google.com,多次测试可以发现ip地址是google的

dig google.com @127.0.0.1

6,自己添加域名到白名单
别人制作的域名列表中如果不包含自己需要的域名,可以向列表追加

echo 'server=/你需要的域名/223.5.5.5' >>/etc/dnsmasq.d/accelerated-domains.china.223.5.5.5.conf

ipad使用utm安装windows7

ipad使用utm安装windows7
实际安装时间约半小时,最后一个阶段“正在完成”用时最长,用了15分钟以上,剪掉了
ipad pro 2020实际体验比较糟糕

dns解析问题导致wifi版ipad不能定位

最近入手了ipad pro 2020,发现在我现有的网络环境下不能定位,通过手机热点可以定位。

我家网络是大陆IP地址白名单,默认出口香港,dns解析是大陆域名白名单,默认8.8.8.8解析。

由于ipad是wifi版,只能通过联网定位,这也是家里的iphone没有发现不能定位的问题的原因,iphone定位有多种方式,比如基站,gps,网络等,而wifi版ipad只能通过联网定位。把手机打开飞行模式,关闭定位再打开,发现也不能定位了。于是可以确定不能定位和我的网络有关。

实际地理位置为北京,开始通过控制单一变量来排查。

开始排查网络,首先想到的是dns问题,于是保持路由规则不变,更换114dns,发现还是不能定位,猜测是dns缓存,重置网络设置发现还是不能定位,于是遇到了ios的一个坑,重置网络设置不能清空定位相关dns缓存,只有关闭定位,重新打开才会清空定位相关域名解析。于是按上述方法测试四个8dns,发现不能定位,之后有测试了其他dns,发现只有使用大陆dns才能定位。之后又测试了全局路由走香港使用上述几个dns,发现都不能定位,全局路由走联通,使用上述dns测试,只有大陆dns才能定位。总结就是使用大陆ip和大陆dns才能定位。不知道和实际地理位置是否有关。

之后就是排查域名
由于云上贵州之后我就把苹果相关域名解析全部使用8.8.8.8了,为了测试我又把大陆域名白名单中苹果域名列表添加到使用境内dns解析,然后发现可以定位。进一步,查看苹果域名列表,发现疑似域名gs-loc.apple.com和gs-loc-cn.apple.com,对这两个域名分别使用境内外ip和境内外dns组合解析,发现

所有情况下gs-loc-cn.apple.com的解析地址都相同
所有情况下gs-loc.apple.com的解析都是cname到gs-loc-new.ls-apple.com.akadns.net

然后开始组合解析gs-loc-new.ls-apple.com.akadns.net,发现
使用境外ip,境内和境外dns,得到的都是相同的解析地址,美国苹果ip
使用境内ip,境外dns,得到的是上述美国苹果ip
使用境内ip,境内dns,得到的是境内高德在阿里云的ip地址

于是清空苹果域名列表,只保留gs-loc.apple.com这一个域名,发现可以定位。
域名排查结果和上面排查网络结果相同。

总结:
1,wifi版ipad需要使用大陆ip和大陆dns才能定位。不知道和实际地理位置是否有关。
2,ios/ipados只能通过关闭-开启定位才能清空定位相关域名解析。
3,不差钱买蜂窝数据版ipad

Routeros的address-list大陆分流列表

20230529更新:添加clang.cn的大陆IPv6地址。
20230529更新:添加clang.cn的大陆IP地址的CIDR合并后的地址列表,合并前8K+,合并后5K+。
20220822更新:由于ipip的数据很长时间不更新,添加clang.cn的大陆地址列表。

原来一直使用apnic的ip地址按CN生成Routeros的address-list分流列表,偶然发现列表里有境外ip,检查发现是大陆厂商的ip宣告到美国了。
平时用ipip.net来查看ip地址所在地,通过几年使用发现ipip.net的地址库对比其他ip查询网站来说更准确些,并且ipip.net在github每月发布大陆地址列表
上述ip地址宣告变化可以从ipip.net大陆ip列表的20190304这个github commit看出,这个commit中203.20.138.0/23被删除,用ip.cn站长之家查看,发现是福建电信ip,如图
ip.cn
通过apnic最新CN列表查找发现在203.20.136.0/21这个段里面,如图
apnic
但是ipip.net查询,是印尼电信,如图
ipip.net
而且通过路由追踪到了印尼,如图
路由追踪

于是写了行命令自动从github下载并转成routeros的address-list,并添加了私有ip地址192.168.0.0/16,172.16.0.0/12和10.0.0.0/8

curl -s https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt |sed -e 's/^/add address=/g' -e 's/$/ list=CNIP/g'|sed -e $'1i\\\n/ip firewall address-list' -e $'1i\\\nremove [/ip firewall address-list find list=CNIP]' -e $'1i\\\nadd address=10.0.0.0/8 list=CNIP comment=private-network' -e $'1i\\\nadd address=172.16.0.0/12 list=CNIP comment=private-network' -e $'1i\\\nadd address=192.168.0.0/16 list=CNIP comment=private-network'>cnip.rsc

并添加了定时任务每月生成一次放在我的网站,可以在这里下载
基于clang.cn的中国大陆IP地址列表的routeros分流脚本,点击这里下载
基于clang.cn的中国大陆IP的CIDR合并后的地址列表的routeros分流脚本,点击这里下载
基于clang.cn的中国大陆IPv6的地址列表的routeros分流脚本,点击这里下载