目錄
一:OpenVPN虛擬網絡專用
1.簡介:
OpenVPN是一個跨平台 VPN (虛擬專用網絡)客戶端/服務器。 與...兼容 微軟 Windows,GNU / Linux的,macOS操作系統,甚至有免費的應用程序 Android系統 以及 iOS系統。 OpenVPN的另一個優點是一些路由器制造商正在將其整合到他們的設備中,因此我們將有可能在路由器上配置OpenVPN服務器。
2.OpenVPN的作用
OpenVPN是基於免費軟件的軟件,它使我們能構建虛擬專用網絡(VPN) 以遠程連接到服務器。VPN的功能是幫助公司里的遠程用戶(出差,在家)、公司的分支機構、商業合作伙伴及供應商等公司和自己的公司內部網絡之間建立可信的安全連接或者是局域網連接,確保數據的加密安全傳輸和業務訪問,對於運維工程師來說,還可以連接不同的機房為局域網來處理相關事宜。
3.遠程訪問VPN服務
> 通過個人電腦遠程撥號到企業辦公網絡。
1. 一般為企業內部員工出差、休假或特殊情況下載原離辦公室的時候,又有需求訪問公司的內部網絡獲取相關資源,就可以通過VPN撥號到公司內部。此時遠程撥號的員工和辦公室內的員工以及其他撥號的員工之間都相當於在一個局域網內。例如:訪問內部的域控、文件服務器、OA系統等局域網應用。
2. 對於運維人員來說就是需要個人電腦遠程撥號到企業網站的服務器機房,遠程維護機房中的(無外網IP的)服務器。
這種形式的VPN一般在運維人員在工作中會經常遇到。
4.OpenVPN兩種類型的VPN體系結構
- 遠程訪問VPN: 我們有一個中央VPN服務器,以及幾個在您的計算機,智能手機,平板電腦或其他設備上安裝了軟件的VPN客戶端,它們都集中連接到VPN服務器。
- 站點到站點VPN: 此體系結構允許我們在不同站點之間進行互通,以通過安全的網絡共享資源,並使用端點到斷加密進行保護。這種類型的VPN允許我們與辦公室,公司總部等進行互相通信。
5.全面解析OpenVPN執行流程
1.遠程在家辦公,用戶 使用openvpn客戶端軟件,通過ip地址集中連接到公司的中央VPN服務器。
2.公司中央VPN服務器返回虛擬網卡給客戶端,客戶端通過內網ip訪問公司服務器設備機房。
NAT(網絡地址轉換) : 在計算機網絡中是一種在IP數據包通過路由器或防火牆時重寫來源IP地址或目的IP地址的技術。這種技術被普遍使用在有多台主機但只通過一個公有IP地址訪問互聯網的私有網絡中。它是一個方便且得到了廣泛應用的技術。當然,NAT也讓主機之間的通信變得復雜,導致了通信效率的降低。
INTERNET : 因特網
10.10.10.0/30 : 虛擬網卡
公共IP : 公共IP地址是您的家庭或企業路由器從ISP接收的IP地址。 任何可公開訪問的網絡硬件都需要公共IP地址,例如家庭路由器以及托管網站的服務器。 公共IP地址是插入公共互聯網的所有設備的不同之處。 每個訪問互聯網的設備都使用唯一的IP地址。
OPENVPNSERVER : VPN中央服務器
GitHub地址:https://github.com/OpenVPN/openvpn
6.Openvpn定義
OpenVPN是一個用於創建虛擬專用網絡加密通道的軟件包,最早由James Yonan編寫。OpenVPN允許創建的VPN使用公開密鑰、電子證書、或者用戶名/密碼來進行身份驗證。
7.Openvpn原理
OpenVPN的技術核心是虛擬網卡,其次是SSL協議實現。
二:全面了解 OpenVPN中的虛擬網卡
虛擬網卡是使用網絡底層編程技術實現的一個驅動軟件。安裝此類程序后主機上會增加一個非真實的網卡,並可以像其它網卡一樣進行配置。服務程序可以在應用層打開虛擬網卡,如果應用軟件(如網絡瀏覽器)向虛擬網卡發送數據,則服務程序可以讀取到該數據。如果服務程序寫合適的數據到虛擬網卡,應用軟件也可以接收得到。虛擬網卡在很多的操作系統中都有相應的實現,這也是OpenVPN能夠跨平台使用的一個重要原因。
在OpenVPN中,如果用戶訪問一個遠程的虛擬地址(屬於虛擬網卡配用的地址系列,區別於真實地址),則操作系統會通過路由機制將數據包(TUN模式)或數據幀(TAP模式)發送到虛擬網卡上,服務程序接收該數據並進行相應的處理后,會通過SOCKET從外網上發送出去。這完成了一個單向傳輸的過程,反之亦然。當遠程服務程序通過SOCKET從外網上接收到數據,並進行相應的處理后,又會發送回給虛擬網卡,則該應用軟件就可以接收到。
三:OpenVPN使用一組在傳輸層工作的SSL / TLS協議,我們有兩種操作類型:
TUN :本 TUN 控制器模擬點對點設備,用於創建 使用IP協議運行的虛擬隧道 。 這樣,通過它傳輸的所有數據包都可以封裝為TCP段或UDP數據報(稍后您將看到我們選擇UDP而不是TCP,並且您會問為什么,因為TCP是可連接的,可靠的並且面向Connection )。 鏈接每一端后面的計算機將屬於不同的子網。
TAP :模擬這些虛擬隧道的以太網網絡接口(通常稱為網橋或網橋模式) 直接封裝以太網數據包 。 這種情況允許包裝與IP不同的結構。 鏈接兩端的機器可以作為同一子網的一部分(如果使用IP協議)。 網橋操作模式對於鏈接遠程用戶特別有用,因為它們可以連接到同一台服務器並且實際上是主網絡的一部分,但是,如果連接了源的專用網絡與目的地重合,則我們將遇到路由問題和交流將無法進行。
在眾多的VPN產品中,OpenVPN無疑是Linux下開源VPN的經典產品,他提供了良好的訪問性能和友好的用戶GUI。
四:部署OpenVPN流程
OpenVPN 分為客戶端和服務端
server : 服務端
client : 客戶端
1.服務端證書
1.安裝openvpn和證書工具
[root@m01 ~]# yum -y install openvpn easy-rsa
作用:
為什么要證書?
openvpn其實是ssl,需要證書,證書需要證書工具
2.查看是否安裝成功
rpm -q openvpn
3.生成服務器配置文件
[root@m01 ~]# cp /usr/share/doc/openvpn-2.4.11/sample/sample-config-files/server.conf /etc/openvpn/
4.准備證書簽發相關文件
[root@m01 ~]# cp -r /usr/share/easy-rsa/ /etc/openvpn/easy-rsa-server
5.准備簽發證書相關變量的配置文件
[root@m01 ~]# cp /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openvpn/easy-rsa-server/3/vars
作用:
證書相關變量的配置文件內寫的內容
vim /etc/openvpn/easy-rsa-server/3/vars
CA的證書有效期默認為10年,可以適當延長,比如:36500天
私鑰 10年
set_var EASYRSA_CA_EXPIRE 3650
set_var EASYRSA_CA_EXPIRE 36500
服務器證書默認為825天,可以延長,比如:3650天
set_var EASYRSA_CERT_EXPIRE 825
將上面修改成下面
set_var EASYRSA_CERT_EXPIRE 3650
6.初始化PKI生成PKI相關目錄和文件
[root@m01 3]# cd /etc/openvpn/easy-rsa-server/3
7.初始化數據,在當前目錄下生成pki目錄及相關文件
[root@m01 3]# ./easyrsa init-pki
8.創建CA機構
[root@m01 3]# ./easyrsa build-ca nopass
注意:
默認即可
9.驗證CA證書
[root@m01 3]# openssl x509 -in pki/ca.crt -noout -text
10.創建服務端證書申請
[root@m01 3]# ./easyrsa gen-req server nopass
注意:
默認即可
11.創建證書
[root@m01 3]# ./easyrsa sign server server
作用:
服務器證書創建完畢
12.驗證證書
[root@m01 3]# diff pki/certs_by_serial/ADBFFB9F45E5CEF861E7F642BA6C447E.pem pki/issued/server.crt
驗證是否成功解析:
1.沒有任何輸出代表正確
2.有任何輸出代表錯誤
2.創建 Diffie-Hellman 密鑰
創建 Diffie-Hellman 密鑰有兩種方法均可使用
方式一:
[root@m01 3]# ./easyrsa gen-dh
注意:
請耐心等待(短則 1分鍾 長則 10分鍾)
方式二:
[root@m01 3]# openssl dhparam -out /etc/openvpn/dh2048.pem 2048
3.客戶端證書
1.生成客服端配置文件
[root@m01 3]# cp -r /usr/share/easy-rsa/ /etc/openvpn/easy-rsa-client
2.准備證書簽發相關文件
[root@m01 3]# cp /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openvpn/easy-rsa-client/3/vars
3.切換到cd目錄
[root@m01 3]# cd /etc/openvpn/easy-rsa-client/3
4.初始化證書目錄
[root@m01 3]# ./easyrsa init-pki
5.生成客戶端證書
[root@m01 3]# ./easyrsa gen-req chenyang nopass
注意:
可設定名字 默認
6.將客戶端證書請求文件復制到CA的工作目錄
[root@m01 3]# cd /etc/openvpn/easy-rsa-server/3
[root@m01 3]# ./easyrsa import-req /etc/openvpn/easy-rsa-client/3/pki/reqs/chenyang.req chenyang
作用解析:
CA : 服務端 切換到服務端
讓客戶端和服務端關聯 相當於加載了客戶端證書《請求》
server : 服務端
client : 客服端
7.簽發客戶端證書
[root@m01 3]# pwd
/etc/openvpn/easy-rsa-server/3
[root@m01 3]# ./easyrsa sign client chenyang
解析:
通過服務端簽發客戶端《證書》
8.驗證
[root@m01 3]# cat pki/index.txt
V 240401022739Z ADBFFB9F45E5CEF861E7F642BA6C447E unknown /CN=server
V 240401023724Z 47765AD8225E12A13FB1EEBAC769B999 unknown /CN=chenyang
[root@m01 3]# ll pki/certs_by_serial/
total 16
-rw------- 1 root root 4438 Dec 28 10:37 47765AD8225E12A13FB1EEBAC769B999.pem
-rw------- 1 root root 4552 Dec 28 10:27 ADBFFB9F45E5CEF861E7F642BA6C447E.pem
- 安裝 openVPN GUI
4.創建鏈接配置文件
1、修改openvpn配置文件
1.1 文件內注釋全去掉
grep -Ev '^#|^$' /etc/openvpn/server.conf
1.2 清空
>/etc/openvpn/server.conf
1.3 vim進入文件將以下復制
[root@m01 3]# vim /etc/openvpn/server.conf
port 1194
proto tcp
dev tun
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/server.crt
key /etc/openvpn/certs/server.key
dh /etc/openvpn/certs/dh.pem
server 10.8.0.0 255.255.255.0
push "route 172.16.1.0 255.255.255.0"
keepalive 10 120
cipher AES-256-CBC
compress lz4-v2
push "compress lz4-v2"
max-clients 2048
user openvpn
group openvpn
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
verb 3
mute 20
啟動VPN會啟動tun網卡
- 啟動VPN會啟動tun網卡顯示虛擬網卡
2.創建日志文件目錄
[root@m01 ~]# mkdir -p /var/log/openvpn
3.創建權限
[root@m01 ~]# chown openvpn.openvpn /var/log/openvpn
4.創建存放證書目錄
[root@m01 ~]# mkdir -p /etc/openvpn/certs
5.復制證書
[root@m01 ~]# cp /etc/openvpn/easy-rsa-server/3/pki/dh.pem /etc/openvpn/certs/
[root@m01 ~]# cp /etc/openvpn/easy-rsa-server/3/pki/ca.crt /etc/openvpn/certs/
[root@m01 ~]# cp /etc/openvpn/easy-rsa-server/3/pki/private/server.key /etc/openvpn/certs/
[root@m01 ~]# cp /etc/openvpn/easy-rsa-server/3/pki/issued/server.crt /etc/openvpn/certs/
6.查看證書是否復制
[root@m01 ~]# ll /etc/openvpn/certs/
total 20
-rw------- 1 root root 1172 Dec 28 10:54 ca.crt
-rw------- 1 root root 424 Dec 28 10:54 dh.pem
-rw------- 1 root root 4552 Dec 28 10:54 server.crt
-rw------- 1 root root 1704 Dec 28 10:54 server.key
7.啟動OpenVPN
# 開啟系統內核網絡轉發功能(CentOS 默認是關閉的)
[root@m01 ~]# echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf
[root@m01 ~]# sysctl -p
注意:
如優化腳本init以開啟,就不需要再啟動了
8.安裝iptables
[root@m01 ~]# yum install iptables-services -y # 安裝
9.關閉firewalld防火牆
[root@m01 ~]# systemctl disable --now firewalld # 關閉
10.啟動iptables防火牆
[root@m01 ~]# systemctl start iptables # 啟動防火牆
11.查看防火牆狀態
systemctl status iptables
12.重啟
systemctl restart iptables
13.清空iptables
[root@m01 ~]# iptables -F
[root@m01 ~]# iptables -F -t nat
14.添加iptables規則
[root@m01 ~]# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
注意:
iptables 重啟就會失效 所以用到了永久保存
‘’‘’圖‘’‘’
15.永久保存Iptables規則
[root@m01 ~]# service iptables save
16.啟動OpenVPN
[root@m01 ~]# systemctl enable --now openvpn@server
17.查看啟動OpenVPN狀態
systemctl status openvpn@server
18.創建鏈接文件
[root@m01 ~]# mkdir -p /etc/openvpn/client/chenyang/
19.准備證書
[root@m01 chenyang]# cp /etc/openvpn/easy-rsa-server/3/pki/ca.crt /etc/openvpn/client/chenyang/
[root@m01 chenyang]# cp /etc/openvpn/easy-rsa-server/3/pki/issued/chenyang.crt /etc/openvpn/client/chenyang/
[root@m01 chenyang]# cp /etc/openvpn/easy-rsa-client/3/pki/private/chenyang.key /etc/openvpn/client/chenyang/
20.准備鏈接文件(將以下內容寫入文件)
[root@m01 ~]# vim /etc/openvpn/client/chenyang/client.ovpn
client
dev tun # tun網卡
proto tcp # tcp協議
remote 192.168.15.81 1194 # 公網 端口
resolv-retry infinite
nobind
ca ca.crt
cert chenyang.crt # 客戶端證書
key chenyang.key # 證書請求 私鑰
remote-cert-tls server
cipher AES-256-CBC
verb 3 # 不能隨意改動
compress lz4-v2 # 壓縮
六:連接OpenVPN部署
1.打開xftp,輸入linux源地址ip
2.將linux目標服務器配置托到OpenVPN指定路徑
3.打開OpenVPN連接。
4.顯示Successful代表成功
5.部署成功《模擬遠程連接測試》
- 提前虛擬機開啟普羅米修斯服務器,在Xshell 連接普羅米修斯服務器 實戰遠程內網連接。出現以下即成功!