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

VPN 連接報錯 800:iptables 缺失 1723/GRE 規則一鍵修復

編輯:Linux 教學

錯誤現象

Windows 客戶端撥號 VPN 提示「錯誤 800:無法建立網路連接」。服務端日誌無明顯報錯,但抓包發現 TCP 1723 (PPTP 控制連接) 和 GRE 協議 (IP 協議號 47) 被防火牆丟棄。

一鍵修復腳本

#!/bin/bash
# fix_vpn_800.sh
# 執行前請確認外網卡名稱 (預設 eth0),如為 ens33/ens192 請修改

WAN_IF="eth0"
VPN_SUBNET="10.8.0.0/24"   # 與 pptpd.conf remoteip 一致

# 1. 臨時關閉防火牆驗證 (可選)
# systemctl stop firewalld
# iptables -F

# 2. 核心放行規則
iptables -A INPUT -i $WAN_IF -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -i $WAN_IF -p gre -j ACCEPT
iptables -A OUTPUT -p tcp --dport 1723 -j ACCEPT
iptables -A OUTPUT -p gre -j ACCEPT

# 3. 轉發鏈 (VPN 內網互通 + 出站 NAT)
iptables -A FORWARD -i ppp+ -o $WAN_IF -j ACCEPT
iptables -A FORWARD -i $WAN_IF -o ppp+ -j ACCEPT
iptables -A FORWARD -i ppp+ -o ppp+ -j ACCEPT

# 4. NAT 出站 (若未配置)
iptables -t nat -A POSTROUTING -o $WAN_IF -s $VPN_SUBNET -j MASQUERADE

# 5. 保存並重啟
service iptables save
systemctl restart iptables

echo "Rules applied. Verify with: iptables -L -n -v | grep -E '1723|gre|ppp'"
echo "Test VPN dial again."

規則解析

雲廠商安全組同步 (必做)

  • 阿里雲/騰訊雲/AWS/Azure 安全組/安全群組入站規則添加:
    TCP 1723、GRE (協議 47),來源 0.0.0.0/0。
  • 若使用 IPv6,同步放行 ipv6-gre (協議 47)。

驗證步驟

  1. 服務端抓包:tcpdump -i any -n 'port 1723 or proto gre',發起撥號觀察三次握手與 GRE 流量。
  2. 客戶端撥號成功後,ping 8.8.8.8 驗證出站;ping 10.8.0.1 驗證隧道內通。
  3. 服務端 iptables -L FORWARD -n -v 觀察計數器增長。

總結

錯誤 800 90% 由「防火牆攔截 GRE/1723」或「雲安全組未放行」引起。一鍵腳本 + 安全組同步,通常 1 分鐘內解決。長期建議遷移至 WireGuard/IKEv2 避免 GRE 穿透 NAT 的固有難題。

Copyright © Windows教程網 All Rights Reserved
鏈/表規則作用
INPUT-p tcp --dport 1723允許 PPTP 控制連接建立
INPUT-p gre允許 GRE 封裝數據面流量
FORWARD-i ppp+ -o WANVPN → 外網
FORWARD-i WAN -o ppp+外網 → VPN (回包)
FORWARD-i ppp+ -o ppp+VPN 用戶間互訪
NAT POSTROUTING-s VPN_SUBNET -j MASQUERADEVPN 流量偽裝為服務器公網 IP 出站