关于openwrt的升级

openwrt更新到了18.06.2,虽然是小版本的更新,鉴于最近路由翻墙不是很稳定,决定升级。

官网下载升级包,sysupgrade.tar,在路由的备份升级界面直接升级即可。

需要注意的是,升级之后自行安装的应用将全部被覆盖,只能保留配置文件。所以如果你为了翻墙对基础设置进行了修改,升级之后有无法上网的风险,需要逐项检查。

首先:WAN口设置,把自定义的dns服务器设置成国内的公共DNS。
接着:DHCP/DNS,把DNS转发清空,把忽略解析文件的勾去掉。

连上网络之后,在软件包页面更新软件列表,更新完毕之后,搜索luci-i18n-base-zh-cn安装进行汉化。

然后就是翻墙三件套的安装,分别是ss,dns-forwarder,chinadns,下载地址
需要下载ipk文件并上传到路由器手动安装。
这里需要注意的是:路由器传输文件需要使用scp协议。而xftp不支持scp协议。我们选择WINSCP这个软件。

另外vps有些高阶端口会被封,所以再能够ping通的情况下可以先修改一下端口试试。

关于软件包的升级

执行以下命令可批量升级软件包

opkg update
opkg list-upgradable | cut -f 1 -d ' ' | xargs opkg upgrade

openwrt一些升级说明

关于dnsmasq

openwrt的默认dnsmasq并不支持ipset,需要安装dnsmasq-full版本。ipset是为了支持对域名的转发代理,而chinadns是对ip进行转发代理。所以如果你选择域名匹配翻墙需要安装dnsmasq-full版本。

这里就有了一个问题,当卸载dnsmasq之后,无法解析域名,也就无法安装dnsmasq-full了。这里需要卸载和安装同步进行以避免此类问题。代码如下:

opkg remove dnsmasq && opkg install dnsmasq-full

关于chinadns

chinadns的原理很简单,可设置两个dns,一个是国内的dns,一个是国外的可信dns。当接到解析任务的时候,会同时向两个dns发送解析请求。

首先国外的可信dns拥有优先权,如果国外dns先返回结果就采用,如果是国内ip,直接访问,如果是国外ip则通过代理访问。

如果国内dns先返回结果,如果是国内的ip则直接访问。如果是国外的ip则抛弃掉,采用国外dns的结果。

看到这里,大家可能都和我有一样的疑问,如果国内dns率先返回的是假的国内ip,这样不就解析失败了。

但是实际情况很有趣,国外被污染的域名返回的仍然是国外ip,至于原因,也许只有他们自己知道了。所以这一点暂时没有担心的必要。

其实chinadns主要思想的是提高访问速度,如果你把所有的解析任务交给国外的dns,那么对于国内网站来说,你访问的不一定是最快,最合适的服务器。而且经过代理访问dns必然大大的加大解析时间。不管如何chinadns仍然是目前最优的dns优化选择。

以下代码用来更新chinadns的中国路由信息。

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