我正在尝试在我们新安装的 Ubuntu 11.10 64 位服务器上设置 pptpd vpn,但无法成功让客户端通过 iPhone 连接到 VPN。请注意,没有客户端能够从网络外部连接到此 VPN。系统已安装最新补丁。
这是 /var/log/syslog 的输出。请注意,222.153.xy 是我的远程 IP 地址。
Mar 30 22:07:47 server pptpd[9546]: CTRL: Client 222.153.x.y control connection started
Mar 30 22:07:47 server pptpd[9546]: CTRL: Starting call (launching pppd, opening GRE)
Mar 30 22:07:47 server pppd[9555]: Plugin /usr/lib/pptpd/pptpd-logwtmp.so loaded.
Mar 30 22:07:47 server pppd[9555]: pppd 2.4.5 started by root, uid 0
Mar 30 22:07:47 server pppd[9555]: Using interface ppp0
Mar 30 22:07:47 server pppd[9555]: Connect: ppp0 <--> /dev/pts/3
Mar 30 22:07:47 server pptpd[9546]: GRE: Bad checksum from pppd.
Mar 30 22:08:17 server pppd[9555]: LCP: timeout sending Config-Requests
Mar 30 22:08:17 server pppd[9555]: Connection terminated.
Mar 30 22:08:17 server pppd[9555]: Modem hangup
Mar 30 22:08:17 server pppd[9555]: Exit.
Mar 30 22:08:17 server pptpd[9546]: GRE: read(fd=6,buffer=6075a0,len=8196) from PTY failed: status = -1 error = Input/output error, usually caused by unexpected termination of pppd, check option syntax and pppd logs
Mar 30 22:08:17 server pptpd[9546]: CTRL: PTY read or GRE write failed (pty,gre)=(6,7)
Mar 30 22:08:17 server pptpd[9546]: CTRL: Reaping child PPP[9555]
Mar 30 22:08:17 server pptpd[9546]: CTRL: Client 222.153.x.y control connection finished
如你所见,问题似乎是 30 秒后连接超时(“3 月 30 日 22:08:17 服务器 pppd[9555]:LCP:发送配置请求超时”。
然而,通过 Wifi(在本地网络内)不会出现任何问题:
Mar 30 22:12:33 unreal-server pptpd[12406]: CTRL: Client 192.168.0.100 control connection started
Mar 30 22:12:33 unreal-server pptpd[12406]: CTRL: Starting call (launching pppd, opening GRE)
Mar 30 22:12:33 unreal-server pppd[12407]: Plugin /usr/lib/pptpd/pptpd-logwtmp.so loaded.
Mar 30 22:12:33 unreal-server pppd[12407]: pppd 2.4.5 started by root, uid 0
Mar 30 22:12:33 unreal-server pppd[12407]: Using interface ppp0
Mar 30 22:12:33 unreal-server pppd[12407]: Connect: ppp0 <--> /dev/pts/3
Mar 30 22:12:33 unreal-server pptpd[12406]: GRE: Bad checksum from pppd.
Mar 30 22:12:36 unreal-server pppd[12407]: peer from calling number 192.168.0.100 authorized
Mar 30 22:12:36 unreal-server pppd[12407]: MPPE 128-bit stateless compression enabled
Mar 30 22:12:36 unreal-server pppd[12407]: Cannot determine ethernet address for proxy ARP
Mar 30 22:12:36 unreal-server pppd[12407]: local IP address 192.168.0.10
Mar 30 22:12:36 unreal-server pppd[12407]: remote IP address 192.168.1.1
我已经为服务器设置了 iptables 配置;为了检查这不是问题所在,我暂时允许所有流量,但这并没有改变第一个示例中的症状。以下是 /etc/iptables.rules.save 的输出
*filter
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
即使应用了这些规则,/var/log/syslog 的输出仍然逐行与我在第一段代码块中看到的一样。
请注意,在运行此 Ubuntu 服务器之前,有一个旧的 SME 服务器盒在代替它运行,上面有一个 pptpd 服务器,就像我们正在使用的一样,我们没有遇到任何问题。
答案1
我怀疑你遇到的问题是,在你的路由器上,你已将端口 1723(PPTP)转发到你的服务器,但没有研究生入学考试 (GRE)协议。(这不是一个端口,而是一个完整的协议。)
PPTP 控制通道通过端口 1723 TCP 建立,但实际的数据包流使用 GRE 协议 - 并且 PPP 的 LCP 配置请求超时表明有某种因素阻止此流量通过。
最后,确保您的移动电话提供商(是新西兰的电信公司吗?)允许您建立 PPTP 连接。如果您确实使用新西兰电信公司 (XT),您可能需要将您的移动 APN(接入点名称)调整为“direct.telecom.co.nz” - 默认为“internet.telecom.co.nz”。
答案2
您是否同时打开了端口 1723 和 47?GRE 要求端口 47 必须打开。如果涉及 NAT,您的路由器是否启用了 VPN 直通?
此外,如果您的服务器和公共互联网之间有 2 个路由器,NAT 可能会受此影响。Google“双 NAT”。
答案3
我也发现了这个错误。首先得到“GRE:来自 pppd 的错误校验和。”然后是“GRE:从 PTY 读取(fd=6,buffer=6075a0,len=8196)失败:状态 = -1 错误 = 输入/输出错误,通常由 pppd 意外终止引起,请检查选项语法和 pppd 日志”。就我而言,这是因为我输入了错误的密码。这不是因为 GRE 端口 47 被阻止。而且就我而言,即使我让端口 47 被阻止,vpn 仍然可以工作。