Cloud | OpenVPN Server 建置手冊(Linode + VLAN 架構)
💬 前言
這篇文章是一份技術筆記,紀錄我在 Linode 上建置 OpenVPN Server + VLAN 架構 的過程。
內容僅涵蓋核心流程與設定檔,沒有完整的手把手教學或大量圖片,主要方便自己與後續需要的人快速參考與重現。
📝 筆記
建立 Linode VM(vpn-server)
- 登入 Linode 控制台
- 點選「Create → Linode」
- 設定以下參數:
- Region:選擇離用戶最近的地區
- 例:
JP, Tokyo 3 (jp-tyo-3)
- 例:
- Image:Ubuntu 22.04 LTS
- Linode Plan:Shared CPU → 最小即可(如 Nanode 1 GB)
- Label:
vpn-server - Root Password:設定安全密碼
- 例:(
L9v"*****************************+@>v) - 建議:複雜密碼產生器
- 例:(
- VLAN:
- VLAN 名稱:
vlan100 - IPAM Address (optional):
192.168.100.10/24
- VLAN 名稱:
- Region:選擇離用戶最近的地區
- 建立完成後,記下公網 IP(供 VPN Client 連線)
- 關閉 Linode 的自動網路設定(Auto-configure networking)
- 在 Linode 控制台中,點選該 VM → Configurations → Edit
- 找到「Network Helper」或「Auto-configure networking」選項,取消勾選
📝 這樣可以避免 Linode 在開機時自動覆蓋你的 /etc/network/interfaces 或 netplan 設定;避免自動插入 iptables NAT/MASQUERADE 規則,確保你的手動防火牆設定不被干擾;適合需要自訂 VLAN、VPN、防火牆、靜態 IP 的架構
- 修改後請重新啟動 VM 讓設定生效
連線至 VM
1 | ssh root@<你的公網 IP> |
安裝 OpenVPN(使用 Nyr 腳本)
1 | wget https://git.io/vpn -O openvpn-install.sh |
安裝過程會互動式詢問:
基本上一路「Enter」即可。
- IP 位址:預設為偵測到的公網 IP,通常可直接按 Enter
- 通訊協定:建議選
UDP - Port:預設
1194,可自訂 - DNS:可選 Google DNS(8.8.8.8)或其他
- Client 名稱:不輸入預設為:client.ovpn。
📝 輸入如
global,將產生global.ovpn
修改 .ovpn 檔案
1 | vim /root/client.ovpn |
新增 auth-user-pass
範例:
1 | client |
修改 server.conf 檔案
1 | vim /etc/openvpn/server/server.conf |
在最末端增加下列三行:
1 | auth-user-pass-verify /etc/openvpn/check_user.sh via-env |
⚠️
push "route 192.168.100.0 255.255.255.0"中的虛參考VLAN的設定值做更改。
新增 check_user.sh 檔案
1 | vim /etc/openvpn/check_user.sh |
內容:
1 |
|
調整 check_user.sh 檔案權限
1 | chmod +x /etc/openvpn/check_user.sh |
新增 userlist.txt 檔案
1 | vim /etc/openvpn/userlist.txt |
內容:
1 | aa:abc123 |
📝 每組帳號格式為
帳號:密碼並換行。
調整 userlist.txt 檔案權限
1 | chmod +x /etc/openvpn/userlist.txt |
重新啟動 OpenVPN 服務
1 | systemctl restart openvpn-server@server.service |
觀察啟動狀態:
1 | systemctl status openvpn-server@server.service |
📝 Active: active (running) 表示為啟動。
🔥 防火牆設定
啟用 IP 轉送
1 | echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf |
📝 echo 輸出應該為
net.ipv4.ip_forward = 1
如不為 1,才需要執行
1 | sysctl -w net.ipv4.ip_forward=1 |
清除所有 NAT 表規則
觀看目前 iptables nat 設定:
1 | iptables -t nat -L -n -v |
清除所有 NAT 表規則:
1 | iptables -t nat -F |
聯外:VPN Client → 公網(Google、YouTube 等)
1 | iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 192.168.100.0/24 -o eth0 -j MASQUERADE |
📝 當 VPN 用戶(10.8.0.0/24)要連到非 LAN(192.168.100.0/24)網段,並且封包是從 eth0 出口送出時,將來源 IP 改成 eth0 的 IP。
VLAN 內部:VPN Client → nginx-server(192.168.100.20)
1 | iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 192.168.100.0/24 -j SNAT --to-source 192.168.100.10 |
📝 當 VPN 用戶(10.8.0.0/24)要連到內部網段(192.168.100.0/24)時,將他們的來源 IP 改成 192.168.100.10,讓 LAN 內設備以為是本地設備發出的請求。
清除所有 FORWARD 規則
觀看目前 iptables FORWARD 設定:
1 | iptables-save | grep FORWARD |
清除所有 FORWARD 規則
1 | iptables -F FORWARD |
FORWARD 規則:允許 VPN 與 VLAN 雙向通訊
1 | iptables -A FORWARD -s 10.8.0.0/24 -d 192.168.100.0/24 -j ACCEPT |
📝 允許 VPN 子網 10.8.0.0/24 的用戶連線到內部網段 192.168.100.0/24,並允許 LAN 回應或主動連線回 VPN。
下載 .ovpn 檔案
在 VM 上傳至本地端:
1 | scp root@<你的公網 IP>:/root/client.ovpn . |
或使用 cat 顯示內容後複製:
1 | cat /root/client.ovpn |
⚠️ 該檔案會用於 Client 連線使用,請妥善保管。
🧰 自建 DNS Server
安裝 dnsmasq
1 | apt update |
編輯 dnsmasq 設定檔
編輯設定檔:
1 | vim /etc/dnsmasq.conf |
加入以下內容:
1 | # 讓 dnsmasq 同時服務本機與 VLAN |
⚠️ domain 可以自己定義修改。
📝 address 可以自定義子網域名。
停用 systemd-resolved,釋放 port 53
1 | systemctl disable systemd-resolved |
重啟 dnsmasq 並設定開機自動啟動:
1 | systemctl restart dnsmasq |
編輯 OpenVPN server 設定
1 | vim /etc/openvpn/server/server.conf |
新增兩行:(注意新增位置)
1 | push "dhcp-option DNS 192.168.100.10" |
範例:
1 | # 推送 DNS 設定(順序很重要) |
⚠️ 注意 domain 需與 /etc/dnsmasq.conf 內設定一致。
重啟 OpenVPN
1 | systemctl restart openvpn-server@server |
防火牆允許 VPN Client 查詢 DNS
1 | #iptables -A INPUT -p udp --dport 1194 -j ACCEPT |
儲存規則(讓開機自動套用)
使用 iptables-persistent 套件:
1 | apt install iptables-persistent -y |
⚠️ 安裝過程中會提示你是否要儲存目前的規則,選「是」。
手動儲存指令:
1 | netfilter-persistent save |
📝 紀錄的位置:
/etc/iptables/rules.v4
👌 結語
本文主要紀錄了在 Linode 上建置 OpenVPN Server + VLAN 架構 的過程,包含 VM 建置、OpenVPN 安裝、使用者驗證、防火牆規則、以及自建 DNS 的配置。
這不是完整的教學,而是一份技術筆記,重點在於 核心流程與注意事項,方便自己與後續需要的人快速理解並重現架構。
⚠️ 提醒:
- 請依照自身需求調整 IP、網段與防火牆規則。
- 建議搭配 Linode 官方文件與 OpenVPN 官方指南,確保設定符合最新版本與安全最佳實踐。
- 若使用 Linode 的免費額度,記得設定提醒事項,在時效內刪除 VPS 或資源,避免額外扣款。
這份筆記的目的在於提供一個可重現的基礎架構,讓 VPN Client 能安全存取 VLAN 內部服務,並保持網路隔離與安全性。
