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 的位置