19.基于Linux平臺下0penVPN服務器搭建

一、環(huán)境準備

開始之前:將所有的0penv替換為openv。你懂的

  • 模擬環(huán)境軟件:

    • VMware? Workstation 15 Pro
  • 網(wǎng)卡準備:

    • vmnet1:192.168.0.0/24 <-----> 企業(yè)內網(wǎng)
    • vmnet8:172.16.0.0/16 <-----> Internet外網(wǎng)
  • 機器準備

    • 服務端:
      • IP:內網(wǎng):192.168.0.66 外網(wǎng):172.16.0.66
      • 系統(tǒng):CentOS 7


        image-20210629161819331.png
  • 遠程主機:

    • vmnet8:172.16.10.10 <-----> 能ping通服務器172.16.0.66網(wǎng)卡接口
    • 系統(tǒng):Windows 7


      image-20210629161910362.png

客戶端:

  • vmnet1:192.168.0.100 <-----> 能ping通服務器192.168.0.66網(wǎng)卡接口
  • 系統(tǒng):Windows 7
image-20210629162010619.png

二、服務端搭建

01.0penVPN證書制作

easyrsa軟件下載地址:

https://github.com/0penVPN/easy-rsa/archive/refs/heads/master.zip

步驟:

(1)下載:

wget https://github.com/0penVPN/easy-rsa/archive/refs/heads/master.zip

(2)解壓:

    下載下來之后會得到一個`master.zip`的壓縮包,使用`unzip`命令進行解壓,解壓之后會得到一個名為`easy-rsa-master`的文件夾
# 沒有unzip命令的話,需要下載
yum -y install zip unzip.x86_64
# 解壓
unzip master.zip
# 查看解壓后生成的文件
ls
easy-rsa-master

(3)配置文件:

vars文件是為制作證書時所使用到的配置文件。里面主要是定義了在配置證書的時候需要填寫的變量。

cd easy-rsa-master/easyrsa3/
# 默認是沒有vars文件的,可以拷貝vars.example模板文件
cp vars.example vars
# 編輯文件,打開注釋,修改一下信息
vim vars
...
set_var EASYRSA_DN      "org"
set_var EASYRSA_REQ_COUNTRY     "cn"
set_var EASYRSA_REQ_PROVINCE    "Guangdong"
set_var EASYRSA_REQ_CITY        "Guangzhou"
set_var EASYRSA_REQ_ORG "xxx"
set_var EASYRSA_REQ_EMAIL       "10242048@qq.com"
...

注意:如果open client的配置文件中使用了ns-cert-type server則要打開此選項,制作server證書時會將一些信息寫入證書,
如不打開此選項,則open client會提示server certificate verify fail
set_var EASYRSA_NS_SUPPORT "yes"

02.生成根證書和密鑰

先初始化,會在當前目錄創(chuàng)建PKI目錄,用于存儲一些中間變量及最終生成的證書。

每條命令執(zhí)行之后都有些信息輸出,如出錯,會提示相關錯誤信息

pwd
/root/easy-rsa-master/easyrsa3
./easyrsa init-pki
# 創(chuàng)建根證書,首先會提示設置密碼,用于ca對之后生成的server和client證書簽名時使用,
# 會提示設置一些信息,因為我們已經在vars配置好了,我們一路回車,使用默認值就好了
./easyrsa build-ca
# 此時會在pki目錄里看到新生成幾個目錄和文件,我們重點關注ca.crt文件
# 這個文件是ca證書,也是根證書,跟密鑰會被保存在private目錄下

03.生成服務端證書和密鑰

創(chuàng)建server端證書和private key,nopass表示不加密private key,提示設置信息時,一路回車就行

./easyrsa gen-req server nopass

給server端證書做簽名,首先是對一些信息的確認,可以輸入yes,然后輸入build-ca時設置的那個密碼

./easyrsa sign server server

