VPN 問題排查與解決指南
目錄
OpenVPN 基礎知識
VPN 隧道與網段:
- 伺服器內部地址:
10.8.0.1。 - 客戶端分配地址:
10.8.0.6。 - 點對點對端地址(伺服器端):
10.8.0.5,用於路由通信。
- 伺服器內部地址:
NAT(網絡地址轉換):
- 伺服器執行 NAT,將 VPN 子網(
10.8.0.0/24)的流量轉換為伺服器外部網卡的流量。
- 伺服器執行 NAT,將 VPN 子網(
IP 轉發:
- 伺服器需要啟用 IP 轉發,允許 VPN 子網的流量轉發到外部網絡。
路由與 DNS:
- 默認路由設置:客戶端默認流量應指向 VPN 的對端地址(如
10.8.0.5)。 - DNS 配置:伺服器推送 DNS,確保客戶端可以解析域名。
- 默認路由設置:客戶端默認流量應指向 VPN 的對端地址(如
常見問題與解決方法
1. VPN 隧道正常,但無法訪問外網
- 原因:伺服器未正確配置 NAT 或 IP 轉發。
- 解決方法:
- 確認伺服器啟用了 IP 轉發:如果為
1
cat /proc/sys/net/ipv4/ip_forward
0,請啟用:1
sudo sysctl -w net.ipv4.ip_forward=1
- 添加或檢查 NAT 規則:
1
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
- 確認伺服器啟用了 IP 轉發:
2. 客戶端無法解析域名
- 原因:伺服器未正確推送 DNS。
- 解決方法:
- 檢查伺服器是否推送 DNS:
1
2push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4" - 在 macOS 客戶端手動設置 DNS:
1
sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4
- 檢查伺服器是否推送 DNS:
3. 默認路由未正確設置
- 原因:客戶端配置未設置
redirect-gateway,或伺服器未正確推送路由。 - 解決方法:
- 確認伺服器配置中包含:
1
push "redirect-gateway def1 bypass-dhcp"
- 手動在 macOS 客戶端設置默認路由:
1
sudo route add default 10.8.0.5
- 確認伺服器配置中包含:
排查步驟與工具
伺服器端(Fedora)
檢查 NAT 配置:
1
sudo iptables -t nat -L POSTROUTING -v -n
啟用 IP 轉發:
1
sudo sysctl -w net.ipv4.ip_forward=1
查看伺服器的網卡名稱:
1
ip addr
捕獲流量:
1
sudo tcpdump -i tun0 icmp
查看 OpenVPN 日誌:
1
sudo journalctl -u openvpn-server@server
客戶端(macOS)
檢查路由表:
1
route -n get default
手動設置默認路由:
1
sudo route add default 10.8.0.5
檢查網絡接口:
1
ifconfig
測試內外網連通性:
1
2
3ping 10.8.0.1
ping 8.8.8.8
ping google.com設置 DNS(臨時):
1
sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4
伺服器配置(server.conf)
1 | port 1194 |
客戶端配置(client.ovpn)
1 | client |
QA 自我檢修清單
VPN 隧道是否正常?
- 伺服器和客戶端是否可以互相
ping?
- 伺服器和客戶端是否可以互相
伺服器是否啟用了 IP 轉發?
cat /proc/sys/net/ipv4/ip_forward是否為1?
伺服器 NAT 是否正確?
iptables -t nat -L POSTROUTING是否有MASQUERADE規則?
客戶端默認路由是否正確?
route -n get default是否指向10.8.0.5或其他對端地址?
DNS 是否正常工作?
- 是否可以解析域名(
ping google.com)?
- 是否可以解析域名(
防火牆是否阻止了流量?
iptables -L -v -n是否允許FORWARD和INPUT流量?
注意事項
- 確保伺服器的外部網卡名稱正確,否則 NAT 可能無法正常工作。
- 排查時,逐步測試內部網絡(VPN 隧道)和外部網絡(Internet)連通性,確認每一步的設置是否正確。