使用 Phicomm N1 作为路由器

最近咕力十足,新高三狗也确实比以前忙了很多,都咕了两篇 blog 了,不过刚刚搞的这个绝对不能咕!
之前买了个 Phicomm N1,但是因为家里有服务器所以一直吃灰,近期之前的家里小米路由器 3 越来越不撑了,也不能充分利用那边的校园网资源。于是我萌生了拿 Phicomm N1 作为路由器的打算。
说干就干,于是我拿着刷了 Debian 9 stretch 的 Phicomm N1 过去了。
设备: 入户线 (静态公网 IP,无 DHCP),刷有 Debian 9 stretch 的 N1,小米路由器 3,一根网线。这里设 N1 连接的小米路由器上的 LAN 口为 LAN 1。

配置 VLAN

切入正题,首先 Phicomm N1 只有一个以太网口,虽然也许我们可以插 USB 网卡,但是不知道为什么我的多个型号的 USB 网卡都不能工作,看起来是内核驱动出了问题,而内核又一直是我的知识盲区。那么这个口就需要同时承担 LAN 和 WAN 的功能。这里我们就需要引入 VLAN。对于 VLAN 的定义不再赘述,它的功能就是在一个 interface 上划分出不同的虚拟 LAN,起到分割广播域 (广播域的定义不再赘述) 的作用。
小米路由器刷了 NATCAP 移植的 OpenWRT,因此支持 VLAN 交换。
我们的思路是,通过使用不同的 VLAN tag,使得小米路由器的 LAN 口、Wi-Fi 和 N1 处于一个广播域中,使得小米路由器的 WAN 口和 N1 处于一个广播域中,这样 N1 上的虚拟 WAN 口就可以和运营商路由器处于一个广播域中,从而互相访问。 继续阅读 »

OpenWRT 包的编译以及更改 NAT 类型

OpenWRT 的许多定制包都没有针对自己路由器架构的二进制包,因此需要自己编译。

最近发现 OpenWRT 默认的 NAT 类型是 Symmetric NAT,而这种 NAT 不适合进行打洞穿透。遂萌生了更改 NAT 类型为 Full Cone 的念头。查了一下资料发现需要安装一个内核扩展和 iptables 扩展,很不幸作者没有针对我的路由器编译二进制包,因此我们需要手动编译。 继续阅读 »

记一次 cron 环境变量问题排查

之前在服务器上安装了 TimeShift,于是希望每天凌晨自动增量备份一下,于是写了个脚本丢到 crontab 里面执行。
但是第二天查看备份却发现没有备份成功。报错如下:

E: Commands listed below are not available on this system:

 * fuser

Please install required packages and try running TimeShift again

** (process:15106): CRITICAL **: app_lock_remove: assertion 'self != NULL' failed

显然 fuser 已经被安装在系统上,但是并没有被检测到。 继续阅读 »

极路由 HC5962 OpenWRT 刷机小记

NOIP 考前发现家里通了 IPv6,然后便打开了极路由4增强版的 IPv6 支持。但是,极路由官方固件的 IPv6 桥接支持有问题。经常出现无故断线的情况。又由于极路由公司目前有很大的倒闭风险,所以我决定用第三方固件替换原厂固件。权衡利弊,我选用了 OpenWRT 公版固件。本文撰写的意义就在于记录刷机的过程。

提示: 刷机有风险,一切风险请自行承担。 继续阅读 »

SNIProxy 实现服务器反向代理多个带加密网站

2019 更新: 目前已经改用 HAProxy。
之前通过 FRP 来实现了单个网站不泄露证书的 HTTPS 反向代理,但是缺点是一台服务器只能代理一个网站,即一个前端只能对应一个后端。这多少有些不够方便,也不方便与他人合租一台服务器。

SNIProxy 则是一个不错的解决方案。它通过浏览器访问时提供的 SNI 头来判断访问域名,然后可以根据域名来选择转发请求到何处。由于这个过程不涉及加密和解密,因此除了匹配正则表达式几乎没有性能损失,同时也不需要在前端服务器上部署 HTTPS 证书,也无需担心数据泄露的问题。
本教程适用的 Linux 发行版为 CentOS 7.4。 继续阅读 »