VPN 直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道,OpenVPN 无疑是 Linux 下开源 VPN 的先锋,提供了良好的性能和友好的用户 GUI。 OpenVPN 是一个基于 OpenSSL 库的应用层 VPN 实现。和传统 VPN 相比,它的优点是简单易用。
教程环境介绍
安装基础组件
sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
安装阿里源
sudo yum-config-manager \ —add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装Docker
sudo yum install docker-ce
启动Docker
systemctl start docker
<a name="xhLFl"></a># 安装Docker-Compose> 参考文档: [https://docs.docker.com/compose/install](https://docs.docker.com/compose/install/)```bash# 下载安装包sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose# 创建软链接sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose# 查看版本docker-compose --version
VPN 服务端搭建
OpenVPN 在官网有一个推荐的Docker 仓库我们直接pull 到Docker
kylemanna/openvpn:2.4udp
初始化VPN
docker run -v [宿主机存OpenVPN配置目录]:/etc/openvpn --rm kylemanna/openvpn:2.4 ovpn_genconfig -u udp://[公网IP]
创建服务端密码
docker run -v [宿主机存OpenVPN配置目录]:/etc/openvpn --rm -it kylemanna/openvpn:2.4 ovpn_initpki
- 输入私钥密码(输入时是看不见的):
Enter PEM pass phrase: - 再输入一遍
Verifying - Enter PEM pass phrase: - 输入一个CA名称
Common Name (eg: your user, host, or server name) [Easy-RSA CA]: - 输入刚才设置的私钥密码
Enter pass phrase for /etc/openvpn/pki/private/ca.key:12345678
docker-compose.yml ```bash version: ‘3’
services: openvpn: image: kylemanna/openvpn:2.4 container_name: openvpn ports:
- "1194:1194/udp"restart: alwaysvolumes:- /opt/openvpn:/etc/openvpncap_add:- NET_ADMIN
- 启动OpenVPN 服务```bashdocker-compose up -d
用户管理
- 创建用户
这个时候客户端就可以拿着
opvn文件链接到服务器了
# 创建用户 执行后需要你输入创建秘钥的密码docker run -v /opt/openvpn:/etc/openvpn --rm -it kylemanna/openvpn:2.4 easyrsa build-client-full [用户名] nopass# 导出配置docker run -v /opt/openvpn:/etc/openvpn --rm kylemanna/openvpn:2.4 ovpn_getclient [用户名] > /opt/openvpn_client/[用户名].ovpn
- 删除用户
```bash
删除用户 执行后需要你输入创建秘钥的密码
docker run -v /opt/openvpn:/etc/openvpn —rm -it kylemanna/openvpn:2.4 easyrsa revoke [用户名]
刷新
docker run -v /opt/openvpn:/etc/openvpn —rm -it kylemanna/openvpn:2.4 easyrsa gen-crl update-db ```
到这里服务器端已经安装完成了,客户端的证书已经生成了;客户端配置参考另外一篇 《OpenVPN 客户端》
配置OpenVPN 仅代理指定IP流量(可选)
在一般环境不希望服务器代理全部流量,提高客户端流畅度降低服务器压力则需要如下配置
服务端
找到输出服务器配置的目录
openvpn.conf的配置文件;将block-outside-dns注释 如果已经注释或者不存在则不用管
服务端推送配置
注释路由转发
Route Configurations Below注释push "block-outside-dns"注释push "dhcp-option DNS 8.8.8.8"添加需要推送的IP
push "route IP地址 子掩码"例如:push "route 192.168.1.166 255.255.255.255"
客户端
客户端指定配置
- 在
opvn文件的最后面注释redirect-gateway def1- 在文件末尾添加
route-nopull标示禁止代理全部流量- 在文件末尾继续添加
route [IP/域名] 255.255.0.0 vpn_gateway指定IP 进行代理
