知識庫 使用 Profitserver 服務的簡單說明
主要 知識庫 Linux 上的 VPN 伺服器設定:PPTP 還是 OpenVPN?

Linux 上的 VPN 伺服器設定:PPTP 還是 OpenVPN?


如今,VPN技術越來越流行。普通用戶使用VPN可以安全地存取互聯網。它還可以幫助繞過本地被封鎖的網站和服務,並防止可能的外部惡意行為。當您連接到 VPN 伺服器時,您的電腦和伺服器之間會有一個安全隧道,外部無法訪問,因此 VPN 伺服器就成為您的 Internet 接入點。目前有很多 VPN 服務,既有免費的也有付費的,但如果由於某種原因它們不適合您,您可以隨時配置自己的 VPN 伺服器。

要運行自己的VPN,你應該 租用VPS伺服器。有不同的軟體可以讓您建立 VPN 連線。它們因支援的作業系統和使用的演算法而有所不同。我們將介紹兩種設定 VPN 伺服器的獨立方法。第一個基於 PPTP 協議,該協議已經被認為是過時的並且不安全,但配置起來非常容易。另一個採用現代安全的軟體 OpenVPN,但需要安裝第三方客戶端應用程式和更徹底的設定過程。

在我們的測試環境中,我們將使用由 Ubuntu Server 18.04 提供支援的虛擬伺服器。將關閉伺服器上的防火牆,因為其配置值得一篇單獨的文章。我們將描述 Windows 10 上的安裝過程。

準備

無論您選擇哪個VPN伺服器,網路存取都將透過作業系統的整合方式設定。為了透過外部服務介面開放網路訪問,您必須允許介面之間的封包轉送並配置網路位址轉換。

若要開啟資料包轉發,請開啟文件 “/etc/sysctl.conf” 並改變 “net.ipv4.ip_forward” 參數值轉換為 1.

開啟 VPN 設定的封包轉發

為了在不重新啟動電腦的情況下套用更改,請執行以下命令

sudo sysctl -p /etc/sysctl.conf

網路位址轉換是透過 iptables的。首先,執行以下命令檢查外部網路介面的名稱 “ip鏈接秀” - 您將在下一步中需要它。我們的名字是 “ens3”.

ip link show

在所有本地網路節點的外部介面上啟用網路位址轉換。

sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE

注意,您需要指定您伺服器介面的真實名稱,它可以與我們的不同。

預設情況下,iptables 建立的所有規則在伺服器重新啟動後都會重設。為了防止這種情況,請使用 “iptables-持久” 公用事業。安裝以下套件:

sudo apt install iptables-persistent

在安裝過程的某個時刻,您將看到一個配置窗口,建議您保存當前的 iptables 規則。由於規則已經定義,只需確認並單擊 “是” 兩次。從現在起,伺服器重新啟動後規則將自動套用。

啟用地址轉換

PPTP服務器

服務器配置

安裝包:

sudo apt install pptpd

安裝結束後,開啟文件 “/etc/pptpd.conf” 在任何文字編輯器中並像這樣編輯:

option /etc/ppp/pptpd-options #path to the settings file
logwtmp #client connections logging mechanism
connections 100 #number of simultaneous connections
localip 172.16.0.1 #the address that will serve as a client gateway
remoteip 172.16.0.2-200 #range of addresses

之後,編輯文件 “/etc/ppp/pptpd-選項”。大多數參數均採用預設設定。

#name of the service for new client records
name pptpd
#restrict obsolete authentication methods
refuse-pap
refuse-chap
refuse-mschap
#allow a more secure authentication method
require-mschap-v2
#enable encryption
require-mppe-128
#specify dns servers for clients (use any available servers)
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd

在下一階段,您將需要為客戶端連線建立記錄。假設你想新增一個用戶 “vpn用戶” 與密碼 “1” 並允許他動態尋址。開啟文件 “/etc/ppp/chap-secrets” 並在文件末尾添加以下包含用戶參數的行:

vpnuser pptpd 1 *

“pptpd” value 是我們在文件中指定的服務的名稱 “pptpd 選項”。 代替 “ *” 您可以指定一個固定的IP位址。結果,文件 “chap-secrets” 應該看起來像這樣:

VPN 伺服器設定

要應用設定重置 PPTP 服務並將其新增至自動載入。

sudo systemctl restart pptpd
sudo systemctl enable pptpd

伺服器配置已完成。

客戶端配置

未結案工單 “開始” - “設置” - 網絡與互聯網 - “ VPN” 並點擊 “新增 VPN 連線”

