背景:服务器都在云上,云服务器内部通过VPC内网通信,是个小型局域网。但有些服务需要对外提供访问,比如:GitLab、MySQL、Redis等。但这些服务又不能暴露在公网,于是我们需要一个VPN实现本地和服务器内网访问需求,OpenVPN 比较适合我们的需求。
网络大概如下图所示:
服务端安装
https://github.com/hwdsl2/openvpn-install
wget -O openvpn.sh https://get.vpnsetup.net/ovpn
按照提示一步步安装,按默认UDP即可,不要使用默认端口号。
sudo bash openvpn.sh
客户端安装
安装好会生成客户端账户文件,比如 user1.ovpn,OpenVPN 提供了各个平台的客户端,对于 Windows 或 Mac 直接安装官方客户端,将账户配置文件拖进去即可使用。对于 Linux 客户端,以 Debian 为例:
安装
apt install openvpn
后台运行
vim openvpn-client.sh
#! /bin/bash
openvpn --config /data/user1.ovpn --daemon --log-append /var/log/openvpn.log
./openvpn-client.sh
路由配置
由于 OpenVPN 默认代理所有流量,而我们只需要云服务器相关地址走VPN。
编辑 user1.ovpn 添加如下2行,192.168.0.0
只是示例IP,请替换为自己VPC IP地址。
# 所有路由都不走openvpn 仅192.168.0.0走,vpn_gateway表示走vpn
route-nopull
route 192.168.0.0 255.255.255.0 vpn_gateway