起因
之前科学上网都是用客户端,最近在 Youtube 上了解到软路由这种东西,据说可以大大提升科学上网的速度,就想自己也折腾一下试试。淘宝上的软路由主机太贵领导不给批资金,只好用闲置电脑通过虚拟机来装。
网络环境
我家的网络环境比较简单:一台 TP-Link 路由器 PPPoE 接入联通(这破小区光纤都没有通),其他设备都通过 wifi 连路由器上网。
家里网段是 192.168.1.0/24
,DHCP 分配范围 192.168.1.100-254
,计划给软路由用 IP 192.168.1.10
,宿主机使用 IP 192.168.1.5
。
安装 OpenWrt
1. 准备宿主机系统
家里有一台闲置的 Macbook Pro,准备用来做软路由的宿主机。因为不习惯用 Mac 系统做 Server,也为了节省一点能耗,我把系统重装成了 Ubuntu Server 18.04
。
在 /etc/systemd/logind.conf
中设置 HandleLidSwitch=ignore
,避免机器合盖进入休眠状态。
安装 QEMU 及相关工具: apt install -y qemu
2. 设置桥接网络
接下来我们需要在宿主机上创建一个桥接 interface br0
,让虚拟机通过桥接的方式连网,这样才能被局域网内的其他机器访问到。
Ubuntu Server 18.04
默认使用 netplan
管理网络配置,我对这个不熟,把它卸载掉了,用回 ifupdown
。
然后修改 /etc/network/interfaces
的内容为
1 | auto lo |
其中 enx00e04c3602b2
是我给电脑加的 USB 网卡,主要是为了尽量降低延时。
最后重启系统让网络配置生效。
3. 下载固件包并解压
固件我们选 x86_64 架构的,下载后需要用 gzip 解压,然后改名为 openwrt.img
方便后面使用。
1 | wget https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/19.07.1/targets/x86/64/openwrt-19.07.1-x86-64-combined-ext4.img.gz |
4. 启动 OpenWrt 虚拟机
虚拟机启动命令:
1 | qemu-system-x86_64 -name lede \ |
参数说明:
-name lede
给虚拟机起个名字,不加也没问题-machine q35
设置要虚拟的设备类型,一般要虚拟 PC 我们直接写q35
就好了,使用-machine help
可以查看所有支持的设备类型-drive file=openwrt.img,format=raw,if=virtio
配置虚拟机的磁盘为我们刚下载的固件openwrt.img
,磁盘类型为raw
,接口类型为virtio
-net nic,model=virtio -net tap
添加网卡并通过tap
的方式来进行桥接-vnc :1
启用 VNC 并监听 5901 端口
5. 配置 OpenWrt 的网络
虚拟机启动好之后,我们就可以通过 VNC 连入进行配置了。宿主机 IP 是 192.168.1.5
,QEMU 监听的 VNC 端口是 5901
,所以 VNC 的连接地址是 192.168.1.5:5901
- 使用 VNC Viewer(或者其他你习惯使用的 VNC 客户端)连接
192.168.1.5:5901
,登入 OpenWrt 的命令行,刚连上时应该只会看到一堆启动输出的日志,按一下回车键就能看到命令行提示符了; - 打开
/etc/config/network
修改lan
接口的 IP、网关和DNS,我的配置文件修改之后的完整内容如下,需要修改的只有config interface 'lan'
下面的配置:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option ula_prefix 'fd9b:fdff:6222::/48'
config interface 'lan'
option type 'bridge'
option ifname 'eth0'
option proto 'static'
option ipaddr '192.168.1.10' # 修改为软路由要用的IP
option gateway '192.168.1.1' # 设置网关
option dns '223.5.5.5 223.6.6.6' # 设置 DNS
option netmask '255.255.255.0'
option ip6assign '60' - 重启网络
service network restart
- 测试网络是否正常连通
ping www.baidu.com
启用软路由
完成以上步骤之后,我们就可以通过修改上网设备的网关为 192.168.1.10
来使用软路由了。
如果要通过软件路由来实现科学上网的话,还需要安装、配置一些工具,不过那些就不在本篇文章关注范围内了。
PS:以上安装方式也适用于国内流行的 KoolShare 固件,只需要把 img 换成 KoolShare 的 x86_64 固件就可以了。