Tenemos docenas de dispositivos integrados instalados en los clientes, todos llamando a casa a nuestro servicio OpenVPN. Eso funciona bien en general, pero algunos de nuestros clientes tienen problemas severos de MTU. Nuestra influencia en los clientes para reparar sus redes es limitada, por lo que necesitamos que OpenVPN se encargue de ello. En pocas palabras, mi pregunta es:
¿Cómo puedo mitigar las MTU de ruta baja de algunos clientes en una base por cliente, es decir, sin utilizar configuraciones globales que se adapten al peor de los casos para todos los clientes?
Tenga en cuenta que nuestro peor de los casos es bastante malo: la ruta MTU 576, elimina todos los fragmentos, no se fragmenta, no respeta el bit DF. Ya ves por qué preferiría no resolver este problema a nivel mundial.
La página de manual de OpenVPN ofrece una serie de opciones relacionadas con MTU, en particular --link-mtu, --tun-mtu, --fragment and --mssfix
. Pero también dice
--link-mtu [...] Es mejor no configurar este parámetro a menos que sepa lo que está haciendo.
--tun-mtu [...] Es mejor usar las opciones --fragment y / o --mssfix para tratar los problemas de dimensionamiento de MTU.
Así que comencé a experimentar --fragment
y --mssfix
pronto tuve que darme cuenta de que al menos el primero debe configurarse no solo del lado del cliente, sino también del lado del servidor . Luego busqué en la configuración por cliente del lado del servidor a través de --client-config-dir
pero dice
Las siguientes opciones son legales en un contexto específico del cliente: --push, --push-reset, --iroute, --ifconfig-push y --config.
¡No se mencionan las opciones de MTU!
Así que aquí están mis preguntas más específicas:
- ¿Por qué exactamente
link-mtu
ytun-mtu
desanimados? ¿Cuáles son los posibles problemas con estas opciones? Tenga en cuenta que estoy bastante cómodo con el munging de encabezado IP de bajo nivel. - ¿Cuál de las opciones
link-mtu tun-mtu fragment mssfix
debe reflejarse en el lado del servidor para que funcione? - ¿En cuál de las opciones
link-mtu tun-mtu fragment mssfix
se puede usarclient-config-dir
? - En caso de que las cuatro opciones tengan que reflejarse en el lado del servidor y no puedan usarse en el interior
client-config-dir
: ¿Hay alguna alternativa para combatir la MTU de ruta baja por cliente?
Notas:
- Algunas de mis preguntas ya se han hecho hace 5 años aquí , pero en realidad no se han respondido en ese momento, por lo tanto, me atrevo a duplicarlas.
- El servidor OpenVPN es actualmente 2.2.1 en Ubuntu 12.04. Estamos preparando una actualización a 2.3.2 en Ubuntu 14.04
- Los clientes OpenVPN son 2.2.1 en Debian 7.6
- Me complace determinar la ruta de un MTU de un cliente yo mismo manualmente
- Actualmente no podemos probar mucho del lado del servidor. Pero estamos construyendo un banco de pruebas completamente separado, debería estar listo pronto.
Estoy agradecido por cualquier consejo útil.
fuente
iptables
reglas para reducir el MSS en todos los paquetes SYN hacia o desde la dirección IP de ese cliente.Respuestas:
Resolví el problema en el lado del cliente agregando la opción
mssfix 1300
al archivo de configuración.Desde la página de manual de openvpn:
La idea original para mi solución vino de personalvpn.org
fuente
mssfix
, ¿ se puede configurar solo en el lado del cliente? Bueno, eso es algo al menos. Sin embargo, no ayuda con los paquetes UDP (razón por la cual estaba interesado en las otras opciones, pero al menos las recomendadas tambiénfragment
deben establecerse en el lado del servidor)Dada la falta de respuestas, ahora estoy publicando una solución que no es muy elegante, pero simple: ejecutar otra instancia de OpenVPN en TCP para "clientes malos"
y baje el TCP MSS en el cliente, por ej.
Una ventaja de esta solución es que cada cliente puede configurar su MSS individual.
Esto es ciertamente TCP sobre TCP, pero debería funcionar bastante bien en muchos escenarios .
Tenga en cuenta que todavía estoy muy interesado en soluciones que no requieren
proto tcp
, y las marcaré como respuesta válida si cumplen más o menos con mis requisitos detallados.fuente