Linux 技术手札

CentOS 7 安装 OpenVPN Server

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 默认以外的常用套件。

# yum install epel-release

启用了 EPEL Repository 后, 可以正式安装 OpenVPN Server, 以下指令会用 YUM 安装 OpenVPN, 以及用于产生 SSL key 的 Easy RSA:
Step 1 — Installing OpenVPN

# yum install -y openvpn easy-rsa

OpenVPN 内建了一个设定档范例, 将这个设定档复制一份, 并用这设定档修改设定:

cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/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 设定档目录, 及做相关设定:

# mkdir -p /etc/openvpn/easy-rsa/keys
# 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, 根据自己的设定修改设定值:

现在用 Easy RSA 产生金钥及证书:

# cd /etc/openvpn/easy-rsa
# source ./vars
# ./clean-all
# ./build-ca
# ./build-key-server server
# ./build-dh

产生金钥及证书后, 将它们复制到 OpenVPN 目录:

# cd /etc/openvpn/easy-rsa/keys
# cp dh2048.pem ca.crt server.crt server.key /etc/openvpn

然后在 OpenVPN Server 产生 Client 端的金钥, 作用 Client 认证, 下面 build-key 会定义为 user-1, 可以根据自己的需要, 将它改为 client 的描述:

# cd /etc/openvpn/easy-rsa
# ./build-key user-1

设定好 OpenVPN 后, 关闭 firewalld 并开启 iptables:

# yum install -y iptables-services
# systemctl mask firewalld
# systemctl enable iptables
# systemctl stop firewalld
# systemctl start iptables
# iptables –flush

然后输入以下指令, 设定 OpenVPN 对外开放:

# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
# iptables-save > /etc/sysconfig/iptables

开启 /etc/sysctl.conf, 加入以下一行在开头:

然后重新启动 network service 及启动 OpenVPN:

# systemctl restart network.service
# 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, 加入以下内容:

以下是 Windows 及 Linux 客户端的设定:

Windows:
下载 OpenVPN 官方的 OpenVPN Community Edition, 安装好后, 将上面建立的 client.ovpn 放到 C:\Program Files\OpenVPN\config 目录下。

Linux:

用默认 Repository 安装 OpenVPN 后, 执行以下指令, 将 /path/to/client.ovpn 改成 client.ovpn 的位置

# openvpn –config /path/to/client.ovpn
Exit mobile version