My PPTP VPN works fine on Windows and Android. On Android and Windows, no specific configuration is needed only I need to check PPP encryption(MPPE).
But on Ubuntu 20.04 it disconnects randomly after a period of time.
I found the answer here: Ubuntu 14 pptp client disconnects frequently.
I had to use on the client.
sudo ifconfig wlp3s0 mtu 1400
sudo ifconfig ppp0 mtu 1300
This could be investigated by reading syslog errors:
pouria@pouria-pc:~$ cat /var/log/syslog | grep pptp | grep long
May 31 09:36:11 pouria-pc pptp[18156]: nm-pptp-service-18147 warn[decaps_gre:pptp_gre.c:352]: short read (-1): Message too long
May 31 09:47:14 pouria-pc pptp[18617]: nm-pptp-service-18609 warn[decaps_gre:pptp_gre.c:352]: short read (-1): Message too long
May 31 09:57:18 pouria-pc pptp[19439]: nm-pptp-service-19430 warn[decaps_gre:pptp_gre.c:352]: short read (-1): Message too long
May 31 10:07:21 pouria-pc pptp[20790]: nm-pptp-service-20781 warn[decaps_gre:pptp_gre.c:352]: short read (-1): Message too long
May 31 10:17:57 pouria-pc pptp[21003]: nm-pptp-service-20994 warn[decaps_gre:pptp_gre.c:352]: short read (-1): Message too long
May 31 11:16:36 pouria-pc pptp[23730]: nm-pptp-service-23718 warn[decaps_gre:pptp_gre.c:352]: short read (-1): Message too long
By setting mtu
we are telling the wlan
to use smaller messages.
I wonder why users of other operating systems don't have to configure their WLAN message size to use the simplest form of VPN.
Find your device's interface name wlan0...
by ifconfig
.
Create the file /etc/network/if-up.d/ppp
with the following content:
#! /bin/bash
sudo ifconfig wlp0s20f3 mtu 1400
sudo ifconfig ppp0 mtu 1300
Use chmod +x /etc/network/if-up.d/ppp
to make it executable. It runs on every connect and disconnect.
I use your answer, and answer it to solve the question about Set the MTU permanently:
I found this link (for permanent set the MTU)
We make a script in /etc/network/if-up.d/
and call it set-pptp.sh
, this script will be called whenever a link is trying to get up.
Now inside this file we insert these lines:
[We are checking the current interface that is trying to get up, if it's a VPN, we set its MTU to 1300 and if not we set its MTU to 1400]
#!/bin/sh
if [ "$IFACE" = "ppp0" ]; then
ifconfig ppp0 mtu 1300
fi
if [ "$IFACE" = "wlp3s0" ]; then
ifconfig wlp3s0 mtu 1400
fi
Now we need to make it executable:
$ sudo chmod 755 /etc/network/if-up.d/set-pptp.sh
Last Step (Important):
If you are using a graphical network manager, those that are in KDE, Gnome, etc ..., you need to do this too:
Open this file: /etc/NetworkManager/dispatcher.d/01-ifupdown
, in my computer, its name is 01-ifupdown, maybe in yours it has other names, open it.
Find the line that has something like this:
if [ "$2" = "vpn-up" ] || [ "$2" = "vpn-down" ]; then
Change it to this:
if [ "$2" = "vpn-up" ] || [ "$2" = "vpn-down" ]; then
ifconfig ppp0 mtu 1300
ADDRESS_FAMILIES=""
fi
Done, you have a permanently MTU settings now.