今天帶大家學習一下,用OpenVPN輕松實現內網穿透,打造專屬安全遠程訪問通道。
# 安裝openvpn
yum install openvpn |
1、用于生成openVPN所需的密鑰,服務端和客戶端所需的證書和密鑰
# 下載Easy RSA源碼包
1、下載地址:
https://github.com/OpenVPN/easy-rsa/releases
2、下載源碼包
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.1.2/EasyRSA-3.1.2.tgz
3、移動到固定位置
mv EasyRSA-3.1.2 /etc/openvpn/easy-rsa |
2、修改配置文件
1、把vars.example樣例文件重命名為vars,然后編輯
2、搜索 set_var EASYRSA_CA_EXPIRE 設置證書有效期一年
3、搜索 set_var EASYRSA_CERT_EXPIRE 設置服務有效期 |
3、使用Easy RSA在服務端生成私鑰和證書
1、使用easyrsa清理原有證書和私鑰:
./easyrsa clean-all
2、生成CA根證書:./easyrsa build-ca
這里輸入兩個根密碼,第三次回車即可
3、證書生成位置
/etc/openvpn/easy-rsa/pki/ca.crt |
4、為OpenVPN服務端生成server證書和私鑰
1、使用nopass參數設置不需要密碼,那么在啟動OpenVPN服務的時候就不提示輸入密碼
./easyrsa build-server-full server nopass
2、證書和密鑰的位置
服務端證書路徑:/etc/openvpn/easy-rsa/pki/issued/server.crt
服務端私鑰路徑:/etc/openvpn/easy-rsa/pki/private/server.key
3、生成Diffie-Hellman算法需要的密鑰文件:
./easyrsa gen-dh
4、生成tls-auth Key用于防止DDOS和TLS攻擊:
openvpn --genkey --secret ta.key
5、ta.key路徑
/etc/openvpn/easy-rsa/ta.key |
1、創建修改服務端配置文件
1、配置文件位置:/etc/openvpn/server/server.conf
vim /etc/openvpn/server/server.conf
====================================== BEGIN ===========================================
port 1194 #端口
dev tun #采用路由隧道模式tun
ca ca.crt #ca證書文件位置
cert server.crt #服務端公鑰名稱
key server.key #服務端私鑰名稱
dh dh.pem #交換證書
auth SHA1
proto tcp
server 10.8.0.0 255.255.255.0 #給客戶端分配地址池,注意:不能和VPN服務器內網網段有相同
push "route 10.0.8.2 255.255.252.0" #允許客戶端訪問內網10.0.8.2網段,我這里填了服務器內網IP和子網掩碼
client-to-client
verb 3 #openvpn版本
persist-key #通過keepalive檢測超時后,重新啟動VPN,不重新讀取keys,保留第一次使用的keys。
persist-tun #檢測超時后,重新啟動VPN,一直保持tun是linkup的。否則網絡會先linkdown然后再linkup
keepalive 10 120 #存活時間,10秒ping一次,120 如未收到響應則視為斷線
max-clients 200 #最多允許200個客戶端連接
ifconfig-pool-persist ipp.txt #地址池記錄文件位置 維持客戶端和virtual ip的對應表,以便客戶端重連接連接也是相同IP
duplicate-cn #和keys連接VPN,一定要打開這個選項,否則只允許一 個人連接VPN
script-security 3 #支持密碼認證-允許使用自定義腳本
auth-user-pass-verify /etc/openvpn/check.sh via-env #支持密碼認證-指定認證腳本
username-as-common-name #支持密碼認證-用戶密碼登陸方式驗證
====================================== END ===========================================
2、編寫用戶認證腳本文件
1、腳本文件位置:/etc/openvpn/check.sh
vim /etc/openvpn/check.sh
====================================== BEGIN 寫入下面內容 ===========================================
#!/bin/bash
PASSFILE="/etc/openvpn/openvpnfile" #密碼文件 用戶名 密碼明文
LOG_FILE="/var/log/openvpn-password.log" #用戶登錄情況的日志
TIME_STAMP=`date "+%Y-%m-%d %T"`
if [ ! -r "${PASSFILE}" ]; then
echo "${TIME_STAMP}: Could not open password file \"${PASSFILE}\" for reading." >> ${LOG_FILE}
exit 1
fi
CORRECT_PASSWORD=`awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}' ${PASSFILE}`
if [ "${CORRECT_PASSWORD}" = "" ]; then
echo "${TIME_STAMP}: User does not exist: username=\"${username}\",password=\"${password}\"." >> ${LOG_FILE}
exit 1
fi
if [ "${password}" = "${CORRECT_PASSWORD}" ]; then
echo "${TIME_STAMP}: Successful authentication: username=\"${username}\"." >> ${LOG_FILE}
exit 0
fi
echo "${TIME_STAMP}: Incorrect password: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
exit 1
====================================== END ===========================================
2、給腳本可執行權限
chmod +x /etc/openvpn/check.sh
3、創建用戶密碼
1、文件密碼存儲文件位置:/etc/openvpn/openvpnfile 2、內容格式:每行對應一個賬號密碼 koten 1 |
4、移動相關密鑰文件啟動服務
1、拷貝私鑰、公鑰和證書等文件到server.conf同級目錄/etc/openvpn/server/下
注:需要拷貝的文件包括ca.crt、ca.key、server.crt、server.key、dh.pem、ta.key
cp /etc/openvpn/easy-rsa/pki/ca.crt
cp /etc/openvpn/easy-rsa/pki/private/ca.key
cp /etc/openvpn/easy-rsa/pki/issued/server.crt
cp /etc/openvpn/easy-rsa/pki/private/server.key
cp /etc/openvpn/easy-rsa/pki/dh.pem
cp /etc/openvpn/easy-rsa/ta.key
2、啟動服務:使用--config path 指定配置文件
openvpn --config server.conf
到這里我們的服務端就搭建好了,使用ifconfig可以看到我們的服務端已經給自己分配了一個10.8.0.1的虛擬IP
1、安裝openVPn
# 安裝openvpn yum install openvpn |
2、在服務端生成客戶端的證書和私鑰,每個客戶端都要有自己的私鑰
1、在/etc/openvpn/easy-rsa/ 目錄下執行
./easyrsa build-client-full client nopass
注??:生成的時候需要輸入CA根證書的密碼
2、生成的證書位置
客戶端證書路徑:/etc/openvpn/easy-rsa/pki/issued/client.crt
客戶端私鑰路徑:/etc/openvpn/easy-rsa/pki/private/client.key
3、將生成的客戶端證書(client.crt)、私鑰(client.key),服務端根證書(ca.crt)、ta.key打包放到客戶端的 /etc/openvpn/client位置
3、創建/修改OpenVPN客戶端配置文件
1、編輯配置文件
client
dev tun
proto tcp
remote xx.xx.xx.xx 1194
ca ca.crt #指定CA證書的文件路徑
cert client.crt #指定當前客戶端的證書文件路徑
key client.key #指定當前客戶端的私鑰文件路徑
nobind #不綁定本地特定的端口號
auth SHA1
resolv-retry infinite #斷線自動重新連接,在網絡不穩定的情況下非常有用
verb 3 #指定日志文件的記錄詳細級別,可選0-9,等級越高日志內容越詳細
persist-key #通過keepalive檢測超時后,重新啟動VPN,不重新讀取keys,保留第一次使用的keys
persist-tun #檢測超時后,重新啟動VPN,一直保持tun是linkup的。否則網絡會先linkdown然后再linkup
auth-user-pass pass.txt #用戶密碼驗證
====================================== END ===========================================
4、創建賬號密碼文件
1、/etc/openvpn/client下創建用戶密碼文件pass.txt:格式第一行賬號,第二行密碼,如:
張三
123456 |
5、啟動客戶端
# 啟動客戶端
1、openvpn --config client.conf
觀察下圖:已經為我們分配的對應的虛擬IP,通過這個IP在這個網段內的機器都可以互通了 |
分別配置在Windows和Mac上使用下載地址:https://openvpn.net/client/
1、Windows客戶端下載:
https://swupdate.openvpn.org/community/releases/OpenVPN-2.6.12-I001-arm64.msi
2、Mac客戶端下載
https://swupdate.openvpn.net/downloads/connect/openvpn-connect-3.4.9.4830_signed.dmg
3、以Mac為例
把上面說到的Easy RSA生成的服務器根證書ca.crt、客戶端私鑰clientpc.key、證書client.crt,和ta.key復制到一個目錄下面
然后新建一個client.ovpn文件
client
dev tun
proto tcp
remote 41.19.18.17 1194
ca ca.crt #指定CA證書的文件路徑
cert client.crt #指定當前客戶端的證書文件路徑
key client.key #指定當前客戶端的私鑰文件路徑
nobind #不綁定本地特定的端口號
auth SHA1
resolv-retry infinite #斷線自動重新連接,在網絡不穩定的情況下非常有用
verb 3 #指定日志文件的記錄詳細級別,可選0-9,等級越高日志內容越詳細
persist-key #通過keepalive檢測超時后,重新啟動VPN,不重新讀取keys,保留第一次使用的keys
persist-tun #檢測超時后,重新啟動VPN,一直保持tun是linkup的。否則網絡會先linkdown然后再linkup
auth-user-pass pass.txt #用戶密碼驗證
新建pass.txt 文件,與客戶端的賬號密碼規則一樣,第一行為賬戶,第二行密碼
點擊導入配置文件
這樣就連上了,觀察本地IP,發現為我們也分配了一個虛擬IP
在我們本地就可以隨意訪問內網網絡了。
該文章在 2024/8/26 10:27:43 編輯過