一汛聚、環(huán)境準備
開始之前:將所有的0penv替換為openv。你懂的
-
模擬環(huán)境軟件:
- VMware? Workstation 15 Pro
-
網(wǎng)卡準備:
- vmnet1:192.168.0.0/24 <-----> 企業(yè)內(nèi)網(wǎng)
- vmnet8:172.16.0.0/16 <-----> Internet外網(wǎng)
-
機器準備
- 服務(wù)端:
- IP:內(nèi)網(wǎng):192.168.0.66 外網(wǎng):172.16.0.66
-
系統(tǒng):CentOS 7
image-20210629161819331.png
- 服務(wù)端:
-
遠程主機:
- vmnet8:172.16.10.10 <-----> 能ping通服務(wù)器172.16.0.66網(wǎng)卡接口
-
系統(tǒng):Windows 7
image-20210629161910362.png
客戶端:
- vmnet1:192.168.0.100 <-----> 能ping通服務(wù)器192.168.0.66網(wǎng)卡接口
- 系統(tǒng):Windows 7
二注盈、服務(wù)端搭建
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í)行之后都有些信息輸出预皇,如出錯侈玄,會提示相關(guān)錯誤信息
pwd
/root/easy-rsa-master/easyrsa3
./easyrsa init-pki
# 創(chuàng)建根證書,首先會提示設(shè)置密碼吟温,用于ca對之后生成的server和client證書簽名時使用序仙,
# 會提示設(shè)置一些信息,因為我們已經(jīng)在vars配置好了鲁豪,我們一路回車潘悼,使用默認值就好了
./easyrsa build-ca
# 此時會在pki目錄里看到新生成幾個目錄和文件,我們重點關(guān)注ca.crt文件
# 這個文件是ca證書爬橡,也是根證書治唤,跟密鑰會被保存在private目錄下
03.生成服務(wù)端證書和密鑰
創(chuàng)建server端證書和private key,nopass表示不加密private key,提示設(shè)置信息時糙申,一路回車就行
./easyrsa gen-req server nopass
給server端證書做簽名宾添,首先是對一些信息的確認,可以輸入yes,然后輸入build-ca時設(shè)置的那個密碼
./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鹿榜,提示設(shè)置信息時海雪,一路回車就行
./easyrsa gen-req client nopass
回到制作server證書時的那個easyrsa3目錄,導(dǎo)入client端證書舱殿,準備簽名
./easyrsa import-req client.req所在路徑 client
client.req應(yīng)該在剛才制作client端證書的easyrsa3_client/pki/reqs/下面
pwd
cd easyrsa3
./easyrsa import-req ../easyrsa3_client/pki/reqs/client.req client
給client端證書做簽名奥裸,首先是對一些信息的確認,可以輸入yes沪袭,然后輸入build-ca時設(shè)置的那個密碼
./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
復(fù)制一份需要的證書文件到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/
建立生成拒絕服務(wù)攻擊的證書文件
/etc/0penvpn/keys
0penvpn --genkey --secret ta.key
[root@vpn keys]# ls
ca.crt dh.pem server.crt server.key ta.key
啟動路由轉(zhuǎn)發(fā)功能
echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf
啟動0penVPN服務(wù)
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ù)器的外網(wǎng)卡接口伟恶,也就是
ping 172.16.0.66
但是并不能ping通內(nèi)網(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的安裝程序都傳到客戶端去
安裝軟件毅该,如果在安裝軟件的過程中提示需要安裝Microsoft .NET Framework時博秫,需要聯(lián)網(wǎng)安裝,可以配置網(wǎng)絡(luò)的網(wǎng)關(guān)和DNS眶掌,讓客戶機聯(lián)網(wǎng)自動下載安裝挡育。
解壓壓縮文件,將里面的證書和配置文件一起拷貝到0penVPN的安裝目錄下朴爬。
在安裝好0penVPN之后静盅,雙擊程序快捷方式,以管理員的身份運行寝殴,并修改默認的配置文件和日志文件路徑。
配置好之后明垢,可以點擊圖標的蚣常,建立連接,正常連接的話痊银,會在彈出連接對話框之后自動關(guān)閉抵蚊。
此時,查看電腦的IP地址之后,就會發(fā)現(xiàn)會多出一個地址贞绳,這個地址就是使用0penVPN撥號之后分配到的地址谷醉。
簡單測試:
可以在客戶端終端輸入
ping 192.168.0.66
可以發(fā)現(xiàn)能正常ping通,說明客戶端可以連接到服務(wù)器的內(nèi)網(wǎng)網(wǎng)卡冈闭,可以嘗試一下能否ping通局域網(wǎng)主機俱尼,輸入
ping 192.168.0.100
意外發(fā)現(xiàn)竟然連接超時,但是我們能正常ping通內(nèi)網(wǎng)接口萎攒,說明不是0penVPN配置問題遇八。
造成這個問題的原因可能是局域網(wǎng)主機沒有配置網(wǎng)關(guān),無法響應(yīng)我們的請求耍休。
想要解決這個問題刃永,有兩種方法:
1.給內(nèi)網(wǎng)機器配置網(wǎng)關(guān),通過網(wǎng)關(guān)相應(yīng)遠程的請求羊精。但是一般我們內(nèi)網(wǎng)服務(wù)器為了安全斯够,不建議上配置網(wǎng)關(guān),連接外網(wǎng)喧锦。
2.配置iptables
服務(wù)读规,通過修改nat
表將地址轉(zhuǎn)化。
步驟:
在服務(wù)器端配置iptables
服務(wù)
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ī)則
四裸违、內(nèi)網(wǎng)服務(wù)器配置
內(nèi)網(wǎng)服務(wù)器配置簡單掖桦,按照要求配置好IP地址,此時的電腦無法連接外網(wǎng)供汛,只能與服務(wù)器的內(nèi)網(wǎng)卡通信枪汪,確保的內(nèi)網(wǎng)主機的安全。
測試局域網(wǎng)主機與服務(wù)內(nèi)網(wǎng)網(wǎng)卡的連通性:
ping 192.168.0.66
能正常連通怔昨。
重要的步驟:
在配置好之后雀久,一定要關(guān)閉電腦的防火墻配置,因為到時遠程客戶機是以10.0.1.0網(wǎng)段進行訪問趁舀,會被拒絕赖捌。
五、連接測試
所有的連接測試都在遠程客戶端進行
01.先測試客戶端是否獲取0penVPN分配的內(nèi)網(wǎng)地址:
02.測試客戶端是否能ping通服務(wù)器外網(wǎng)卡接口地址
03.測試客戶端是否能ping通服務(wù)器內(nèi)網(wǎng)卡接口地址
04.測試客戶端是否能ping通服務(wù)器局域網(wǎng)主機