部署 VPN 服务¶
此镜像仅确保基本功能无误。如果您具备自行配置的能力,建议自行搭建,或参考此镜像的实现方法。使用前,您需要掌握 Linux 和 Docker 相关基础知识。此镜像在 Debian 9 上测试通过。本文介绍如何在 Debian 9 上使用,通常情况下也适用于其他系统,例如 Ubuntu。本服务默认端口为 1190/UDP,请确保已在防火墙中允许该规则。
准备工作¶
您还需要在服务器上做出如下修改,并执行以下命令:
echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
sysctl -p
如果您的服务器上安装了 ufw,还需在 /etc/ufw/before.rules 文件开头写入如下内容。这里的 eth0 和网段需要根据您实际的服务器接口和配置进行修改,注意是加在 *filter 规则前(如果有)。
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 172.27.27.0/24 -o eth0 -j MASQUERADE
COMMIT
修改 /etc/default/ufw 中的如下配置为 ACCEPT。
DEFAULT_FORWARD_POLICY="ACCEPT"
最后,执行如下命令重新加载 ufw 防火墙规则:
ufw reload
如果您服务器没有安装 ufw,请确保 iptables 的 FORWARD 规则为 ACCEPT,并执行如下命令:
注意
服务器重启后您可能需要重新应用此规则,建议安装 ufw。
iptables -P FORWARD ACCEPT
初始化配置¶
现在,创建一个目录来保存 OpenVPN 服务的配置。
mkdir -p ~/lamda-openvpn-server
接着,执行以下命令进行 OpenVPN 服务的初始化操作:
docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-server-new
等待命令执行结束。现在您可以在 ~/lamda-openvpn-server 目录下看到服务配置文件 config.ovpn。您可以使用编辑器打开此文件,建议仅修改以下几个字段:
# VPN 的网段及掩码
server 172.27.27.0 255.255.255.0
# VPN 服务端口
port 1190
# 如果需要 VPN 客户端访问服务器上的某个网络接口,可增加路由。
# 注意:此时客户端只能访问当前主机在该网段的 IP,
# 若要实现对该网段的完全访问,还需额外设置。
push "route 192.168.68.0 255.255.255.0"
# 将 114.114.114.114 修改为您所需的 DNS 服务器地址
push "dhcp-option DNS 114.114.114.114"
创建客户端连接凭证¶
编辑完成后,创建一个客户端。myname 可替换为您想要的其他名称,但不可重复。
docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-client-new myname
创建完成后,使用如下命令获取此客户端的登录凭证:
# 注意:配置中的 IP 是自动获取的当前公网 IP,如果不正确请自行修改。
#
# 生成 ovpn 配置并重定向保存到文件 myname.ovpn。该文件可用于 OpenVPN Connect 等客户端。
docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-client-profile ovpn myname >myname.ovpn
# 生成 lamda 使用的 OpenVPNProfile,可直接在 lamda 中使用。
# 输出中包含 openvpn.* 相关配置,请参阅服务配置章节了解如何填入,以实现自动连接 VPN。
docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-client-profile lamda myname
撤销客户端凭证¶
如果需要撤销某个客户端凭证,请执行以下命令。撤销后可能需要重启 OpenVPN 服务。
docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-client-revoke myname
启动 OpenVPN 服务¶
现在您可以执行以下命令在前台启动 OpenVPN 服务,以便直接查看客户端连接日志和排查错误。
docker run -it --rm --name openvpn-server --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn run
确认无误后,建议让服务在后台运行。使用以下命令后台启动服务:
docker run -d --rm --name openvpn-server --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn run
参考文档¶
基础文档:https://openvpn.net/community-resources/reference-manual-for-openvpn-2-4/
路由设置:https://community.openvpn.net/openvpn/wiki/BridgingAndRouting