Total Pageviews

Tuesday, 19 November 2019

也许是世界上最小的便携式路由器

使用虚拟机虚拟一个LEDE路由器。


自从开始访问真正的互联网,VPN 和 Shadowsocks 便像是空气一样,毫不显眼,但是一旦失效,我就几乎活不下去。最记得有一次旅行途中,手机上的 VPN 失效无法启动,然后我就度过了一次漫长的,与互联网隔绝的旅行。
如果是 Shadowsocks 重度用户,几乎都会有这样一个体验,在桌面环境使用时,经常遇到不遵循系统代理的软件,在 Windows 上面更是严重,npmgit 等软件几乎都需要单独配置。这个问题可以通过在路由器使用 ss-redir 解决,但是一旦离开日常的办公环境,没法部署路由器,访问网络就又成了难题。几经折腾之下,我尝试使用虚拟机运行 LEDE ,通过修改宿主机的路由表,让虚拟机作为宿主机的路由器,这样便可以随身携带一台高性能的路由器了。

准备工作

部署环境

转换镜像

将下载好的 LEDE Firmware 转换成 VirtualBox 可用的磁盘文件。
gunzip lede-x86-64-combined-ext4.img.gz
VBoxManage convertfromraw --format VDI lede-x86-64-combined-ext4.img lede.vdi

设置网卡

添加一张 Host-only 的网卡,这张是负责和虚拟机的 LAN 网段进行通讯的。






任何一个内网 IP 均可,注意不要和等下设置的路由器 LAN 口 IP 冲突,网段尽量足够小,毕竟只有两台机器。



不需要开启 DHCP,因为我们使用的是静态地址,而且 LEDE 中有 dnsmasq 负责 DHCP。
添加桥接宿主机网卡的若干,数量取决于你是否需要多个 IP 均衡负载,这里需要创建虚拟机后完成。

配置虚拟机




配置虚拟机,一般来说 512M 的内存足够 LEDE 使用了,硬盘使用刚才转换的 VDI 文件。



如果你的宿主机单核性能比较弱,可以给虚拟机多个核心,据我所知 Shadowsocks 是可以通过 port reuse 来支持多线程的。



eth0 使用 Host-only 的网卡,其余网卡可以桥接宿主机的网卡。
VirtualBox 的 GUI 界面只支持配置 4 个网卡,使用 CLI 配置则可以添加最多 8 个网卡。
# VBoxManage modifyvm {vmname} --bridgeadapter{0-7} {interface}
VBoxManage modifyvm LEDE --bridgeadapter6 en5

配置 LEDE

开机进入 LEDE,使用 vim /etc/config/network 设置 LAN 口的静态地址。
config interface 'lan'
        option type 'bridge'
        option ifname 'eth0'
        option proto 'static'
        option ipaddr '192.168.100.1'
        option netmask '255.255.255.0'
        option ip6assign '60'
使用 /etc/init.d/network restart 使配置生效,如果没有配置错误,此时在宿主机使用 ping 192.168.100.1 可以 ping 通虚拟机。
通过 passwd 设置 root 密码之后,可以使用 ssh root@192.168.100.1 从宿主机 SSH 进入虚拟机。
方便起见可以安装 luci 界面,opkg update && opkg install luci
可以通过 Web 方式访问 http://192.168.100.1,就像管理普通 OpenWrt 路由器一样虚拟机。

部署 Host-only 网络

修改宿主机路由表。
sudo route change default 192.168.100.1
此时默认路由已经是虚拟机。

可选操作

网络认证

例如校园网用户,可以使用 sysuh3c 之类的软件每一个端口进行认证,这类软件一般都支持指定网卡。

部署 MWAN3

如果你的网络对单个 IP 有限速,可以通过多个网卡获取多个地址,然后使用 MWAN3 进行负载均衡。






首先每个网卡都要能连接互联网,并且需要配置好网关跃点,这个数值可以随意。



在 MWAN3 的接口中添加需要负载均衡的接口,一般来说还可以通过 ping 来判断一个接口的可用性。



在成员添加接口,这里我们的比重都是一样的。



策略是负载均衡。



最后把我们的策略设置为默认。



可以看到三个网口都在线。



三个网口的权重都一样。



可以通过观察每个网卡的流量判断均衡负载是否生效。
这里是对比图,单个 IP 限速 1.2 MB/s,叠加前后对比。

Shadowsocks & ChinaDNS

解决 IP 封锁和 DNS 污染,可以参考这个网站
wget http://openwrt-dist.sourceforge.net/auto_install_lede.sh
chmod +x auto_install_lede.sh
./auto_install_lede.sh

Koolproxy 去广告

解决广告问题,可以参考这个网站

一些自动化脚本

VBoxManage startvm --type headless LEDE
VBoxManage controlvm LEDE poweroff
将虚拟机以无 GUI 界面的方式运行。

Known issues

桥接宿主机无线网卡获取不到 IP 地址

Bridging to a wireless interface is done differently from bridging to a wired interface, because most wireless adapters do not support promiscuous mode.1