如何在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伺服器,並開始使用它安全私密地連線到網際網路。

更新於:2023年5月12日

769 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告