設定 VPN 連線的用戶端

在開啟的視窗中輸入連線參數,然後點選 “保存”

  • VPN 提供者:“Windows(內建)”
  • 連線名稱:「vpn_connect」(您可以選擇任意名稱)
  • 伺服器名稱或位址:(指定伺服器的外部IP位址)
  • VPN 類型:“自動”
  • 登入資訊類型:“使用者名稱和密碼”
  • 用戶名: vpn用戶 (伺服器上的「chap-secrets」檔案中指定的名稱)
  • 密碼: 1 (如“chap-secrets”檔)

儲存參數後,您將在視窗中看到新的VPN連線。左鍵單擊連接並選擇 “連接”。如果連接成功,您將看到 “連接的” 狀態。

新增 VPN 連接

在選項中,您將找到客戶端和伺服器的內部位址。場地 “目的地址” 顯示外部伺服器位址。

如何自行設定 VPN 伺服器

連接後,伺服器的內部 IP 位址, 172.16.0.1 在我們的例子中,成為所有傳出資料包的預設閘道。

檢查外部 IP 位址

使用任何線上服務,您都可以確保電腦的外部 IP 位址現在與您的 VPN 伺服器的 IP 位址相同。

OpenVPN服務器

服務器配置

讓我們提升目前使用者的權限級別,因為對於進一步的配置,我們將需要 root 存取權限。

sudo -s

安裝所有必要的資料包。我們需要 “Easy-RSA” 資料包來管理加密金鑰。

apt install openvpn easy-rsa iptables-persistent

允許透過 UDP 協定在連接埠 1194 上進行傳入連線並套用 iptables 規則。

sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT

sudo netfilter-persistent save

建立一個包含從「Easy-RSA」套件複製的檔案的目錄並導航到該目錄。

make-cadir ~/openvpn

cd ~/openvpn

產生公鑰基礎設施 (PKI)。

./easyrsa init-pki

產生憑證授權單位 (CA) 根憑證。

./easyrsa build-ca

在建立過程中,系統會提示您設定並記住密碼。您還需要回答問題並輸入密鑰所有者的資訊。您可以保留方括號中提供的預設值。按“Enter”鍵完成輸入。

產生私鑰和證書請求。作為參數,指定一個任意名稱;在本例中,它是「vpn-server」。

./easyrsa gen-req vpn-server nopass

將通用名稱值保留為預設值。

對產生的伺服器憑證請求進行簽署。

./easyrsa sign-req server vpn-server

這一步回答「是」確認簽名,然後輸入產生根憑證時所建立的密碼。

產生 Diffie-Hellman 參數。這些參數用於伺服器和客戶端之間的安全性金鑰交換。

./easyrsa gen-dh

所有必要的文件都已產生。讓我們在 OpenVPN 工作目錄中建立一個「keys」資料夾來儲存金鑰,並將建立的檔案複製到那裡。

mkdir /etc/openvpn/keys

sudo cp pki/ca.crt pki/issued/vpn-server.crt pki/private/vpn-server.key pki/dh.pem /etc/openvpn/keys

使用以下方式設定 NAT iptables 規則。建立一個名為 nat 並在 /etc/openvpn/ 目錄。

#!/bin/sh

# Reset firewall settings
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

# Allow OpenVPN connections (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT

iptables -A INPUT -i tun0 -j ACCEPT

# (eth0 in our case, may vary):
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT

# (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Enable masquerading for the local network (eth0 in our case, may vary)
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE

# Deny incoming connections from outside
iptables -A INPUT -i eth0 -j DROP

# Deny transit traffic from outside (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -j DROP

sudo netfilter-persistent save

儲存檔案並使其可執行。

sudo chmod 755 /etc/openvpn/nat

複製伺服器配置模板。

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/

打開文件 “/etc/openvpn/server.conf” 為了進行編輯,請確保它包含以下行,並根據需要編輯它們:

#Port, protocol, and interface

port 1194

proto udp

dev tun
#Path to the encryption keys

ca /etc/openvpn/keys/ca.crt

cert /etc/openvpn/keys/vpn-server.crt

key /etc/openvpn/keys/vpn-server.key

dh /etc/openvpn/keys/dh.pem

#SHA256 Hashing Algorithm

auth SHA256
#Switching off additional encryption

#tls-auth ta.key 0
#Network parameters

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist /var/log/openvpn/ipp.txt

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 8.8.8.8"

push "dhcp-option DNS 8.8.4.4"
#Ping every 10 seconds to check the connection.

keepalive 10 120
#Set up AES-256 encryption for the tunnel.

