标签 dns 下的文章

routeros配置vpn分流大陆ip

ros使用pppoe连网,ros上配置vpn连接香港服务器上的ros。目标:内网需要翻墙的ip通过大陆ip列表分流,大陆ip走默认路由,境外ip走vpn。其他内网ip全部走默认路由。
首先下载大陆ip列表。

curl 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | grep ipv4 | grep CN | awk -F\| '{ printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > chnroute.txt

生成的txt文件使用sublime的多行编辑功能或其他方式转换成ros的cn-ip.rsc脚本格式。

/ip firewall address-list
add list=cn-ip address=1.0.1.0/24
add list=cn-ip address=1.0.2.0/23
。。。

或者下载别人制作好的脚本
http://www.iwik.org/ipcountry/mikrotik/CN

使用import cn-ip.rsc导入ros。添加内网需要翻墙的ip列表。
配置ip firewall的mangle
prerouting,source address list,destination address list取反,destination address type,address type local,invert,mark routing,cross-gfw。
配置ip routes的网关
0.0.0.0/0,gateway设置为vpn对端地址,routing mark 使用上面的cross-gfw。

现在解决dns问题,由于ros的dns功能比较弱,这里使用dnsmasq
内网一台linux系统,可以是虚拟机,可以是容器,安装dnsmasq。配置dnsmasq的源dns为google dns,然后使用github上的大陆网址白名单生成脚本添加需要使用大陆解析的域名。https://github.com/felixonmars/dnsmasq-china-list

记录chrome使用dns服务器的一个坑

dhcp分配的主dns是pcap——dnsproxy搭建的dns服务器,备用dns是四个8
chrome加载js、css等cdn服务器上等静态文件时,一直pending直到超时failed,而同时safari,wget、dig等加载和解析都是没有问题的。

safari和wget、dig等都默认使用主dns地址去解析域名,chrome可能基于某些原因使用了8.8.8.8,chrome加载pending超时之后faild不显示ip地址,而使用dig去查询域名的时候使用的是主dns地址去查询的,所以获取的地址没有问题,在使用chrome://net-internals去调试chrome的时候没有仔细看dns栏里的解析地址,后来使用wireshark抓包发现大量tcp重传,重传包的目的地址是拒绝访问的ip,再翻过头来去看chrome://net-internals/#dns里的解析地址,发现cnd解析到的地址是拒绝访问的ip,推测chrome使用的dns服务有问题,查看dhcp获取的dns地址,发现备用dns服务器为8.8.8.8,修改dhcp配置,重新连接网络后,问题解决。