У нас есть десятки встроенных устройств, установленных у клиентов, и все они звонят домой в нашу службу OpenVPN. В целом это работает нормально, но у некоторых наших клиентов есть серьезные проблемы с MTU. Наше влияние на клиентов по исправлению их сетей ограничено, поэтому нам необходим OpenVPN для решения этой проблемы. В двух словах, мой вопрос:
Как я могу смягчить MTU низкого пути некоторых клиентов на основе для каждого клиента, то есть без использования глобальных настроек, учитывающих наихудший случай для всех клиентов
Обратите внимание, что в нашем худшем случае это довольно плохо: путь MTU 576, отбрасывает все фрагменты, не фрагментирует себя, не учитывает DF-бит. Вы понимаете, почему я предпочел бы не решать эту проблему глобально.
Страница руководства OpenVPN предлагает ряд опций, связанных с MTU, в частности --link-mtu, --tun-mtu, --fragment and --mssfix
. Но это также говорит
--link-mtu [...] Лучше не устанавливать этот параметр, если вы не знаете, что делаете.
--tun-mtu [...] Лучше всего использовать опции --fragment и / или --mssfix для решения проблем с размером MTU.
Таким образом , я начал экспериментировать с --fragment
и , --mssfix
но вскоре должен был понять , что по крайней мере первая должна быть установлена не только на стороне клиента, но также и на стороне сервера . Затем я посмотрел на серверной конфигурации для каждого клиента через, --client-config-dir
но он говорит
Следующие параметры допустимы в контексте, специфичном для клиента: --push, --push-reset, --iroute, --ifconfig-push и --config.
Никаких упоминаний о параметрах MTU!
Итак, вот мои более конкретные вопросы:
- Почему именно это
link-mtu
и неtun-mtu
рекомендуется? Каковы потенциальные проблемы с этими вариантами? Обратите внимание, что мне вполне комфортно с низким уровнем IP-заголовков. - Какие из параметров
link-mtu tun-mtu fragment mssfix
должны быть отражены на стороне сервера, чтобы работать? - Какой из вариантов
link-mtu tun-mtu fragment mssfix
можно использовать вclient-config-dir
? - В случае, если все четыре варианта должны быть зеркально отражены на стороне сервера и не могут использоваться внутри
client-config-dir
: Есть ли альтернативы для борьбы с MTU по низкому пути на клиента?
Примечания:
- Спросили Части моих вопросов уже 5 лет назад здесь , но они на самом деле не были , то огрызались, поэтому я смею их дублировать.
- Сервер OpenVPN в настоящее время 2.2.1 на Ubuntu 12.04. Мы готовим обновление до 2.3.2 на Ubuntu 14.04
- Клиенты OpenVPN являются 2.2.1 на Debian 7.6
- Я рад, что сам определяю путь клиента-MTU вручную
- В настоящее время мы не можем тестировать много на стороне сервера. Но мы строим полный отдельный испытательный стенд, должен быть готов в ближайшее время.
Я благодарен за любые полезные советы.
источник
iptables
правила, чтобы уменьшить MSS на всех пакетах SYN с или на этот IP-адрес клиента.Ответы:
Я решил проблему на стороне клиента, добавив опцию
mssfix 1300
в файл конфигурации.Со страницы руководства openvpn:
Оригинальная идея для моего решения пришла от personalvpn.org
источник
mssfix
можно установить только на стороне клиента? Ну, это как минимум. Хотя это не помогает с пакетами UDP (именно поэтому меня интересовали другие варианты, но по крайней мере рекомендуемыеfragment
должны быть установлены и на стороне сервера)Учитывая отсутствие ответов, я публикую сейчас решение, которое не очень элегантно, но просто: запустить другой экземпляр OpenVPN по TCP для «плохих клиентов»
и снизить TCP MSS на клиенте, например
Преимущество этого решения заключается в том, что каждый клиент может установить свою индивидуальную MSS.
Это по общему признанию TCP-over-TCP, но это должно работать достаточно хорошо во многих сценариях .
Обратите внимание, что мне все еще очень интересны решения, которые не требуются
proto tcp
, и я отмечу их как действительный ответ, если они более или менее соответствуют моим изложенным требованиям.источник