Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 下 OpenVPN 伺服器與客戶端完整建置教學(含憑證、NAT、路由)

編輯:Linux 教學

環境與架構規劃

  • 伺服器:Fedora Core 2(示範用,現代建議 CentOS 7+/Ubuntu 20.04+)
  • 網卡:eth0 (公網 IP 61.1.1.2)、eth1 (內網 192.168.1.2)
  • 內網網段:192.168.0.0/16
  • VPN 隧道網段:10.8.0.0/24(TAP 模式)
  • 存取模式:NAT(伺服器非網關),客戶端經 VPN 存取內網

一、安裝前置套件

# 檢查並安裝 lzo 與開發套件
rpm -qa | grep lzo
# 若無,下載編譯或 yum install lzo lzo-devel

# 下載 OpenVPN 2.0_rc16(舊版示範,現行建議 2.5+)
wget https://mesh.dl.sourceforge.net/sourceforge/openvpn/openvpn-2.0_rc16.tar.gz
tar -zxvf openvpn-2.0_rc16.tar.gz
cd openvpn-2.0_rc16
./configure && make && make install

二、核心與裝置設定

# 建立 TUN/TAP 裝置節點
mknod /dev/net/tun c 10 200
echo "alias char-major-10-200 tun" >> /etc/modprobe.conf

# 啟用 IP Forward
echo 1 > /proc/sys/net/ipv4/ip_forward
# 永久生效
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

三、PKI 憑證體系建立

# 複製 easy-rsa 腳本
mkdir /etc/openvpn
cp -r easy-rsa /etc/openvpn
cd /etc/openvpn/easy-rsa

# 修改 vars 設定組織資訊
# 重點變數:KEY_COUNTRY、KEY_PROVINCE、KEY_CITY、KEY_ORG、KEY_OU、KEY_EMAIL、KEY_SIZE=2048
vi vars

# 初始化並產生 CA
. vars
./clean-all
./build-ca
# Common Name: OpenVPN Root CA

# 產生 Diffie-Hellman 參數
./build-dh
# 輸出 dh1024.pem(或 dh2048.pem)

# 產生伺服器憑證
./build-key-server server
# Common Name: Server No.1

# 產生客戶端憑證(每位用戶一組)
./build-key client1
# Common Name: client1(不可重複,否需 server 端加 duplicate-cn)

# 產生 TLS-Auth 金鑰(防 DoS)
openvpn --genkey --secret keys/ta.key

# 產生憑證撤銷清單
./make-crl vpncrl.pem

四、伺服器端設定檔 /etc/openvpn/server.conf

port 1194
proto udp
dev tap
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
crl-verify vpncrl.pem

server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

# 推送內網路由給客戶端
push "route 192.168.0.0 255.255.0.0"

# 允許客戶端互通
client-to-client

# Keepalive 偵測斷線
keepalive 10 120

# TLS-Auth 防禦
tls-auth ta.key 0

# 效能與安全
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
log /var/log/openvpn.log
verb 3

五、複製憑證至設定目錄

cd /etc/openvpn
cp easy-rsa/keys/{ca.crt,server.crt,server.key,dh1024.pem,ta.key,vpncrl.pem} .

六、啟動腳本與服務註冊

# 複製啟動腳本
cp sample-scripts/openvpn.init /etc/init.d/openvpn
chmod +x /etc/init.d/openvpn
chkconfig --add openvpn
chkconfig openvpn on
service openvpn start

七、客戶端設定檔 client.ovpn (Windows) / client.conf (Linux)

client
dev tap
proto udp
remote 61.1.1.2 1194
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun

# 內網路由(或由 server push)
route 192.168.0.0 255.255.0.0

ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
verb 4

八、Linux 客戶端啟動

# 複製 client.conf、ca.crt、client1.crt、client1.key、ta.key 至 /etc/openvpn
service openvpn start

九、Windows 客戶端 (OpenVPN GUI)

  1. 下載安裝 OpenVPN GUI。
  2. 將 client.ovpn、ca.crt、client1.crt、client1.key、ta.key 放入 C:\Program Files\OpenVPN\config\。
  3. 右鍵系統匣圖示 → Connect。

十、伺服器端 NAT 設定(讓客戶端存取內網)

# 確認 ip_forward 已開啟
sysctl -w net.ipv4.ip_forward=1

# SNAT 規則:VPN 網段 10.8.0.0/24 經 eth1 (192.168.1.2) 存取內網
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth1 -j SNAT --to-source 192.168.1.2

# 若內網主機預設閘道非此 VPN Server,需在內網閘道器加回程路由:
# route add -net 10.8.0.0/24 gw 192.168.1.2

十一、常見問題與調校

現象排查方向
客戶端連線成功但無法 Ping 內網1. 確認 server.conf 有 push route;2. 確認 iptables SNAT;3. 內網主機回程路由;4. 防火牆允許 TAP 介面流量
TLS Error: TLS key negotiation failed1. 時鐘不同步;2. ta.key 不匹配(server 0 / client 1);3. 防火牆封鎖 UDP 1194
頻繁斷線重連調整 keepalive 參數;檢查 MTU 設定;啟用 fragment/mssfix
效能不佳改用 UDP;啟用 comp-lzo;考慮 tun 模式(僅 IP 層,較輕量)

總結

OpenVPN 採用 SSL/TLS 加密、單一 UDP/TCP 埠穿透防火牆、支援 TAP(L2)與 TUN(L3)模式,是建置遠端存取 VPN 的首選方案。本教學涵蓋從 PKI 建立、伺服器/客戶端設定、NAT 路由到 Windows/Linux 客戶端部署的完整流程,遵循「憑證唯一、TLS-Auth 防禦、最小權限原則」即可構建安全、穩定的企業級 VPN。

Copyright © Windows教程網 All Rights Reserved