CentOS 7 安裝配置OpenVPN Server
CentOS 7 安裝配置OpenVPN Server
這篇文章描述瞭如何在CentOS 7 伺服器上安裝與配置OpenVPN伺服器,以及如何編寫客戶端連線到新建立的OpenVPN伺服器上所需的配置檔案。
由於OpenVPN Server不在預設源中,所以需要安裝Extra Packages for Enterprise Linux (EPEL) 倉庫,其中包含有OpenVPN的包。
1 新增EPEL源
wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm rpm -Uvh epel-release-7-0.2.noarch.rpm
2 安裝OpenVPN
首先從EPEL安裝OpenVPN:
yum install openvpn -y
從示例配置檔案複製一份配置檔案到/etc/openvpn
cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn
開啟/etc/openvpn/server.conf編輯:
vim /etc/openvpn/server.conf
取消以下5個語句的註釋:
push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" user nobody group nobody
3 使用easy-rsa生成證書及金鑰
完成了對於配置檔案的修改之後,我們接下來生成keys和certificates.
由於OpenVPN-2.3.2中沒有了示例的easy-rsa相關檔案,我們首先需要安裝它:
yum install easy-rsa
將相關檔案複製到OpenVPN的配置目錄:
cp -R /usr/share/easy-rsa/ /etc/openvpn
現在有關的檔案都在/etc/openvpn/easy-rsa/2.0/這個目錄中。
3.1 調整easy-rsa金鑰生成配置
首先需要修改的是vars檔案
vim /etc/openvpn/easy-rsa/2.0/vars
將以下這些值修改成你自己的值:
export KEY_COUNTRY="US"
export KEY_PROVINCE="NY"
export KEY_CITY="New York"
export KEY_ORG="Organization Name"
export KEY_EMAIL="[email protected]"
export KEY_CN=droplet.example.com
export KEY_NAME=server
export KEY_OU=server
另外這中間還有KEY_SIZE,可以自己修改,不過需要與之後的配置檔案對應,預設為1024
export KEY_SIZE=1024
修改完成之後,執行source ./vars, 清空目錄並生成Certificate Authority(CA):
cd /etc/openvpn/easy-rsa/2.0
source ./vars
3.2 生成金鑰
3.2.1 生成CA, 伺服器證書及金鑰
在/etc/openvpn/easy-rsa/2.0目錄中執行:
./clean-all
./build-ca
執行完成之後在/etc/openvpn/easy-rsa/2.0/keys目錄中產生了CA,接下來為伺服器生成金鑰:
./build-key-server server
有了伺服器金鑰,再生成Diffie Hellman key exchange檔案,這裡生成的長度由之前的KEY_SIZE決定:
./build-dh
執行完成會產生dh1024.pem (如果你的KEY_SIZE = 2048,這裡產生的檔案是dh2048.pem)
將四個所需檔案複製到OpenVPN配置目錄中去:
cd /etc/openvpn/easy-rsa/2.0/keys
cp dh1024.pem ca.crt server.crt server.key /etc/openvpn
3.2.2 生成客戶端證書和金鑰
在/etc/openvpn/easy-rsa/2.0/目錄中執行:
./build-key client
會在目錄中產生客戶端所需的證書和金鑰
4 配置路由並啟動OpenVPN Server
4.1 防火牆配置
在CentOS 7中,iptables防火牆已經被firewalld所取代,需要使用如下方法:
首先啟動firewalld
systemctl status firewalld.service
檢視有哪些服務已經在列表中允許通過:
# firewall-cmd --list-services
dhcpv6-client http https ssh
可以看到已經有了dhcpv6-client, http, https, ssh四項,接下來新增openvpn:
# firewall-cmd --add-service openvpn
success
# firewall-cmd --permanent --add-service openvpn
success
檢查一下:
# firewall-cmd --list-services
dhcpv6-client http https openvpn ssh
最後新增masquerade:
# firewall-cmd --add-masquerade
success
# firewall-cmd --permanent --add-masquerade
success
以下命令用於確認masquerade是否新增成功:
# firewall-cmd --query-masquerade
yes
4.2 允許IP轉發
在sysctl中開啟IP轉發
vim /etc/sysctl.conf
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
4.3 啟動OpenVPN服務
啟動OpenVPN伺服器並新增自動啟動項:
sysctl -p
systemctl [email protected] start
systemctl enable [email protected]
至此服務端搭建完成。
5 客戶端配置檔案
取回之前生成的位於/etc/openvpn/easy-rsa/2.0/keys中的三個檔案:
ca.crt
client.crt
client.key
在你的客戶端建立一個檔案client.ovpn, 將這三個檔案與其放在同一目錄中,編輯client.ovpn內容如下:
client
dev tun
proto udp
remote xxx.xxx.xxx.xxx 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
ca ca.crt
cert client.crt
key client.key
將其中的xxx.xxx.xxx.xxx替換為你的伺服器地址,如果埠、證書、金鑰不同的話修改相應的項即可
5.1 Android
直接使用OpenVPN官方的OpenVPN Connect即可,選擇import匯入配置檔案。
5.2 Mac OS X
使用第三方的Tunnelblick連線,注意根據你的作業系統版本選擇合適的版本。