如今大部分關注都給了 WireGuard,這也理所當然。但 OpenVPN 仍有它的一席之地:它能跑在 TCP 443 埠上,路由器和企業用戶端裡都內建了它,而且在基於 UDP 的 VPN 被遮蔽的網路裡,它有時還能透過。如果您正是這種情況,下面是通往一台能用的伺服器最短、最可靠的路。
需要準備什麼
- 一台有獨立公用 IP 的 VPS。用戶端從網際網路連進來,所以 NAT 方案不行——個人使用的話,每月 $8 的 Nano-IP 足夠了。
- Ubuntu 22.04/24.04 或 Debian 12,以及 root 或 sudo 使用者。
- 大約十分鐘。
1. 執行安裝指令碼
手動搭建憑證頒發機構、金鑰和路由,一下午就沒了。angristan 寫的常用指令碼 openvpn-install 能一次搞定。下載下來,執行前先讀一遍——這是一個會修改您網路設定的 shell 指令碼,您應該知道它在做什麼:
curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh
less openvpn-install.sh
sudo ./openvpn-install.sh
指令碼會問幾個問題。合理的回答是:
- IP 位址: 伺服器的公用 IPv4(它會自動偵測)。
- IPv6: 如果想讓 IPv6 也走通道,選 yes。
- 埠: 預設
1194,如果打算用 TCP 就選443。 - 協議: UDP 更快;TCP 能穿過嚴格的防火牆。
- DNS: 任何您信任的公共解析伺服器。
- 壓縮: 不要。它和加密一起用有已知的安全問題。
最後它會產生第一個用戶端檔案,比如 /root/phone.ovpn。
2. 開放埠
指令碼會設定自己的 iptables 規則。如果您還在用 UFW,要顯式放行 VPN 埠:
sudo ufw allow 1194/udp
sudo ufw status
如果選了 TCP,就換成 443/tcp。
3. 把用戶端檔案傳到裝置上
透過 SSH 複製 .ovpn 檔案:
scp -P 22 root@203.0.113.10:/root/phone.ovpn .
把它匯入 OpenVPN Connect 應用、Linux 的 NetworkManager 或您的路由器。這個檔案裡有該用戶端的私鑰,要像密碼一樣對待:不要用郵件傳送,也不要放在共享資料夾裡。
4. 確認可以用了
在伺服器上:
systemctl list-units --type=service | grep -i openvpn
journalctl -u 'openvpn*' --since "10 min ago"
在用戶端連線後查一下您的公用 IP,應該顯示的是伺服器的位址。
新增和撤銷裝置
再執行一次指令碼:
sudo ./openvpn-install.sh
它會讓您選擇新增新用戶端、撤銷某個用戶端,或者徹底解除安裝 OpenVPN。每台裝置一個用戶端,這點小麻煩很值——筆電被偷時,您只撤銷那一個檔案,其他什麼都不用動。
實話實說的取捨
OpenVPN 比 WireGuard 更老也更重。它只在一個核心上加密,所以在 1 vCPU 的方案上,您跑不滿高速家庭頻寬。握手更慢,手機也更費電。如果您用不上 OpenVPN 特有的功能,那就改看我們的 WireGuard 指南——對大多數人,我們會推薦它。
OpenVPN 勝在相容性:在普通防火牆看來,TCP 443 跟平常的 HTTPS 流量沒什麼兩樣,而且很多裝置開箱就支援 OpenVPN。
關於個人 VPN 的更多背景,見 VPN 使用場景頁面;IPv4/IPv6 在我們各方案上的工作方式,見網路文件。
評論
目前還沒有評論。歡迎成為第一位。