CentOS7 install and configuration OpenVPN

OpenVPN是一個開源應用程序,可以通過公共Internet創建一個專用網絡。在我們開始之前,我們首先需要安裝Enterprise Linux(EPEL)存儲庫的額外包。下面就是關於如何在CentOS 7上設置Client和OpenVPN服務器的教程。

安裝EPEL套件庫,順道更新

# yum -y install epel-release && yum -y update

安裝 OpenVPN

首先我們需要安裝OpenVPN。我們還將安裝Easy RSA來生成我們的SSL密鑰對,這將保護我們的VPN連接。

# yum install -y openvpn easy-rsa

生成密鑰及證書的前置條件

3.1.創建密鑰與證書儲存目錄,並且準備好要產生密鑰與證書的相關文件:

# 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.cnf3.2.修改憑證的默認資料,之後產生憑證時就會自動填寫,不必再手動輸入。# vim /etc/openvpn/easy-rsa/vars所有憑證資料的預設值分別是:國家、省份、城市、組織、電子郵件位址、單位。... export KEY_COUNTRY="CN" export KEY_PROVINCE="GD" export KEY_CITY="ZHUHAI" export KEY_ORG="YUNXI" export KEY_EMAIL="[email protected]" export KEY_OU="IT YUNXI." ...

上述參數的值可以自定義設置,對配置無影響。

Server 端密鑰與證書生成

4.1.清除並刪除 keys 目錄下的所有 key# cd /etc/openvpn/easy-rsa以下步驟列出需要清理的目錄:# source ./varsNOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys# ./clean-all4.2.生成CA的密鑰及憑證,設定值不需修改的話,可以直接按Enter使用vars檔案裡的預設值。# ./build-ca4.3.生成 OpenVPN Server 端的密鑰及憑證,同樣可以使用vars檔案的預設值。注意:一直回車,直至最後有兩次交互,輸入 y 確認。# ./build-key-server renwoleserver4.4.生成 Diffie Hellman 參數,這個步驟比較久,可能要跑大約 6 分鐘左右。# ./build-dh4.5.將Server的密鑰及憑證放到主目錄裡:# cd /etc/openvpn/easy-rsa/keys# cp dh2048.pem ca.crt renwoleserver.crt renwoleserver.key /etc/openvpn 

生成 Client 端的密鑰及憑證,文件名可以自定義,有兩種方式,分別是:(一直回車即可)

5.1.生成不用輸入密碼的憑證:# /etc/openvpn/easy-rsa/build-key renwoleusers5.2.生成需要輸入密碼的憑證:# /etc/openvpn/easy-rsa/build-key-pass renwoleusers

生成TLS-auth密鑰(可選)

OpenVPN提供了TLS-auth功能,可以用來抵禦Dos、UDP端口淹沒攻擊。出於安全考慮,你可以啟用該功能;啟用該功能,你需要執行以下命令:

# cd /etc/openvpn# openvpn --genkey --secret ta.key6.目前我們總共產生了這些金鑰及憑證:# ll keys/total 8401.pem02.pemrenwoleserver.crtrenwoleserver.csrrenwoleserver.keyrenwoleusers.crtrenwoleusers.csrrenwoleusers.keyca.crtca.keydh2048.pemindex.txtindex.txt.attrindex.txt.attr.oldindex.txt.oldserialserial.old

配置 OpenVPN server.conf

OpenVPN安裝目錄默認存在 server.conf 配置文件,我們拷貝一份並修改使用:# cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn我們進入 /etc/openvpn/ 目錄編輯 server.conf 文件。配置完成後的內容如下:# egrep -v "^$|^#|^;" server.conflocal 10.10.204.62port 1194proto udpdev tunca ca.crtcert renwoleserver.crtkey renwoleserver.key # This file should be kept secretdh dh2048.pemserver 10.8.0.0 255.255.255.0ifconfig-pool-persist ipp.txtpush "redirect-gateway def1 bypass-dhcp"push "dhcp-option DNS 223.5.5.5"client-to-clientkeepalive 10 120tls-auth ta.key 0 # This file is secretcipher AES-256-CBCcompress lz4-v2push "compress lz4-v2"user nobodygroup nobodypersist-keypersist-tun#新增日誌路徑status /var/log/openvpn-status.loglog /var/log/openvpn.logverb 3explicit-exit-notify 1

啟動IP轉發功能

# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf# sysctl -p

配置firewall轉發規則

確保服務器可以轉發數據包到服務器內外網,開啟必要的通訊服務,並啟用IP偽裝(Masquerade)功能。

# firewall-cmd --permanent --add-service openvpn# firewall-cmd --permanent --add-masquerade# DEV=$(ip route get 223.5.5.5 | awk 'NR==1 {print $(NF-2)}' )# firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $DEV -j MASQUERADE# firewall-cmd --reload# firewall-cmd --list-allpublic (active)target: defaulticmp-block-inversion: nointerfaces: eth0sources:services: dhcpv6-client openvpn sshports:protocols:masquerade: yesforward-ports:sourceports:icmp-blocks:rich rules:

啟動 OpenVPN

重啟網絡與OpenVPN服務,並且讓OpenVPN開機後自動啟動:

# systemctl restart network# systemctl restart openvpn@server# systemctl enable openvpn@server

執行以下命令我們會看到一個新增的OpenVPN 專用網絡:tun0

# ip a...tun0: mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100link/noneinet 10.8.0.1 peer 10.8.0.2/32 scope global tun0valid_lft forever preferred_lft forever

Windows PC 客戶端的配置

12.1.下載 openvpn 客戶端並安裝:Windows系統下安裝,按照默認安裝完成即可。12.2.將Server端生成的Client密鑰與證書下載到本地並放在 C:\Program Files\OpenVPN\config 目錄下。需要下載的文件列表:/etc/openvpn/easy-rsa/keys/renwoleusers.crt/etc/openvpn/easy-rsa/keys/renwoleusers.key/etc/openvpn/easy-rsa/keys/ca.crt/etc/openvpn/ta.key12.3.將 C:\Program Files\OpenVPN\sample-config 下 client.ovpn 文件拷貝到 C:\Program Files\OpenVPN\config 目錄。client.ovpn 文件配置完成後的內容如下:clientdev tun;proto tcpproto udpremote 10.10.204.62 1194resolv-retry infinitenobindpersist-keypersist-tunca ca.crtcert renwoleusers.crtkey renwoleusers.keyremote-cert-tls servertls-auth ta.key 1cipher AES-256-CBCverb 3

此時點擊桌面上的 “OpenVPN GUI” 圖標,如果不出意外即可連接成功,若連接報錯,請查看分析 C:\Users\yunxi\OpenVPN\log\client.log 日誌文件。


分享到:


相關文章: