Меняем 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
Если все сделано нормально, все должно заработать.