Today, I realized my PPTP connections from Windows 7 and 8 machines were no longer able to connect to the PoPToP server I setup at the office. Strangely, nothing had changed on the server (still Debian 7 running PoPToP 1.3.4), on the server-side router, and my clients obviously had not both been changed enough to explain the breakage. The Windows error messages were not too precise. Server logs were also unhelpful, apparently pointing to a bug in PoPToP, which timed out after 30 seconds:
Oct 3 16:47:25 deimos pptpd: CTRL: Client 184.108.40.206 control connection started Oct 3 16:47:25 deimos pptpd: CTRL: Starting call (launching pppd, opening GRE) Oct 3 16:47:25 deimos pptpd: GRE: Bad checksum from pppd. Oct 3 16:47:55 deimos pptpd: GRE: read(fd=6,buffer=804f620,len=8196) from PTY failed: status = -1 error = Input/output error, usually caused by unexpected termination of pppd, check option syntax and pppd logs Oct 3 16:47:55 deimos pptpd: CTRL: PTY read or GRE write failed (pty,gre)=(6,7) Oct 3 16:47:55 deimos pptpd: CTRL: Reaping child PPP Oct 3 16:47:55 deimos pptpd: CTRL: Client 220.127.116.11 control connection finished
I finally realized the change to blame was me switching my TP-Link router from TP-Link's firmware to OpenWrt (15.05). I do not understand much of how PPTP works, but it's quite complicated. Apparently, it uses non-standard GRE packets. Therefore, I am not sure if this is a PPTP bug or an OpenWrt bug, but for me the solution was most simple.
As explained in this description of error 619, there are several possible causes, but even if the client is clearly reaching the server, the issue can be client-side. If there is no firewall on the client OS, you should verify any client-side router, which I did by plugging one of the affected PC-s directly on the modem. The VPN could connect again, which confirmed the router was to blame.
OpenWrt does not have a "PPTP VPN passthrough" option to check, but a package to install (which is not installed by default in Chaos Calmer). Following the instructions on OpenWrt's PPTP NAT Traversal document (installing kmod-nf-nathelper-extra), I managed to get the clients to connect while NAT-ed behind OpenWrt.