OpenVPN 是一个用于建立 VPN (Virtual Private Network) 的开源套件, 支援 Linux, FreeBSD, OpenBSD, NetBSD, Mac OS X, Solaris 及 Windows。以下会讲述在 RHEL 及 CentOS 7 安装及设定 OpenVPN Server, 以及在 Windows, 及 Linux 连接的方法。
由于 OpenVPN Server 不在 RHEL 及 CentOS 的默认 Repository 里面, 所以要先安装 EPEL Repository, EPEL Repository 包括一些 RHEL 默认以外的常用套件。
启用了 EPEL Repository 后, 可以正式安装 OpenVPN Server, 以下指令会用 YUM 安装 OpenVPN, 以及用于产生 SSL key 的 Easy RSA:
Step 1 — Installing OpenVPN
OpenVPN 内建了一个设定档范例, 将这个设定档复制一份, 并用这设定档修改设定:
开启 /etc/openvpn/server.conf, 修改以下设定:
— 将 “dh” 设定改成 db2048.pem:
dh dh2048.pem
— 找到 “redirect-gateway def1 bypass-dhcp” 并将它的注解 (; 字符) 删除:
push “redirect-gateway def1 bypass-dhcp”
— 将 DNS 服务器改为 Google 提供的 DNS 服务器, 将 dhcp-option 反注释, 改成这样:
push “dhcp-option DNS 8.8.8.8”
push “dhcp-option DNS 8.8.4.4”
— 将 “user” 及 “group” 改为 nobody:
user nobody
group nobody
储存后离开文字编辑器。
用 Easy RSA 产生金钥及证书前, 先建立 Easy RSA 设定档目录, 及做相关设定:
# cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa
# cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf
开启 /etc/openvpn/easy-rsa/vars, 根据自己的设定修改设定值:
|
1 2 3 4 5 6 7 |
export KEY_COUNTRY=HK export KEY_PROVINCE=NA export KEY_CITY=HK export KEY_ORG="My Compnay" export KEY_EMAIL="root@mycompany.com" export KEY_CN="" export KEY_NAME="" |
现在用 Easy RSA 产生金钥及证书:
# source ./vars
# ./clean-all
# ./build-ca
# ./build-key-server server
# ./build-dh
产生金钥及证书后, 将它们复制到 OpenVPN 目录:
# cp dh2048.pem ca.crt server.crt server.key /etc/openvpn
然后在 OpenVPN Server 产生 Client 端的金钥, 作用 Client 认证, 下面 build-key 会定义为 user-1, 可以根据自己的需要, 将它改为 client 的描述:
# ./build-key user-1
设定好 OpenVPN 后, 关闭 firewalld 并开启 iptables:
# systemctl mask firewalld
# systemctl enable iptables
# systemctl stop firewalld
# systemctl start iptables
# iptables –flush
然后输入以下指令, 设定 OpenVPN 对外开放:
# iptables-save > /etc/sysconfig/iptables
开启 /etc/sysctl.conf, 加入以下一行在开头:
|
1 |
net.ipv4.ip_forward = 1 |
然后重新启动 network service 及启动 OpenVPN:
# systemctl start openvpn@server
# systemctl enable openvpn@server
Client 端设定
将 OpenVPN Server 以下 3 个档案复制到客户端:
/etc/openvpn/easy-rsa/keys/ca.crt
/etc/openvpn/easy-rsa/keys/client.crt
/etc/openvpn/easy-rsa/keys/client.key
并在客户端建立档案 client.ovpn, 加入以下内容:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
user-1 dev tun proto udp remote your_server_ip 1194 resolv-retry infinite nobind persist-key persist-tun comp-lzo verb 3 ca /path/to/ca.crt cert /path/to/client.crt key /path/to/client.key |
以下是 Windows 及 Linux 客户端的设定:
Windows:
下载 OpenVPN 官方的 OpenVPN Community Edition, 安装好后, 将上面建立的 client.ovpn 放到 C:\Program Files\OpenVPN\config 目录下。
Linux:
用默认 Repository 安装 OpenVPN 后, 执行以下指令, 将 /path/to/client.ovpn 改成 client.ovpn 的位置