openVPN免流搭建流程 openVPN的搭建與使用
這段時間還做了一個雲平台,主要用到的技術就是openStack + openVPN。openStack組建了雲端環境,openVPN提供了安全通信。
這裡按照centos的版本不同,分為兩個部分,第一個部分是centos6.5的openvpn搭建,第二個部分是基於centos7的搭建。兩種方法都已經做了實際驗證,保障可用性。
文章主要是在別人的方案上做了稍微的改動和校錯,文中圖片也來自原作者,相應的參考文獻會在文章的最後列出,以示感謝。
openVPN是一個基於OpenSSL庫的應用層實現。其主要技術核心是虛擬網卡和SSL協議實現。可以實現多種複雜的業務場景需求,包括單個客戶端和伺服器,多客戶端和伺服器(客戶端不通訊),多客戶端和伺服器(客戶端互通),這裡的客戶端和服務端都可以擴展到區域網的層面上,即客戶所在網路和伺服器所在網路的複雜配置。
下面上乾貨
第一部分:centos 6.5中openvpn的搭建和使用
第一步、為vps安裝openvpn及所有所需軟體
A:安裝EPEL倉庫
yum install epel-release
B:安裝openvpn
yum install openvpn
C:安裝openvpn最新的easy-rsa,該包用來製作ca證書,服務端證書,客戶端證書。最新的為easy-rsa3
wget https://github.com/OpenVPN/easy-rsa/archive/master.zipunzip master.zip
如果你的機器不支持UNZIP命令可以參考」解決Linux VPS安裝UNZIP組件解壓文件」文章。
D:將解壓得到的文件夾easy-rsa-master重命名為easy-rsa
mv easy-rsa-master/ easy-rsa/
然後將的到的easy-ras文件夾複製到/etc/openvpn/目錄下
cp -R easy-rsa/ /etc/openvpn/
第二步、編輯vars文件,根據自己環境配置
A:先進入/etc/openvpn/easy-rsa/easyrsa3目錄
cp /etc/openvpn/easy-rsa/easyrsa3/
B:複製vars.example 為vars
cp vars.example vars
C:修改下面欄位,命令:vi vars,然後修改,最後wq保存
第三步、創建服務端證書及key
A:進入/etc/openvpn/easy-rsa/easyrsa3/目錄初始化:
./easyrsa init-pki
B:創建根證書
./easyrsa build-ca
如下:
Generating a 2048 bit RSA private key
…………………………………….+++ ……+++ writing new
private key to 『/root/easy-rsa/easyrsa3/pki/private/ca.key』 Enter PEM
pass phrase: Verifying - Enter PEM pass phrase: You are about to be
asked to enter information that will be incorporated into your
certificate request. What you are about to enter is what is called a
Distinguished Name or a DN. There are quite a few fields but you can
leave some blank For some fields there will be a default value, If you
enter 『.』, the field will be left blank. Common Name (eg: your user,
host, or server name) [Easy-RSA CA]:qingliu
CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/root/easy-rsa/easyrsa3/pki/ca.crt
注意:在上述部分需要輸入PEM密碼 PEM pass phrase,輸入兩次,此密碼必須記住,不然以後不能為證書籤名。還需要輸入common name 通用名,這個你自己隨便設置個獨一無二的。
eg:Common Name (eg: your user, host, or server name) [Easy-RSA CA]:qingliu
我輸入qingliu
C:創建伺服器端證書
./easyrsa gen-req server nopass
如下:
[root@localhost easyrsa3]# ./easyrsa gen-req server nopass Generating
a 2048 bit RSA private key
……………………………………………………………………..+++
……………………+++ writing new private key to
『/root/easy-rsa/easyrsa3/pki/private/server.key』 You are about to be
asked to enter information that will be incorporated into your
certificate request. What you are about to enter is what is called a
Distinguished Name or a DN. There are quite a few fields but you can
leave some blank For some fields there will be a default value, If you
enter 『.』, the field will be left blank. Common Name (eg: your user,
host, or server name) [server]:shuiqingliu
Keypair and certificate request completed. Your files are: req:
/root/easy-rsa/easyrsa3/pki/reqs/server.req key:
/root/easy-rsa/easyrsa3/pki/private/server.key
該過程中需要輸入common name,隨意但是不要跟之前的根證書的一樣
簽約服務端證書:
./easyrsa sign server server
如下:
You are about to sign the following certificate. Please check over the
details shown below for accuracy. Note that this request has not been
cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.
Request subject, to be signed as a server certificate for 3650 days:
subject= commonName = shuiqingliu Type the word 『yes』 to continue, or
any other input to abort. Confirm request details: yes Using
configuration from /root/easy-rsa/easyrsa3/openssl-1.0.cnf Enter pass
phrase for /root/easy-rsa/easyrsa3/pki/private/ca.key: Check that the
request matches the signature Signature ok The Subject』s Distinguished
Name is as follows commonName :PRINTABLE:』shuiqingliu』 Certificate is
to be certified until Apr 20 06:02:10 2024 GMT (3650 days)
Write out database with 1 new entries Data Base Updated
Certificate created at: /root/easy-rsa/easyrsa3/pki/issued/server.crt
該命令中.需要你確認生成,要輸入yes,還需要你提供我們當時創建CA時候的密碼。如果你忘記了密碼,那你就重頭開始再來一次吧。
D:創建Diffie-Hellman,確保key穿越不安全網路的命令:
./easyrsa gen-dh
如下:
Note: using Easy-RSA configuration from: ./vars Generating DH
parameters, 2048 bit long safe prime, generator 2 This is going to
take a long time
……..+……………………………….+..+…………………………………………………………………………………………………………………………….
DH parameters of size 2048 created at
/etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem
第四步、創建客戶端證書
A:進入root目錄新建client文件夾,文件夾可隨意命名,然後拷貝前面解壓得到的easy-ras文件夾到client文件夾,進入下列目錄
cd /root/mkdir clientcd clientcp -R easy-rsa/ client/cd client/easy-rsa/easyrsa3/
B:初始化
./easyrsa init-pki
C:創建客戶端key及生成證書(記住生成是自己輸入的密碼)
./easyrsa gen-req qingliu //名字自己定義
D:將的到的qingliu.req導入然後簽約證書
a.進入到/etc/openvpn/easy-rsa/easyrsa3/
cd /etc/openvpn/easy-rsa/easyrsa3/
b.導入req
./easyrsa import-req /root/client/easy-rsa/easyrsa3/pki/reqs/qingliu.req qingliu
c.簽約證書
./easyrsa sign client qingliu
//這裡生成client所以必須為client,qingliu要與之前導入名字一致
上面簽約證書跟server類似,就不截圖了,但是期間還是要輸入CA的密碼
E:這步很重要,現在說一下我們上面都生成了什麼東西
服務端:(etc/openvpn/easy-rsa/文件夾)
/etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt
/etc/openvpn/easy-rsa/easyrsa3/pki/reqs/server.req
/etc/openvpn/easy-rsa/easyrsa3/pki/reqs/qingliu.req
/etc/openvpn/easy-rsa/easyrsa3/pki/private/ca.key
/etc/openvpn/easy-rsa/easyrsa3/pki/private/server.key
/etc/openvpn/easy-rsa/easyrsa3/pki/issued/server.crt
/etc/openvpn/easy-rsa/easyrsa3/pki/issued/qingliu.crt
/etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem
客戶端:(root/client/easy-rsa文件夾)
/root/client/easy-rsa/easyrsa3/pki/private/qingliu.key
/root/client/easy-rsa/easyrsa3/pki/reqs/qingliu.req
//這個文件被我們導入到了服務端文件所以那裡也有
a.這一步就是拷貝這些文件放入到相應位置。將下列文件放到/etc/openvpn/ 目錄執行命令:
cp /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /etc/openvpncp /etc/openvpn/easy-rsa/easyrsa3/pki/private/server.key /etc/openvpncp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/server.crt /etc/openvpncp /etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem /etc/openvpn
這樣就將上述四個文件放入到了/etc/openvpn目錄下
b.這一步將下列文件放到/root/client 目錄下執行命令:
cp /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /root/clientcp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/qingliu.crt /root/clientcp /root/client/easy-rsa/easyrsa3/pki/private/qingliu.key /root/client
特別注意最後一個文件路徑不同於前兩個,需要特別注意。
這樣就將上述三個文件複製到了/root/client目錄,包括:ca.crt、qingliu.crt、qingliu.key
第五步、為服務端編寫配置文件
當你安裝好了openvpn時候,他會提供一個server配置的文件例子,在
/usr/share/doc/openvpn-2.3.2/sample/sample-config-files
下會有一個server.conf文件,我們將這個文件複製到/etc/openvpn
cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/server.conf /etc/openvpn
然後修改配置vi server.conf如下:
local 192.227.161.xx(跟自己vps IP) port 1194 proto udp dev tun ca
/etc/openvpn/ca.crt cert /etc/openvpn/server.crt key
/etc/openvpn/server.key # This file should be kept secret dh
/etc/openvpn/dh.pem server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt push 「redirect-gateway def1 bypass-dhcp」
push 「dhcp-option DNS 8.8.8.8」 keepalive 10 120 comp-lzo max-clients
100 persist-key persist-tun status openvpn-status.log verb 3
每個項目都會由一大堆介紹,上述修改,openvpn提供的server.conf已經全部提供,我們只需要去掉前面的注釋#,然後修改我們自己的有關配置。
第六步、下載openvpn客戶端,並進行配置
A:用sftp將我們在vps生成的客戶端證書和key下載到客戶端電腦
ca.crt qingliu.crt qingliu.key //這三個文件
B:去官網下載openvpn客戶端進行安裝,然後安裝目錄找到simple-config
D:Program FilesOpenVPNsample-configclient.ovpn
將client.ovpn 複製到D:Program FilesOpenVPNconfig下,當然我把客戶端裝在了D盤你根據自己情況選擇.
將下載到的三個文件放入D:Program FilesOpenVPNconfig下然後如下:
編輯配置文件:
client dev tun proto udp remote 192.227.161.xx 1194 //主要這裡修改成自己vps ip
resolv-retry infinite nobind persist-key persist-tun ca ca.crt
//這裡需要證書 cert qingliu.crt key qingliu.key comp-lzo verb 3
我們只需要以上項目每行一個。
第七步、測試排錯
A:啟動vps上的openvpn服務
service openvpn start
Oh,不幸的是出現service start failed!!!
但是當你運行:
Openvpn /etc/openvpn/server.conf
又可以運行,解決辦法:
刪除/etc/openvpn/下的ipp.txt openvpn-status.log
然後就可以啟動服務了。如果你還不能解決,那就去var/log中找message慢慢分析原因
B:啟動客戶端
打開openvpn gui啟動,注意在啟動後需要輸入創建qingliu.key時候的密碼!我前面讓你記住過的。然後進入如下界面
當不能長時間連接的時候你需要查看出錯誤log,我第一鏈接時候出錯了,tls的某個錯但是我已經解決了就是注釋掉客戶端配置文件中的#ns-cert-type server,這樣就不會出錯了。我提供給你的配置選項一修復問題。
鑒於以上操作,你的openvpn已經應該可以爭取運行了如下:
如果不能正常工作,請執行下面步驟:查看客戶端和伺服器端log———–google相應錯誤以及在openvpn官方論壇查找答案——solve it
第二部分 centos 7搭建openvpn
首先安裝epel倉庫
yum install epel-release
Step 1 — 安裝openvpn
yum install openvpn -y
Step 2 — 安裝easy-rsa
yum install easy-rsa -y
Step 3 — 配置 OpenVPN
cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpnvi /etc/openvpn/server.conf
大部分的行,只需要取消行前面的注釋符號即可(大部分配置,已經提供了demo), 這裡有一些需要修改的部分,按照下面的提示來操作即可:
dh dh2048.pem
push 「redirect-gateway def1 bypass-dhcp」
這一句是通知客戶端,重定向所有的通信都經過我們的openvpn來完成。
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"push "dhcp-option DNS 8.8.4.4"
user nobodygroup nobody
Step 4 — 生成秘鑰和證書
mkdir -p /etc/openvpn/easy-rsa/keys
cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa
vi /etc/openvpn/easy-rsa/vars
cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf
cd /etc/openvpn/easy-rsasource ./vars
./clean-all
./build-ca
./build-key-server server./build-dh
cd /etc/openvpn/easy-rsa/keyscp dh2048.pem ca.crt server.crt server.key /etc/openvpn
cd /etc/openvpn/easy-rsa./build-key client
Step 5 — 路由
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
vi /etc/sysctl.conf
確認或添加
重啟網路服務
systemctl restart network.service
Step 6 — 啟動 OpenVPN
Step 7 — 配置客戶端
將以下三個文件拷貝到客戶端的D:Program Files (x86)OpenVPNconfig文件夾下(客戶端以windows為例)
/etc/openvpn/easy-rsa/keys/ca.crt/etc/openvpn/easy-rsa/keys/client.crt/etc/openvpn/easy-rsa/keys/client.key
然後從D:Program Files (x86)OpenVPNsample-config中將client.ovpn拷貝到config文件中,並對其中的內容作出修改。
client
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
注意上面的文件中,dev模式、埠及協議類型要和服務端配置相同。
dev tun和tap的區別在於tap支持二層協議,而tun不支持。
啟動客戶端,輸入密碼,連接服務端。會看到被分配一個openvpn的地址,同時小圖標變綠,表示連接成功,若為黃色,則代表連接出現了問題或正在連接中。
a. 默認被分配的地址段為10.8.0.0/24,若和你本地的地址出現衝突,可以更改服務端配置文件,具體位置在server.conf中的
server 10.8.0.0 255.255.255.0
這一句,表示了分配到客戶端的地址段。
b. 若出現連接成功後,客戶端本地無法正常訪問外網,但卻可以和vpn服務端正常通訊。這是因為在服務端的配置文件中強行把路由推送到客戶端或者推送dhcp服務重定嚮導致的,更改server.conf中的
push "route 192.168.20.0 255.255.255.0"或push "redirect-gateway def1 bypass-dhcp"
廣而告之:
點擊展開全文
※Redis持久化存儲
※這真的是我見過的最全的全套視頻資源共2000G
※Nginx.conf配置文件全面解析
※想寫無Bug的安全代碼->看防禦性編程的藝術
※3980元的Hadoop大數據視頻教程限量領取!
TAG:PHP技術大全 |
※在 Windows 搭建 SVN 服務
※Docker搭建L2TP-VPN伺服器
※Docker環境下搭建DNS LVS(keepAlived) OpenResty伺服器簡易集群
※PC、移動端VPN搭建Shadowsocks一鍵安裝腳本
※使用 Angular CLI 搭建項目
※JMeter+Ant+Jenkins+SVN 介面自動化環境搭建
※NVIDIA線下交流會:手把手教你搭建TensorFlow&Caffe深度學習伺服器
※快速搭建CentOS+ASP.NET Core環境支持WebSocket
※搭建SpringMVC(非web.xml文件方式)
※使用 Visual Studio Code 搭建 C/C+開發和調試環境
※VMware虛擬機安裝CentOS 7並搭建Lamp伺服器環境
※使用Nginx+Keepalived搭建高可用服務,乾貨!
※自行搭建私有雲ownCloud,啟用SSL
※Keepalived+LVS+nginx搭建nginx高可用集群
※全球知名的遊戲開發商使用Genelec The Ones搭建沉浸式音頻製作間
※搭建Yearning 基於Inception的開源SQL審核平台
※Eclipse JSP/Servlet 環境搭建
※阿里雲伺服器Centos7.4搭建LNMP環境 WordPress安裝
※Coindesk也要發幣?|EOS矽谷測試網路完成搭建|Telegram放棄ICO計劃
※linux-CentOS搭建Git伺服器作為私有倉庫使用