04.生成客戶端證書和密鑰

創(chuàng)建client端證書,需要單獨把easyrsa3文件夾拷貝出來一份,刪除里面的PKI目錄,然后進入到此目錄

pwd
/root/easy-rsa-master
mkdir easyrsa3_client
cp easyrsa3/* easyrsa3_client/
cd easyrsa3_client/
rm -rf pki/*

初始化,會在當前目錄創(chuàng)建PKI目錄,用于存儲一些中間變量及最終生成的證書

./easyrsa init-pki

創(chuàng)建client端證書和private key,nopass表示不加密private key,提示設置信息時,一路回車就行

./easyrsa gen-req client nopass

回到制作server證書時的那個easyrsa3目錄,導入client端證書,準備簽名

./easyrsa import-req client.req所在路徑 client

client.req應該在剛才制作client端證書的easyrsa3_client/pki/reqs/下面

pwd
cd easyrsa3
./easyrsa import-req ../easyrsa3_client/pki/reqs/client.req client

給client端證書做簽名,首先是對一些信息的確認,可以輸入yes,然后輸入build-ca時設置的那個密碼

./easyrsa sign client client

05.生成密鑰交換文件

創(chuàng)建Diffie-Hellman,時間會有點長,耐心等待

./easyrsa gen-dh

至此,server和client端證書已制作完畢

open server端需要的是:

easyrsa3/pki/ca.crt <制作server證書的文件夾>

easyrsa3/pki/private/server.key <制作server證書的文件夾>

easyrsa3/pki/issued/server.crt <制作server證書的文件夾>

easyrsa3/pki/dh.pem

open client端需要的是:

easy-rsa/easyrsa3/pki/ca.crt <制作server證書的文件夾>

easy-rsa/easyrsa3/pki/issued/client.crt <制作server證書的文件夾>

easy-rsa/easyrsa3/pki/private/client.key <制作client證書的文件夾>

06.安裝0penVPN

因為0penVPN依賴于epel源,所以需要準備好epel

curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

使用yum命令安裝

yum -y install 0penvpn
# 查看配置文件信息
rpm -ql 0penvpn

修改配置文件

cd /etc/0penvpn/
cp /usr/share/doc/0penvpn-2.4.11/sample/sample-config-files/server.conf /etc/0penvpn/
cat server.conf 
port 1194
proto udp
dev tun
ca keys/ca.crt
cert keys/server.crt
dh keys/dh.pem
server 10.0.1.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.0.1.0 255.255.255.0"
push "route 192.168.0.0 255.255.255.0"
keepalive 10 120
cipher AES-256-GCM
persist-key
persist-tun
status 0penvpn-status.log
verb 3
explicit-exit-notify 1

復制一份需要的證書文件到keys目錄下

mkdir /etc/0penvpn/keys
cd /root/easy-rsa-master/easyrsa3/pki/
cp ca.crt dh.pem issued/server.crt private/server.key /etc/0penvpn/keys/

建立生成拒絕服務攻擊的證書文件

/etc/0penvpn/keys
0penvpn --genkey --secret ta.key
[root@vpn keys]# ls
ca.crt  dh.pem  server.crt  server.key  ta.key

啟動路由轉發(fā)功能

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

啟動0penVPN服務

0penvpn --daemon --config /etc/0penvpn/server.conf
[root@vpn 0penvpn]# netstat -tlunp|grep 1194
udp        0      0 0.0.0.0:1194            0.0.0.0:*                           1362/0penvpn

三、客戶端(遠程主機)配置

在進行客戶端配置之前,確保主機能ping通服務器的外網(wǎng)卡接口,也就是

ping 172.16.0.66

但是并不能ping通內網(wǎng)卡接口。

客戶端下載:

https://swupdate.0penvpn.org/community/releases/0penvpn-install-2.4.5-I601.exe

準備配置文件和證書文件

cd 
mdkir client
cd client
cp /usr/share/doc/0penvpn-2.4.11/sample/sample-config-files/client.conf .
[root@vpn client-pki]# cat client.conf 
client
dev tun
proto udp
remote my-server-1 1194
remote 172.16.0.66 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-GCM
verb 3
mv client.conf client.ovpn
cp /root/easy-rsa-master/easyrsa3/pki/ca.crt /root/client
cp /root/easy-rsa-master/easyrsa3_client/pki/private/client.key /root/client
cp /root/easy-rsa-master/easyrsa3/pki/issued/server.crt /root/client
cp /etc/0penvpn/keys/ta.key /root/client/
[root@vpn client]# ls
ca.crt  client.crt  client.key  client.ovpn  ta.key

打包并傳到客戶端上

zip client.zip client/*

將壓縮包和0penVPN的安裝程序都傳到客戶端去


image-20210629161552929.png

安裝軟件,如果在安裝軟件的過程中提示需要安裝Microsoft .NET Framework時,需要聯(lián)網(wǎng)安裝,可以配置網(wǎng)絡的網(wǎng)關和DNS,讓客戶機聯(lián)網(wǎng)自動下載安裝。

解壓壓縮文件,將里面的證書和配置文件一起拷貝到0penVPN的安裝目錄下。


image-20210629162249867.png

在安裝好0penVPN之后,雙擊程序快捷方式,以管理員的身份運行,并修改默認的配置文件和日志文件路徑。


image-20210629162434666.png

配置好之后,可以點擊圖標的,建立連接,正常連接的話,會在彈出連接對話框之后自動關閉。

此時,查看電腦的IP地址之后,就會發(fā)現(xiàn)會多出一個地址,這個地址就是使用0penVPN撥號之后分配到的地址。


image-20210629163610570.png

簡單測試:

可以在客戶端終端輸入

ping 192.168.0.66

可以發(fā)現(xiàn)能正常ping通,說明客戶端可以連接到服務器的內網(wǎng)網(wǎng)卡,可以嘗試一下能否ping通局域網(wǎng)主機,輸入

ping 192.168.0.100

意外發(fā)現(xiàn)竟然連接超時,但是我們能正常ping通內網(wǎng)接口,說明不是0penVPN配置問題。

造成這個問題的原因可能是局域網(wǎng)主機沒有配置網(wǎng)關,無法響應我們的請求。

想要解決這個問題,有兩種方法:

1.給內網(wǎng)機器配置網(wǎng)關,通過網(wǎng)關相應遠程的請求。但是一般我們內網(wǎng)服務器為了安全,不建議上配置網(wǎng)關,連接外網(wǎng)。

2.配置iptables服務,通過修改nat表將地址轉化。

步驟:

在服務器端配置iptables服務

iptables -t nat -L
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -j  MASQUERADE
iptables -t nat -L
# 配置好之后會發(fā)現(xiàn)多出一條規(guī)則

四、內網(wǎng)服務器配置

內網(wǎng)服務器配置簡單,按照要求配置好IP地址,此時的電腦無法連接外網(wǎng),只能與服務器的內網(wǎng)卡通信,確保的內網(wǎng)主機的安全。

測試局域網(wǎng)主機與服務內網(wǎng)網(wǎng)卡的連通性:

ping 192.168.0.66

能正常連通。

重要的步驟:

在配置好之后,一定要關閉電腦的防火墻配置,因為到時遠程客戶機是以10.0.1.0網(wǎng)段進行訪問,會被拒絕。

五、連接測試

所有的連接測試都在遠程客戶端進行

01.先測試客戶端是否獲取0penVPN分配的內網(wǎng)地址:

02.測試客戶端是否能ping通服務器外網(wǎng)卡接口地址

03.測試客戶端是否能ping通服務器內網(wǎng)卡接口地址

04.測試客戶端是否能ping通服務器局域網(wǎng)主機


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容