CentOS7 安装 Openvpn
文章目录
环境
角色 | 主机名 | 操作系统 | IP |
---|---|---|---|
vpn 服务端 | vpn-server | CentOS7 | 192.168.1.90 |
vpn 客户端 | vpn-client | CentOS7 | 192.168.1.91 |
两台服务器初始准备
- 关闭 SELinux
- 关闭防火墙或放行 udp 端口 1194
- 安装 openvpn
1 2 3 4
yum install epel-release yum clean all yum makecache fast yum install easy-rsa openvpn
在 vpn-server 上创建证书
- 复制 easy-rsa 脚本到 /opt/easy-rsa/ 下
1 2 3
cp -af /usr/share/easy-rsa/3.0.3/ /opt/easy-rsa # vars 文件包含证书相关配置,可修改 cp /usr/share/doc/easy-rsa-3.0.3/vars.example /opt/easy-rsa/vars
- 初始化 pki 目录结构
1 2
cd /opt/easy-rsa ./easyrsa init-pki
- 修改 /opt/easy-rsa/pki/safessl-easyrsa.conf 中如下配置,增加证书有效时间为 10 年
1 2
default_days = 3650 default_crl_days = 3650
- 生成免密 ca 证书
1 2
# 使用默认 common name 即可 ./easyrsa build-ca nopass
- 生成服务端免密证书
1 2
# 参数 my-server0 指定生成的客户端证书文件名及其 common name ./easyrsa build-server-full my-server0 nopass
- 生成客户端免密证书
1 2 3 4
# 参数 my-client0 指定生成的客户端证书文件名及其 common name # 不同的客户端需指定不同的 common name # 方便在 client-conf-dir 目录下创建对应的同名客户端配置文件 ./easyrsa build-client-full my-client0 nopass
- 生成 dh.pem
1
./easyrsa gen-dh
- 生成 ta.key
1
openvpn --genkey --secret pki/ta.key
- 查看证书目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
/opt/easy-rsa/ ├── easyrsa ├── openssl-1.0.cnf ├── pki │ ├── ca.crt │ ├── certs_by_serial │ │ ├── 1835C740AD1421868300998618C0641F.pem │ │ └── 4F3AF1ED7D42ED56CCF26CC7622F4F50.pem │ ├── dh.pem │ ├── index.txt │ ├── index.txt.attr │ ├── index.txt.attr.old │ ├── index.txt.old │ ├── issued │ │ ├── my-client0.crt │ │ └── my-server0.crt │ ├── private │ │ ├── ca.key │ │ ├── my-client0.key │ │ └── my-server0.key │ ├── reqs │ │ ├── my-client0.req │ │ └── my-server0.req │ ├── serial │ ├── serial.old │ └── ta.key ├── vars └── x509-types ├── ca ├── client ├── COMMON ├── san └── server
- 该证书目录 /opt/easyrsa 需妥善保管,后期增加其他客户端证书时会用到
配置 vpn-server
- 开启路由转发,修改 /etc/sysctl.conf
1 2
sysctl -w 'net.ipv4.ip_forward = 1' sysctl -p
- 复制服务端证书到 openvpn 配置目录下
1 2 3 4
mkdir -p /etc/openvpn/server/my-server0/ cd /opt/easy-rsa/pki cp ca.crt dh.pem issued/my-server0.crt private/my-server0.key ta.key \ /etc/openvpn/server/my-server0/
- 创建 /etc/openvpn/server/my-server0.conf
1 2
cd /usr/share/doc/openvpn-2.4.7/sample/sample-config-files cp server.conf /etc/openvpn/server/my-server0.conf
- 修改 /etc/openvpn/server/my-server0.conf
1 2 3 4 5
ca my-server0/ca.crt cert my-server0/my-server0.crt key my-server0/my-server0.key dh my-server0/dh.pem tls-auth my-server0/ta.key 0
启动 vpn-server 服务
- 启动 openvpn-server@my-server0.service 服务
1
systemctl start openvpn-server@my-server0.service
- 如需提供 ca 密码
1
systemd-tty-ask-password-agent --query
配置 vpn-client
- 复制 vpn-server 上的客户端证书到 openvpn 配置目录下
1 2
mkdir -p /etc/openvpn/client/my-client0 scp vpn-server:/opt/easy-rsa/pki/{ca.crt,issued/my-client0.crt,private/my-client0.key,ta.key} /etc/openvpn/client/my-client0/
- 创建 /etc/openvpn/client/my-client0.conf
1 2
cd /usr/share/doc/openvpn-3.0.3/sample/sample-config-files cp client.conf /etc/openvpn/client/my-client0.conf
- 修改 /etc/openvpn/client/my-client0.conf
1 2 3 4 5
remote 192.168.1.90 1194 # vpn server 地址 ca my-client0/ca.crt cert my-client0/client.crt key my-client0/client.key tls-auth my-client0/ta.key 1
启动 vpn-client 服务
- 启动 openvpn-client@my-client0 服务
1
systemctl start openvpn-client@my-client0.service
- 如需提供 ca 密码
1
systemd-tty-ask-password-agent --query
验证
- vpn server 新增网卡 tun0,地址是 10.8.0.1/24
- vpn client 新增网卡 tun0,地址是 10.8.0.2/24
参考
文章作者 Colben
上次更新 2019-10-30