这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

设置OpenWRT的VPN

介绍在 OpenWRT 下进行搭建VPN

1 - zerotier

使用 zerotier 搭建 VPN

准备工作

注册帐号

我直接用 github 帐号登录。

创建网络

登录后提示创建一个新的网络,选择 private,可以修改网络名字如我改为 skynet 。

ipv4 自动分配地址,选择一个网段。

记录下这个网络的 ZeroTier Network ID。

安装客户端

openwrt

打开 openwrt 的 “vpn” -< “zerotier”:

http://192.168.0.1/cgi-bin/luci/admin/vpn/zerotier

填写 ZeroTier Network ID,勾选 启动 和 自动允许客户端 NAT, 点 “保存&应用”

连接成功后会显示 “Zerotier 运行中”, “接口信息” 中也可以看到相关的信息。

在 zerotier 的管理页面上,这时可以看到有一个提示 “One device has joined this network.” 在设置列表中找到这个设备,勾选前面的框让认证通过。

为了方便起见,给每个设备指定固定的ip地址,方便后续直接连接。比如路由器我设置为 192.168.192.100。

mac

下载安装 zerotier 的 app,启动后点击"Jion New Network" ,输入前面的 ZeroTier Network ID。然后同样需要在管理页面认证通过。

windows

类似的安装应用,设置和 mac 类似。

貌似在路由器安装好 zerotier 之后,内网其他机器没有必要再安装 zerotier 了。

配置网络

配置路由器

在 openwrt 的设置中,我们选择了 “自动允许客户端 NAT”,但这还不够,还需要在 zerotier 的管理页面中对网络进行路由设置。

默认情况会有一个 managed route , “192.168.192.0/24(LAN)"。

我的路由器的内网中有两个子网,分别是 “192.168.0.0/24” 和 “192.168.100.0/24”,为了在其他设备上直接访问这些网段,需要添加两个人 route,如下图所示:

备注:这里的 192.168.192.100 是前面设置的路由器在 zerotier 网络中的固定IP。

可以通过 mac 上的 zerotier app 看到这些路由信息:

由于这些路由信息的存在,因此我们可以直接使用这些内网 IP 地址进行访问,好处就是可以在外网得到和在内网一样的体验。

验证

网速延迟

从 ping 看延迟还是比较大的,大概40-50ms,可能是因为我测试时笔记本用的是手机网络。

$ ping 192.168.192.100
PING 192.168.192.100 (192.168.192.100): 56 data bytes
64 bytes from 192.168.192.100: icmp_seq=0 ttl=64 time=41.456 ms
64 bytes from 192.168.192.100: icmp_seq=1 ttl=64 time=54.879 ms
64 bytes from 192.168.192.100: icmp_seq=2 ttl=64 time=37.987 ms
64 bytes from 192.168.192.100: icmp_seq=3 ttl=64 time=40.589 ms

TBD:下次测试一下两边都是电信宽带的情况。

2 - [归档]OpenConnect VPN

使用 OpenConnect VPN

备注: zerotier 非常好用,就没有继续使用 OpenConnect VPN 了。

归档

安装

opkg update
opkg install ocserv luci-app-ocserv
reboot

如果遇到报错 “cannot find dependency kernel”:

Collected errors:
 * pkg_hash_check_unresolved: cannot find dependency kernel (= 5.15.102-1-e469f5589b4c7b368924a6e4f8f7407f) for kmod-tun
 * opkg_install_cmd: Cannot install package luci-app-ocserv.

则是当前 openwrt 的 kernel 版本不够新:

uname -a
Linux BleachWrt 5.15.98 #0 SMP Thu Mar 9 14:21:25 2023 x86_64 GNU/Linux

打开页面 https://downloads.openwrt.org/snapshots/targets/x86/64/packages/,找到 kernel ,手工下载最新版本并安装:

wget https://downloads.openwrt.org/snapshots/targets/x86/64/packages/kernel_5.15.102-1-e469f5589b4c7b368924a6e4f8f7407f_x86_64.ipk
opkg install kernel_5.15.102-1-e469f5589b4c7b368924a6e4f8f7407f_x86_64.ipk

随即遇到第二个报错:

opkg update
opkg install luci-app-ocserv 
Unknown package 'luci-app-ocserv'.
Collected errors:
 * opkg_install_cmd: Cannot install package luci-app-ocserv.

只能继续手工下载了,打开

https://mirrors.cloud.tencent.com/lede/releases/

找到最新的 release 版本,如 22.03.3,然后选择对应的平台,如我是 x86_64

https://mirrors.cloud.tencent.com/lede/releases/22.03.3/packages/x86_64/luci/

在这里可以找到 luci-app-ocserv_git-20.110.55046-74da73b_all.ipk ,手工安装:

$ wget https://mirrors.cloud.tencent.com/lede/releases/22.03.3/packages/x86_64/luci/luci-app-ocserv_git-20.110.55046-74d
a73b_all.ipk
$ opkg install luci-app-ocserv_git-20.110.55046-74da73b_all.ipk 

Multiple packages (libgcc1 and libgcc1) providing same name marked HOLD or PREFER. Using latest.
Multiple packages (libgcc1 and libgcc1) providing same name marked HOLD or PREFER. Using latest.
Multiple packages (libatomic1 and libatomic1) providing same name marked HOLD or PREFER. Using latest.
Installing luci-app-ocserv (git-20.110.55046-74da73b) to root...
Configuring luci-app-ocserv.
Collected errors:
 * pkg_hash_check_unresolved: cannot find dependency kernel (= 5.15.98-1-c3ae984cf3530f6fa5bf8738be620d7b) for kmod-crypto-user
 * pkg_hash_fetch_best_installation_candidate: Packages for kmod-crypto-user found, but incompatible with the architectures configured
 * pkg_hash_check_unresolved: cannot find dependency kernel (= 5.15.98-1-c3ae984cf3530f6fa5bf8738be620d7b) for kmod-cryptodev
 * pkg_hash_fetch_best_installation_candidate: Packages for kmod-cryptodev found, but incompatible with the architectures configured

这里有两个依赖需要更新版本,以匹配前面刚更新的 kernel:

$ opkg install kmod-cryptodev
$ opkg install luci-app-ocserv

reboot 重启 openwrt.

配置

参考资料: