OpenVPN 网桥模式连接家属区和实验室网络

打算使用 OpenVPN 把实验室和家属区的网络桥接起来。之前用 OpenVPN 的路由器的模式,实验室的网络可以通过家属区的网络走电信接入互联网。但是问题是现在想让家属区的设备也可以轻松的访问到实验室的设备,这就比较麻烦了。家属区要访问实验室就需要设置静态路由,但是 OpenVPN 的路由模式下 OpenVPN 服务端 的路由表不好设置(我暂时不知道如何设置)。所以使用换用网桥模式。

OpenVPN 网桥模式配置

OpenVPN 有两个模式,一个是类似路由器的模式,还有一个是网桥模式。 网桥模式可以使连接 VPN 的设备获取到 OpenVPN 的服务器所在网络的 IP,并且被直接访问。

首先配置的使用 tap 设备(使用路由模式时是用 tun 设备)。与一般的配置相同,不同的是要配置网桥。 网桥要配置成与服务器所在网段相同的网段,因为 tap 设备是不带 ip 的,所以只有在设置为同一网段之后才能被访问。所以我们需要通过 server-bridge 配置网桥。 如果 OpenVPN service 所在的网段是 172.18.0.0/16, 路由是 172.18.123.45, 则 网桥可以配置为

server-bridge 172.18.123.45 255.255.0.0 172.18.0.1 172.18.0.10

最后两个部分是分配的 ip 的范围,也就是说,连接网桥的设备会获得一个 IP,这个 IP 会在这个范围内配置。

路由配置

虽然使用网桥的方式,但是实验室的网络还需要有一个路由器负责网络。 我在这里使用了一台用来跑数据的机子作为路由器,然后使用美国网件的路由器提供交换机和无线网络。这个路由器最后被设定工作在 AP 模式。跑数据的机子使用 dnsmasq 提供 DNS 和 DHCP 的功能。DHCP 提供的网段是 192.168.1.0/24 这个网段,跑数据的机子的 IP (路由的IP)被设置为 192.168.1.1。而这个设备通过 VPN 获得的 IP 是 172.18.0.1, 则在 OpenVPN server 网络的路由器上可以添加一个路由表,将 192.168.137.0/24 网段的转到 172.18.0.1 设备上(具体固定 OpenVPN 固定 IP 的方式在网上有)。 在 Linux 下可以使用 route 来配置:

route add -net 192.168.137.0 netmask 255.255.255.0 gw 172.18.0.1 dev tap0

对于 OpenVPN 客户端的设备会自动的添加路由表。

最后

家属区和实验室的网络基本上算是融为一体了。除非是实验室网络上游网络出问题,两边的设备就可以正常的被访问。