如何在CentOS 8/7上安裝和配置OpenVPN伺服器?
OpenVPN是一個流行的開源VPN協議,允許在網際網路上進行安全和私密的通訊。使用OpenVPN,您可以建立一個虛擬專用網路,可以從任何地方訪問,為遠端使用者提供安全和加密的連線。
在本文中,我們將討論如何在CentOS 8/7(一個流行的Linux發行版)上安裝和配置OpenVPN。
前提條件
在繼續安裝之前,我們需要確保我們具備以下前提條件:
具有root訪問許可權的CentOS 8/7伺服器。
一個靜態的公網IP地址。
在您的本地機器上安裝了SSH客戶端。
步驟1:安裝OpenVPN伺服器
第一步是在您的CentOS 8/7伺服器上安裝OpenVPN伺服器。為此,請以root使用者身份登入到您的伺服器並執行以下命令:
CentOS 8
dnf install -y openvpn
CentOS 7
yum install -y epel-release yum install -y openvpn
這將安裝OpenVPN伺服器和所有必要的依賴項。
步驟2:配置OpenVPN伺服器
安裝OpenVPN後,下一步是配置它。OpenVPN的配置檔案位於/etc/openvpn目錄中。
步驟2.1:生成伺服器證書和金鑰
在開始配置之前,我們需要生成伺服器證書和金鑰。為此,我們將使用EasyRSA工具。
首先,透過執行以下命令在您的CentOS 8/7伺服器上安裝EasyRSA:
dnf install -y easy-rsa
接下來,我們需要建立一個目錄來儲存我們的EasyRSA檔案。為此,請執行以下命令:
mkdir /etc/openvpn/easy-rsa
現在,我們需要將EasyRSA檔案從軟體包複製到我們新建立的目錄。為此,請執行以下命令:
cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/
接下來,我們需要編輯vars檔案以設定證書的預設值。為此,請執行以下命令:
nano /etc/openvpn/easy-rsa/vars
在這個檔案中,您會找到一些可以根據您的需要修改的變數。例如,您可以更改預設國家/地區、組織和電子郵件地址。
編輯完vars檔案後,儲存並退出。
現在,我們需要為EasyRSA初始化PKI(公共金鑰基礎設施)。為此,請執行以下命令:
cd /etc/openvpn/easy-rsa/ ./easyrsa init-pki
接下來,我們需要生成CA(證書頒發機構)證書和金鑰。為此,請執行以下命令:
./easyrsa build-ca nopass
這將生成沒有密碼的CA證書和金鑰。
接下來,我們需要生成伺服器證書和金鑰。為此,請執行以下命令:
./easyrsa build-server-full server nopass
這將生成沒有密碼的伺服器證書和金鑰。
步驟2.2:配置OpenVPN伺服器
現在我們已經生成了必要的證書和金鑰,下一步是配置OpenVPN伺服器。
為此,我們需要為OpenVPN伺服器建立一個配置檔案。為簡化起見,我們將在/etc/openvpn目錄中建立一個名為server.conf的檔案。為此,請執行以下命令:
nano /etc/openvpn/server.conf
在這個檔案中,貼上以下配置:
# OpenVPN server configuration file # Set port number port 1194 # Set protocol proto udp # Set server mode and network dev tun server 10.8.0.0 255.255.255.0 # Set server certificates and keys ca /etc/openvpn/easy-rsa/pki/ca.crt cert /etc/openvpn/easy-rsa/pki/issued/server.crt key /etc/openvpn/easy-rsa/pki/private/server.key dh /etc/openvpn/easy-rsa/pki/dh.pem # Set DNS server(s) push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" # Set cipher and HMAC digest cipher AES-256-CBC auth SHA256 # Set keepalive time keepalive 10 120 # Set logging level verb 3
讓我們仔細看看這些選項:
port − 此選項設定OpenVPN將監聽的埠號。預設值為1194。
proto − 此選項設定OpenVPN使用的協議。我們將使用UDP,它比TCP更快更有效。
dev − 此選項設定OpenVPN使用的網路裝置。我們將使用tun。
server − 此選項設定OpenVPN客戶端將使用的網路。我們將使用10.8.0.0/24。
ca, cert, key, dh − 這些選項設定我們之前生成的伺服器證書和金鑰。
push "dhcp-option DNS" − 此選項設定OpenVPN客戶端將使用的DNS伺服器。
cipher, auth − 這些選項設定OpenVPN將用於加密的密碼和HMAC摘要。
keepalive − 此選項設定OpenVPN連線的保持活動時間。
verb − 此選項設定OpenVPN的日誌記錄級別。
儲存並退出檔案。
接下來,我們需要建立一個目錄來儲存客戶端證書和金鑰。為此,請執行以下命令:
mkdir /etc/openvpn/client
現在,我們需要建立一個指令碼,該指令碼將生成客戶端證書和金鑰。為此,請執行以下命令:
nano /etc/openvpn/easy-rsa/gen-client.sh
在這個檔案中,貼上以下指令碼:
#!/bin/bash # Generate a client certificate and key if [ $# -ne 1 ]; then echo "Usage: $0 <client_name>" exit 1 fi CLIENT_NAME=$1 cd /etc/openvpn/easy-rsa/ ./easyrsa build-client-full $CLIENT_NAME nopass # Generate client configuration file cat > /etc/openvpn/client/$CLIENT_NAME.ovpn << EOF client dev tun proto udp remote `curl -s https://ipinfo.io/ip` 1194 resolv-retry infinite nobind persist-key persist-tun comp-lzo verb 3 <ca> $(cat /etc/openvpn/easy-rsa/pki/ca.crt) </ca> <cert> $(cat /etc/openvpn/easy-rsa/pki/issued/$CLIENT_NAME.crt) </cert> <key> $(cat /etc/openvpn/easy-rsa/pki/private/$CLIENT_NAME.key) </key> EOF # Set permissions on client configuration file chmod 600 /etc/openvpn/client/$CLIENT_NAME.ovpn
此指令碼使用EasyRSA工具生成客戶端證書和金鑰,然後建立一個包含客戶端連線到OpenVPN伺服器所需配置的客戶端配置檔案(.ovpn)。
配置檔案包含以下選項:
client − 此選項設定OpenVPN客戶端模式。
dev − 此選項設定OpenVPN使用的網路裝置。我們將使用tun。
proto − 此選項設定OpenVPN使用的協議。我們將使用UDP。
remote − 此選項設定OpenVPN伺服器的IP地址或域名和埠號。
resolv-retry − 此選項設定OpenVPN將重試解析伺服器地址的次數。
nobind − 此選項阻止OpenVPN繫結到特定的本地IP地址和埠號。
persist-key, persist-tun − 這些選項在連線之間保持金鑰和隧道裝置處於活動狀態。
comp-lzo − 此選項啟用LZO壓縮,這會減小透過VPN傳送的資料大小。
verb − 此選項設定OpenVPN的日誌記錄級別。
ca, cert, key − 這些選項設定我們之前生成的客戶端證書和金鑰。
儲存並退出檔案。
接下來,我們需要使gen-client.sh指令碼可執行。為此,請執行以下命令:
chmod +x /etc/openvpn/easy-rsa/gen-client.sh
步驟3:啟動和啟用OpenVPN伺服器
現在我們已經配置了OpenVPN伺服器,下一步是啟動和啟用它。為此,請執行以下命令:
啟動OpenVPN服務
systemctl start openvpn@server
啟用OpenVPN服務以便在啟動時啟動
systemctl enable openvpn@server
這將啟動OpenVPN服務並使其在啟動時自動啟動。
步驟4:生成客戶端證書和金鑰
要生成客戶端證書和金鑰,請執行我們之前建立的gen-client.sh指令碼。為此,請執行以下命令:
/etc/openvpn/easy-rsa/gen-client.sh client1
這將為名為“client1”的客戶端生成客戶端證書和金鑰。您可以將“client1”替換為您想要用於客戶端的任何名稱。
該指令碼還將建立一個客戶端配置檔案(/etc/openvpn/client/client1.ovpn),您可以使用它來連線到OpenVPN伺服器。
步驟5:連線到OpenVPN伺服器
要從客戶端機器連線到OpenVPN伺服器,您需要安裝OpenVPN客戶端。有很多OpenVPN客戶端可用於不同的平臺,例如OpenVPN Connect、Tunnelblick和OpenVPN GUI。
安裝OpenVPN客戶端後,您需要匯入我們之前建立的客戶端配置檔案(/etc/openvpn/client/client1.ovpn)。匯入配置檔案的確切過程將取決於您使用的OpenVPN客戶端。
匯入配置檔案後,您可以單擊“連線”按鈕連線到OpenVPN伺服器。如果一切配置正確,您應該能夠建立到OpenVPN伺服器的安全加密連線。
結論
在本文中,我們討論瞭如何在CentOS 8/7上安裝和配置OpenVPN伺服器。我們還討論瞭如何生成伺服器和客戶端證書和金鑰,以及如何從客戶端機器連線到OpenVPN伺服器。
OpenVPN是一個功能強大且靈活的VPN協議,可以提供在網際網路上安全和私密的通訊。透過本文中概述的步驟,您應該能夠在CentOS 8/7伺服器上設定OpenVPN伺服器,並開始使用它安全私密地連線到網際網路。