cipher AES-256-GCM
#Demoting the service OpenVPN after launch

user nobody

group nogroup
#Switching on parameters saving after reboot

persist-key

persist-tun
#Set log verbosity

verb 3
#Redirecting logs

log-append /var/log/openvpn/openvpn.log
#Script the rule installation launch.

up /etc/openvpn/nat

在伺服器上啟用流量轉送。

sudo sysctl -w net.ipv4.ip_forward=1

echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf

啟動 OpenVPN 以套用設定。

systemctl restart openvpn@server

伺服器配置已完成!

客戶端配置

前往OpenVPN官方網站“https://openvpn.net”,轉到 “社區” 部分。

Заходим на официальный сайт проекта“https://openvpn.net”,переходим в раздел“COMUNITY”。

向下捲動並下載適用於您的作業系統版本的安裝程式。在我們的例子中,它是 Windows 11 ARM64。

пролистываем вниз и скачиваем инсталлятор для своей версии операционной си версии операционной сии версии операционной сисеемы。適用於 Windows 11 ARM64。

安裝應用程式時,所有參數均保留預設設定。

在下一個階段,您需要在伺服器上準備以下檔案並將其傳輸到客戶端電腦:

  • 公鑰和私鑰;
  • 認證中心密鑰的副本;
  • 設定檔模板。

連接到伺服器,提升權限,並導航到我們創建的目錄 "~/openvpn".

sudo -s

cd ~/openvpn

為客戶端產生私鑰和憑證請求。參數中指定任意名稱;在本例中為「client1」。

./easyrsa gen-req client1 nopass

輸入我們在建立根憑證時設定的密碼,並將 Common Name 值保留為預設值。

Вводим пароль, который мы устанавливали при создании корневого сертифиатании корневого сертифиатанианиантаиневого сертифоктан умолчанию。

對產生的客戶端憑證請求進行簽署。

./easyrsa sign-req client client1

這一步回答「是」確認簽名,然後輸入產生根憑證時所建立的密碼。

На этом шаге отвечаем "yes" для подтверждения подписи, после чего вводппаирол создании корневого сертификата。

為了方便起見,我們在主目錄中建立一個名為「client1」的資料夾,並將所有要傳輸到客戶端電腦的檔案複製到其中。

mkdir ~/client1

cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/

將客戶端設定檔範本複製到同一目錄。將檔案副檔名更改為 “ .ovpn” 複製時。

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn

更改目錄和所有檔案的擁有者 “〜/ client1 /” 能夠將它們分發給客戶。讓我們 “米哈伊爾” 在我們的案例中是所有者。

chown -R mihail:mihail ~/client1

轉到客戶端計算機並複製 “〜/ client1 /” 資料夾。你可以藉助 “PSCP” 實用程序,與 Putty 配合使用。

PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1

您可以儲存密鑰文件 “ca.crt”, “客戶端1.crt”, “client1.key” 無論你想要什麼。在我們的例子中,它們位於此資料夾中 “c:\Program Files\OpenVPN\keys”,我們模式化設定檔 “客戶端.ovpn”“c:\Program Files\OpenVPN\config” 目錄。

現在讓我們開始配置客戶端。開啟文件 “c:\Program Files\OpenVPN\config\client.ovpn” 在文字編輯器中編輯以下行:

#announce that this is the client

client
#interface and protocol just like on the server

dev tun

proto udp
#IP address of the server and port

remote ip_address 1194
#saving parameters after reload

persist-key

persist-tun
#key paths

ca “c:\\Program Files\\OpenVPN\\keys\\ca.cert”

cert “c:\\Program Files\\OpenVPN\\keys\\client1.crt”

key “c:\\Program Files\\OpenVPN\\keys\\client1.key”
#enable server verification

remote-cert-tls server
#disable extra encryption

#tls-auth ta.key 1

cipher AES-256-CBC

auth-nocache

verb 3

其餘部分保持不變。

儲存檔案並啟動客戶端應用程式 “OpenVPN 圖形使用者介面”.

VPN 設定完成

右鍵單擊任務欄中的應用程式圖標,然後選擇 “連接”。如果連接成功,圖示將變為綠色。

使用任何線上服務可確保您的公用 IP 位址已變更並且現在與伺服器的 IP 位址相同。

❮ 上一篇文章 如何在你的伺服器上設定 Wireguard VPN
下一篇文章❯ FTP 伺服器設定

向我們諮詢有關 VPS 的問題

無論白天或黑夜,我們隨時準備好解答您的問題。