Итак... медленно стали проясняться детали... Один бывший коллега (ведущий инженер связи у одного из провайдеров) написал мне что проблема скорее всего в MTU. Начал копаться. Нашёл пару статей, но понимания вопроса пока нет.
Первый сервер:
eth0 (192.168.0.10) MTU 1500 смотрит в локальную сеть.
ppp0 (PPPoE от провайдёра) MTU 1492 смотрит в интернет
ppp1 (192.168.2.1 VPN сервер) MTU 1496 серверная точка VPN тунеля
Второй сервер:
eth0 (192.168.3.1) MTU 1500 смотрит в локальную сеть
ppp0 (192.168.2.3) MTU 1496 клиентская точка VPN тунеля
eth1 (канал от провайдера) MTU 1500 смотрит в интернет
При передаче пакета из локальной сети 192.168.0.0/24 в сеть 192.168.3.0/24 размером в 1500 байт произойдёт следующее:
1. Он попадёт на интерфейс eth0 с MTU 1500
2. Затем будет инкапсулирован GRE и при попытке впихнуть его в интерфейс ppp1 с MTU 1496 его поделят на два пакета
3. Затем при попытке передачи через интерфейс провайдера ppp0 с MTU 1492, первый пакет из тех двух снова придётся делить на два ибо не влезет
4. В итоге первый пакет размером 1500 байт был разделен на три пакета с наибольшим размером в 1492 байта....
Изменить MTU на интерфейсе провайдера скорее всего не получится, тогда придётся изменять MTU на VPN интерфейсах. Но тогда в всё равно будет фрагментация пакета при передачи данных из локальной сети в интернет и VPN тунель.
Стоит ли понижать MTU на интерфейсах сервера, подключенных к локальным сетям? Будут ли клиенты локальной сети (Windows) адекватно изменять MSS/MTU у себя на интерфейсах?