使用 OpenVPN 搭建虚拟局域网

寒假到了,为了能更方便地和朋友本地联机游戏,有必要用 OpenVPN 搭建一个虚拟局域网。

服务器使用的 Docker 来自 kylemanna/openvpn

首先新建一个文件夹:

mkdir openvpn
cd openvpn

创建 docker-compose.yml,文件内容如下:

version: '2'

services:
openvpn:
cap_add:
- NET_ADMIN
image: kylemanna/openvpn
container_name: openvpn
ports:
- "1194:1194/udp"
restart: unless-stopped
volumes:
- ./config:/etc/openvpn

执行下面的命令初始化配置文件,把里面的 VPN.SERVERNAME.COM 换成你的域名或者 IP 地址:

docker-compose run --rm openvpn ovpn_genconfig -u udp://VPN.SERVERNAME.COM
docker-compose run --rm openvpn ovpn_initpki

运行期间你需要输入 CA pass phrase 并再次输入确认,生成完毕后同样也要再次输入刚刚设置的 pass phrase。

成功后会出现一个 config 文件夹,里面有个 openvpn.conf 文件,我们要做一些修改:

# 将 server 设置改为
server 192.168.255.0 255.255.255.0

# 将 route 设置改为
# 告诉 OpenVPN 路由下面的 IP 段
route 192.168.255.0 255.255.255.0
# 告诉客户端代理下面的 IP 段
push "route 192.168.255.0 255.255.255.0"

# 更改模式为 tap(按需自选)
# dev tun0
dev tap

# 添加一条 允许客户端通过 VPN 互相通讯
client-to-client

# 将原本的 dns 设置注释掉
# push "block-outside-dns"
# push "dhcp-option DNS 8.8.8.8"
# push "dhcp-option DNS 8.8.4.4"

# 允许多客户端复用 .oven 文件
duplicate-cn

然后生成 .ovpn 文件:

# 生成客户端密钥
docker-compose run --rm openvpn easyrsa build-client-full client nopass
# 生成客户端 ovpn 文件
docker-compose run --rm openvpn ovpn_getclient client > client.ovpn

成功后当前文件夹下会出现名为 client.ovpn 的配置文件。

默认配置文件是全局代理,但我们只希望代理局域网的流量,不想代理上网流量。编辑配置文件删除下面一行(一般在最后一行)。

redirect-gateway def1

在手机、电脑上安装好对应操作系统的 OpenVPN 客户端,把修改好的 .ovpn 配置文件下载到手机、电脑。最后用下面的命令启动 OpenVPN 服务器,测试一下连接。

# 加 -d 可在后台运行 
docker-compose up

如果没有问题的话,连接上的设备会被分配到 192.168.255.x 的 IP,且可以互相 ping 通。

参考教程:https://eyhn.in/eyhn-network/

支持一下
资助 Nano 让 Nano 吃得更胖!
  • 微信扫一扫
  • 支付宝扫一扫