分类 网络 下的文章

最开始的时候,我的宿舍网络是由一个小光猫构成的,
光猫不仅可以拨号,还能作为无线接入点,手机直接连光猫的Wi-Fi就可以无线上网,
这也是大部分简单的家庭网络的模样:
QQ截图20201023210055.png
不过,很快就会发现连光猫的Wi-Fi很卡,一是光猫(北京联通)的无线模块只能提供50Mbps的网速,二是光猫无线吞吐性能不行,同时上网的设备一多就会掉帧丢包,100Mbps的网速到手机上只有30Mbps左右。怎么办呢?买个路由器。市面上的路由器,WiFi信号一般要好于光猫的信号,所以在网络中加上了路由器后,无线速度明显变快了,电脑也因为直接使用有线连接路由器,可以达到很快的网速了。
QQ截图20201023211042.png
随着宿舍无线设备的增多,我发现在线设备较多的时候,还是会出现丢包降速的情况,而且电脑直接用网线连路由器也只能跑到不到200Mbps,但是宽带是300Mbps,剩下的那100Mbps哪去了呢?
想来想去,应该是光猫的性能问题,CPU转发性能较低,在一直满速的情况下会发热,无法长时间保持稳定满速。
于是我考虑将光猫改成桥接模式,也就是变成一个纯二层光转电设备,把PPPOE拨号这些事情交给转发性能更强的路由器的CPU来做。
QQ截图20201023212055.png
在这样调整之后,路由器进行PPPOE拨号,这时候我发现路由器获得了一个公网IP,虽然是动态的,但是可以用手机直接访问路由器开放出去的端口。
于是我ssh登到路由器(小米R1D)上,编译了一个LNMP环境(路由器的Linux系统+Nginx+MySQL+PHP),放了一个简单的Wordpress博客在路由器上,然后把Wordpress端口开放到公网,这样就可以通过IP来访问我的博客了。
QQ截图20201023213158.png
QQ截图20201023213402.png
这样就又产生了一个问题,网络一重启,博客的IP就会变化,谁能每次都记得住IP呢。
于是我做了下面三件事:

1.注册了一个域名,并把域名备案;
2.找了一个脚本,让路由器每次重启的时候都获取一下PPPOE接口的IP,并绑定到域名上;
3.弄了个脚本,让路由器每次重启后发微信告诉我最新的IP。

这样就可以通过http://域名:55555来访问我的博客了。
为什么不用默认的80和443端口呢?因为家用宽带不会给你开放这两个端口(所以后来把博客迁移到云端了,后续更新)。
然后要做的事就是折腾Wordpress博客了,因为Wordpress博客的服务器全都在国外,对国内网络支持不太好,一下载插件就会502-Timeout,所以我需要让路由器遇到国外的IP时自动切换为外国的网络。
QQ截图20201023215316.png
当时用的是小米R1D,R1D是最早带硬盘的国产家用路由器,硬盘不能浪费掉,于是又开了个下载服务,想看的电影可以先离线下载到路由器硬盘上,再使用Samba服务把路由器里面的硬盘挂载到电脑上,晚上打开下载后就可以关掉电脑了,白天起来直接就可以在电脑上观看下载好的电影了。
IMG_6608(20201023-215703).JPG
这样,越来越多的服务在小米R1D上运行,路由器的芯片有些吃不消,
5d03a7c9b56594511.jpg_fo742.jpg
所以又从小米R1D换成便宜实用的斐讯K3,
u=422470737,4282744348&fm=26&gp=0.jpg
再后来,又从斐讯K3又换成了比较贵的华硕路由器ASUS-AC86U
timg.jpg
运行在路由器上面的服务也就越来越多了
QQ截图20201023221321.png
偶然的机会,发现自己的网络支持迅雷快鸟,打开迅雷快鸟的App后,网速会从300Mbps临时变更为700Mbps,这就很划算了,但是迅雷快鸟的App只能电脑登录或者是手机登录,电脑关掉或者手机休眠的时候,宽带就又变回300Mbps了。
正好我认识参与梅林插件的开发者Sadog,我和Sadog说了一下,他给我做了一个可以在AC86u路由器上运行的迅雷快鸟插件,这样,我路由器就可以一直保持700Mbps的网速了。
QQ截图20201023222003.png
迅雷快鸟插件的雏形:
QQ截图20201023222120.png
700Mbps的网速,导致我的路由器一下子就过时了。跑了那么多的服务,还想要Wi-Fi速度能达到700Mbps,有点痴人说梦。
这种路由器性能不足的情况持续了大概有半年的时间,我发现了新的解决方法。
将需要CPU算力的功能分给计算性能强的主机,将需要发射Wi-Fi信号的功能分给信号超级好的AP,这样的话就可以保持网络和运算性能都均衡了。
于是我跑到淘宝,买了一个3855u软路由,用于拨号,包转发,以及7层的App运行。
IMG_6609(20201023-222605).JPG
又买了一个Tp-LINK的AP2608GC,用于发射Wi-Fi信号。
QQ截图20201023222906.png
3855u买回来之后不太会用,把之前路由器的功能迁移过来,大概这个样子:
1.png
因为之前接触的x86平台一般是用来装Windows或者Ubuntu系统的,突然给了我一个没用过的系统,Koolshare的LEDE系统,就不会用了,面对LEDE的应用商店眼花缭乱的功能,我陷入了沉思。

