<?xml version="1.0" encoding="UTF-8" ?><oembed><version>1.0</version><provider_name>Чудо{вищные} заметки</provider_name><provider_url>https://miracle.rpz.name</provider_url><author_name>MiRacLe</author_name><author_url>https://miracle.rpz.name/author/miracle/</author_url><title>MTU</title><html>Третий раз трачу значительное время на диагностику и устранение проблемы с &quot;туннелем в туннеле&quot;. Чтобы избежать рецидива оставляю себе заметку о том, что забытый ныне &lt;abbr title=&quot;Maximum transmission unit&quot;&gt;MTU&lt;/abbr&gt; всё ещё требует ручной настройки в &quot;нетрадиционных&quot; сетевых конфигурациях.

&lt;img src=&quot;//miracle.rpz.name/shared/2015/mtu-win98.gif&quot; alt=&quot;Windows 98. General PPP settings&quot; width=&quot;250&quot; align=&quot;right&quot; /&gt;Старожилы помнят множество способов изменить MTU подключения в музейных версиях популярных когда-то операционных систем. В современных версиях этих популярных систем найти нужное окошко мне не удалось (от чего и делаю вывод о том, что в широких кругах больше не требуется &quot;work around a problem with your ISP&quot;).

Имеется в наличии провайдер для доступа в интернет использующий VPN (L2TP) и с этим в общем и целом проблем нет - любому дешёвому роутеру это по плечу. Есть необходимость подключаться сквозь провайдерский туннель к удалённой сети. И с этим клиентские ПК тоже с лёгкостью справляются. Вроде бы. Ну по крайней мере должны были справляться. Ну подключились же без проблем...

Проблема проявлялась в &quot;мелочах&quot; - время от времени некоторые ресурсы внутренней VPN-сети не отвечали на поставленные &quot;вопросы&quot;, что конечно раздражало, но не казалось критичным и мнилось проблемой в сетевых настройках целевых ресурсов. &lt;!--more--&gt;Имеется возможность подключится по SSH/RDP к удалённой машине, для которой &quot;проблемные&quot; ресурсы локальны и доступны всегда. Но однажды проблема проявилась в &quot;полный рост&quot; - работая над исправлением &lt;a href=&quot;https://github.com/php/php-src/pull/1386&quot;&gt;бага в библиотеке для работы с базой данных в php&lt;/a&gt; столкнулся с &quot;Database error&quot; там где его быть не могло. Многочасовая отладка, откат сделанных изменений - ошибку устранить не удаётся. Неприятное удивление пришло в тот момент, когда проблемный код был запущен с проверенным боем и временем расширением &lt;a href=&quot;http://php.net/mssql&quot;&gt;mssql&lt;/a&gt; и завершился той же ошибкой. Дальше проблема довольно быстро была локализована - был проверен sql-запрос - на целевом сервере он ожидаемо работал, было проверено безошибочное выполнение php-кода с машины в локальной сети sql-сервера, выполнение sql-запроса без участия php (tsql) с той же ошибкой . Ну и далее анализ tdsdump-а дал искомый ответ - из-за сетевых проблем freetds-клиент делал попытку получить ответ от сервера снова и снова, по достижению mssql.timeout php завершал запрос и выбрасывал ту самую &quot;невнятную&quot; ошибку работы с базой данных.

&lt;img src=&quot;//miracle.rpz.name/shared/2015/drtcp.gif&quot; alt=&quot;DrTCP&quot; width=&quot;210&quot; align=&quot;left&quot; hspace=&quot;10&quot; /&gt;Сетевая проблема, как не трудно догадаться из названия заметки, заключалась в MTU - пакеты размером в mtu локального интерфейса оборачиваются в пакеты размером в mtu интерфейса роутера, при одинаковых размерах mtu и пакетах данных с размером близким к максимальному начинаются ошибки передачи данных. Решение тоже очевидно - максимальный размер пакета &quot;внутреннего&quot; туннеля должен быть меньше максимального размера пакета в туннеле к провайдеру.

Цель этой заметки - напомнить о том, что есть параметр &lt;code&gt;mtu 1200&lt;/code&gt; в &lt;a href=&quot;https://ppp.samba.org/pppd.html&quot;&gt;pppd.conf&lt;/a&gt;.
И это было просто. Теперь о главном: в &lt;em&gt;другой&lt;/em&gt; операционной системе это делается иначе -
ищем внешний интерфейс:
&lt;pre&gt;netsh interface ipv4 show subinterfaces
&lt;/pre&gt;
меняем ему mtu:
&lt;pre&gt;netsh interface ipv4 set subinterface &quot;Free wi-fi from the neighbors&quot; mtu=1200 store=persistent
&lt;/pre&gt;</html><type>rich</type></oembed>