We had identical symptoms, but all the Iptables where set as above.
It was possible to connect, the connection was stable, it did allow to login to the pptp server via ssh and, in the remote machine, even to resolve DNS (noticeable via browers and ping -- as it did resolve correctly the IP), but webpages did not load, neither was possible to connect to other severs via ssh. This made clear that the tunnel was ok to the pptp server.
The problem was the fact that I had in this machine two independent up-links exposed to internet (ie. mainInf and support), both configured via netplan (no problem with that)
but, despite connecting to the pptp server using the IP address of the 1st up-link (i-face called mainInf), my default gateway was running in the seccond up-link (support).
The solution was to adjust the NAT to the correct output gateway and that allowed packets to reach other servers
it was initially (not working)
iptables -t nat -I POSTROUTING -o mainInf -j MASQUERADE
(have in your mind that, in our case, the connection to the pptp server is via an IP allocated in the mainInf adapter/uplink)
and after changing to the same adapter/uplink as the default gateway (support), it worked:
iptables -t nat -I POSTROUTING -o support -j MASQUERADE
Hence, if you can stability the VPN connection, ping or connect the pptp server (via ssh in our case), but cannot reach any IP that is not in that server, you probably have a routing/forwarding issue.
4 helpful commands for troubleshoting:
- watch iptables -t nat -L -nv
- watch iptables -L -nv
- route -n
- tcpdump -i -s 0 tcp port 1723 or proto 47 (read more here)