这时候,我的朋友Luckybeans给我发了一个Lean自编译Openwrt系统的Github连接,我又糊涂了,这软路由到底怎么用呢。

[blueacc open="open" title="未完待续"]关于之后将博客部署到云主机+阿里WAF+OSS+CDN的网络中、用Openwrt开源代码定制X64固件、在软路由的ESXi系统搭建旁路双DNS缓存服务防污染、将应用从路由系统分离到Alpine_Docker的这些故事,我会在后续几章里面更新(咕咕咕)。[/blueacc]
[greenpro value="20"]PROGRESS[/greenpro]

有些臭运营商会乱改解析,导致你看小黄书…………不对,是看学术交流的网站会蹦出一大堆广告来
这是由于我们在进行PPPOE拨号的时候,运营商可以指定我们路由器WAN口的DNS,或是直接将我们WAN口对外DNS请求劫持。
[redbar]我们需要保证域名解析主要流程中的所有连接都是加密的不被篡改。 ————栗子[/redbar]
如何解决运营商劫持DNS的问题,我想的是只需要在运营商劫持之前做好劫持就可以了。
我们可以通过DOT(DNS over TLS)或者DOH(DNS over HTTPs)的方法保护解析不被篡改。
最开始我想了一个方案,使用Aliyun_HK的轻量服务器作为中转节点,从Cloudflare DNS或者Google DNS取数据,然后本地路由器劫持所有DNS流量并通过TLS连接Aliyun_HK获取DNS解析结果(就是vmess里最常用的ws+tls方案),结果没想到,Aliyun_HK的DNS也不是百分之一百完美的,访问国外专业学术网站时有时还是有微量的劫持问题,如下图所示。
main.jpg
当时是这样的一个情况,我想访问一个网站查资料的时候,发现无法访问,加了HK,JP,CA各种代理也无法访问,我冷静思考了半小时,才想到上图中红框框这个位置数据传输是不加密的,可能被劫持了,于是我修改成下面这样,确保解析每一个步骤都是加密传输的:
QQ截图20200724221527.jpg
就是使用Aliyun_HK主机从权威的DOH服务器取数据并缓存,然后本地使用Stubby连接Aliyun_HK的DOH服务取数据。
这样解析的安全性上去了,但是我发现解析的速度又下来了,因为要从国外取数据到HK,再从HK到BJ,还要过ADGH的隐私规则,这样解析一个IP要100ms左右的请求/响应时间。
我这个人比较懒,直接在路由器的Dnsmasq服务配置文件里把所有DNS的TTL设置成一天,然后配个脚本每天早上到服务器上把常用DNS取一下缓存到本地,倒是挺快的也够安全,就没再继续鼓捣了。
佛系DNSmasq配置:
QQ截图20200724223507.jpg
今天突然看到DnsPod公众号说腾讯家也出DOH服务器了,于是想着可以再搭个国内专用的DOH中转服务器,使用AdguardHome中转的同时可以把我常用的内网hosts也加到里面,再配置一些防追踪的规则,应该能比现在快很多。
搭建AdguardHome肯定是最简单的,不管你啥服务器直接5条命令搞定:

wget https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gz #下载
tar xvf AdGuardHome_linux_amd64.tar.gz #解压
cd AdGuardHome #打开文件夹
sudo ./AdGuardHome -s install #安装
./AdGuardHome -s status #运行

配置服务器安全组:
QQ截图20200724225559.jpg
登录ADG配置上游服务器:
QQ截图20200724223951.jpg
配置隐私和广告规则:
QQ截图20200724224023.jpg
配置内网HOSTS
QQ截图20200724224125.jpg
配置抗D规则,这步主要是需要在自定义规则加这样一条,用于防止一种常见的DNS攻击:
[redbar]||pizzaseo.com^$important
这个pizzaseo是DNS攻击最常见的域名,把它屏蔽掉可以节约一半DNS资源。[/redbar]
QQ截图20200724224211.jpg
配置TLS证书:
QQ截图20200724224759.jpg
配置域名解析:
QQ截图20200724224513.jpg
配置本地路由器上Stubby服务连接AdguardHome_DOH服务器:
QQ截图20200724225005.jpg
QQ截图20200724225105.jpg
配置DNSmasq的端口劫持:
QQ截图20200724225157.jpg
配置本地主机,延迟4个6:
QQ截图20200724225331.jpg
QQ截图20200724225258.jpg
配置本地浏览器:
QQ截图20200724225408.jpg
配置手机DOT:
QQ截图20200724225706.jpg
测试DNS是否正常劫持到DOH上:
QQ截图20200724225937.jpg
到ADG上可以看到解析记录:
QQ截图20200724225849.jpg
访问国内被劫持的网站,没有问题:
QQ截图20200724230042.jpg

测试通过。
[greeninfo title="附自建DNS供大家测试,有效期1年。"]DNS:120.92.74.158:53
DOH:https://dns.nsoc.tech:444/dns-query
DOT:tls://dns.nsoc.tech:853[/greeninfo]