腳本來源與適用範圍
- 腳本網址:
https://www.hi-vps.com/shell/vpn_centos6.sh (原文連結,建議改用維護中社區版 hwdsl2/setup-ipsec-vpn 支援 CentOS 7/8、Ubuntu、Debian、Alpine)
- 適用:CentOS 6 x86_64 (原腳本)、CentOS 7/8 (社區版)
- 協定:L2TP/IPsec (PSK 預共享金鑰),原生支援 Windows/macOS/iOS/Android 無需第三方客戶端。
部署三步驟
# 1. 下載並賦予執行權限
wget https://www.hi-vps.com/shell/vpn_centos6.sh
chmod +x vpn_centos6.sh
# 2. 執行腳本選單
bash vpn_centos6.sh
# 選單:
# 1) 安裝 VPN 服務
# 2) 修復 VPN
# 3) 新增 VPN 用戶
# 3. 選擇 1 安裝
# 過程自動安裝: xl2tpd, libreswan (ipsec), ppp, iptables 規則, 系統轉發
# 完成後自動生成一組隨機帳號/密碼 (預設用戶名: vpn)
用戶管理
# 新增用戶
bash vpn_centos6.sh
# 選擇 3 → 輸入用戶名 → 輸入密碼 → 完成
# 修改密碼 (手動編輯)
vim /etc/ppp/chap-secrets
# 格式: "username" l2tpd "password" *
# 修改後無需重啟服務即時生效
# 刪除用戶
# 刪除 /etc/ppp/chap-secrets 對應行
故障修復
# 連線失敗、無法獲取 IP、斷線重連異常
bash vpn_centos6.sh
# 選擇 2 修復 → 自動檢查 ipsec/xl2tpd/ppp/iptables/轉發
# 修復完成後建議重啟主機
reboot
關鍵配置檔位置 (手動微調參考)
| 檔案 | 用途 |
/etc/ipsec.conf | IPsec 連線參數 (PSK、加密套件、NAT-T) |
/etc/ipsec.secrets | PSK 預共享金鑰 |
/etc/xl2tpd/xl2tpd.conf | L2TP 監聽 IP、IP 範圍、認證要求 |
/etc/ppp/options.xl2tpd | PPP 協商參數 (DNS、MTU、認證方式) |
/etc/ppp/chap-secrets | 用戶帳號密碼 (CHAP) |
防火牆與核心參數 (腳本自動配置,驗證用)
# iptables 開放
iptables -A INPUT -p udp --dport 500 -j ACCEPT # IKE
iptables -A INPUT -p udp --dport 4500 -j ACCEPT # NAT-T
iptables -A INPUT -p udp --dport 1701 -j ACCEPT # L2TP
iptables -A FORWARD -s 192.168.42.0/24 -j ACCEPT # VPN 內網轉發
iptables -t nat -A POSTROUTING -s 192.168.42.0/24 -o eth0 -j MASQUERADE
# 核心轉發
sysctl -w net.ipv4.ip_forward=1
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
客戶端連線設定 (Windows 10 範例)
- 設定 → 網路和網際網路 → VPN → 新增 VPN 連線。
- 提供者:Windows (內建)、連線名稱任意、伺服器位址:VPS 公網 IP、VPN 類型:L2TP/IPsec (預共享金鑰)、預共享金鑰:腳本生成的 PSK (預設常為 "vpn" 或隨機字串)、登入資訊:使用者名稱/密碼。
- 儲存 → 連線。
安全建議:
1. 修改預設 PSK (/etc/ipsec.secrets)。
2. 強制強密碼策略。
3. 限制來源 IP (iptables -s 允許清單)。
4. 定期審查 /var/log/secure、/var/log/xl2tpd.log 異常登入。
5. 生產環境建議改用 WireGuard 或 OpenVPN (效能更好、審計更完善)。