Меняем mtu на pptp подключении

 

При создании VPN тунеля PPTP столкнулся с проблемой: тунель создается, пинги проходят, но стоит открыть браузер, пропадают пинги и соответственно пакеты по тунелю не ходят, при этом сам тунель не падает. Связано это с отключением шифрования на стороне сервера.

В логах VPN сервера ошибка: mppe_decompress osize too small!! have: 1355 need 1389

 

Данная проблема связана со слишком большим MTU PPTP подключения на клиенте (по умолчанию у меня был mtu 1400, что соответственно превышает значение 1355). Отсюда и вся проблема: так как утилита ping по умолчанию шлет пакеты небольшого размера, то тунель работал, но как только начинали идти пакеты превышающие 1355 (когда открывали страницы в браузере), то тонель ложился. Самое интересное, что в Windows по умолчанию у pptp mtu 1350, соответственно таких проблем на данной ОС не встечается. 

 

Меняем MTU PPTP

 

Сначала стандартно визуальными средствами создаем VPN PPTP подключение через NetworkManager. Данная инструкция только для подключений, которыми управляет NetworkManager.

 

После создания и первого подключения к VPN серверу, нам нужно узнать, какой текущий mtu у pptp

#ip a
ppp0: <pointopoint,multicast,noarp,up,lower_up> mtu 1400 qdisc fq_codel state UNKNOWN group default qlen 3

 

Теперь нам необходимо узнать ID нашего подключения

#nmcli c

NAME UUID TYPE DEVICE
VPN 7dd15a47-419a-4e12-b4d1-8f9e59425711 vpn wlp3s0

 

 

Переходим в директорию /etc/NetworkManager/dispatcher.d/ и создаем файл 20-mtu_change со следующим содержанием:

#vim 20-mtu_change

INTERFACE=$1
STATUS=$2
VPN_ID="7dd15a47-419a-4e12-b4d1-8f9e59425711"

if [ "$STATUS" = "vpn-up" -a "$CONNECTION_UUID" = "$VPN_ID" ]; then
ip link set "$INTERFACE" mtu 1350
fi

 

Выставляем правильные права на файл 20-mtu_change

#chmod 751 20-mtu_change

 

Перезагружаем NetworkManager

#systemctl restart NetworkManager

 

 

Если все сделано нормально, все должно заработать.