1. 程式人生 > >Linux CentOS安裝配置OpenVPN 2.4.0最新版教程

Linux CentOS安裝配置OpenVPN 2.4.0最新版教程

Linux CentOS安裝配置OpenVPN 2.4.0最新版教程


2016.12.27 官方釋出了OpenVPN 2.4.0版本,相比之前的版本變化不大,新版引入了一個更快的資料壓縮演算法叫 lz4(舊版用的是 lzo),新版不再支援Windows XP。

1. 準備工作

下載OpenVPN原始碼包,下載地址:
https://swupdate.openvpn.org/community/releases/openvpn-2.4.0.tar.gz
下載OpenVPN證書製作工具EasyRSA,下載地址:
https://github.com/OpenVPN/easy-rsa/releases/download/3.0.1/EasyRSA-3.0.1.tgz

2. 安裝OpenVPN

安裝依賴的軟體包

yum -y install openssl openssl-devel pam pam-devel

解壓並安裝OpenVPN 2.4.0

tar zxf openvpn-2.4.0.tar.gz
cd openvpn-2.4.0
./configure --prefix=/usr/local/openvpn --disable-lzo
make && make install
mkdir /etc/openvpn # 建立配置檔案存放目錄 
cp sample/sample-config-files/server.conf /etc/openvpn/server.conf # 從模板複製一份配置檔案

3. 製作證書

製作根證書

tar zxf EasyRSA-3.0.1.tgz
cp -rf EasyRSA-3.0.1 /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
./easyrsa init-pki # 初始化證書目錄pki
./easyrsa build-ca nopass # 建立根證書,提示輸入Common Name,名稱隨意,但是不能和服務端證書或客戶端證書名稱相同
./easyrsa gen-dh # 生成Diffle Human引數,它能保證金鑰在網路中安全傳輸

製作服務端證書

./easyrsa build-server-full server nopass # server是服務端證書名稱,可以用其它名稱

製作客戶端證書

./easyrsa build-client-full barry nopass # barry是客戶端證書名稱,可以用其它名稱

4. 服務端配置

修改服務端配置檔案/etc/openvpn/server.conf內容如下:
local a.b.c.d # 填伺服器真實IP
port 1194
proto tcp
dev tun
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key
dh /etc/openvpn/easy-rsa/pki/dh.pem
server 10.8.0.0 255.255.255.0 # 給客戶端分配的IP段
ifconfig-pool-persist ipp.txt # 記錄客戶端和虛擬ip的對映關係,當客戶端重新連線時依然被分配斷開之前的IP地址
push "redirect-gateway def1 bypass-dhcp" # 重定向客戶端閘道器
push "dhcp-option DNS 8.8.8.8" # 選擇一個DNS,這裡用Google的DNS示例
client-to-client
keepalive 10 120
compress lz4-v2
push "compress lz4-v2"
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 3 # 日誌等級

開啟路由轉發支援,用 vi 編輯/etc/sysctl.conf檔案,修改以下引數
net.ipv4.ip_forward = 1
執行下面命令使sysctl.conf配置檔案生效並新增iptables轉發規則

sysctl -p
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
service iptables save

啟動OpenVPN服務

/usr/local/openvpn/sbin/openvpn --config /etc/openvpn/server.conf &

5. Windows PC客戶端配置

下載OpenVPN GUI客戶端,64位下載地址:
http://build.openvpn.net/downloads/snapshots/openvpn-install-2.4.0-I602-pr80v18.exe
下載好後按預設設定安裝即可。

將以下3個檔案下載下來並放到C:\Program Files\OpenVPN\config目錄下
/etc/easy-rsa/pki/private/barry.key
/etc/easy-rsa/pki/issued/barry.crt
/etc/easy-rsa/pki/ca.crt

新建客戶端配置檔案C:\Program Files\OpenVPN\config\client.opvn,寫入如下內容:
client
dev tun
proto tcp
remote a.b.c.d 1194 # 填伺服器真實IP
persist-key
persist-tun
ca ca.crt
cert barry.crt
key barry.key
verb 3 # 日誌等級

雙擊桌面的OpenVPN GUI圖示啟動連線,不出意外的話連線成功,如果失敗的話右鍵桌面右下角的OpenVPN GUI小圖示點選view log檢視錯誤日誌,找到具體報錯原因並解決。連線成功後在瀏覽器位址列輸入ip.cn,此時可以看到本地IP已變成OpenVPN伺服器的IP。

* 額外教程:配置VPN分流

雖然把OpenVPN伺服器搭建好了,但是有一個問題,客戶端所有應用的網路都走VPN通道了,有時只是想訪問某個站點或連線某個服務走VPN通道而已,其它的還是使用本地網路,也就是實現VPN分流效果。實現方法如下:
註釋/etc/openvpn/server.conf裡的以下兩行:
;push "redirect-gateway def1 bypass-dhcp"
;push "dhcp-option DNS 8.8.8.8"
新增推送到客戶端的路由規則,比如:
push "route 192.168.100.0 255.255.255.0"
假設192.168.100.0是VPN伺服器所在的區域網的網段,那麼新增這條規則後,客戶端也能訪問與VPN伺服器同一網段的其它機器了,上面的路由規則可以是具體IP,可以是網段,只要能符合路由表的規範。配置好後重新啟動OpenVPN服務,客戶端重新連線,此時可以發現只有訪問192.168.100.0網段時才會走VPN通道。