Mi PC tiene un total de 4 NIC, 2 tarjetas de red Gigabit Ethernet con cable y también 2 tarjetas de red inalámbricas. (One Broadcom con controladores propietarios y Ralink con software de código abierto, que funciona mucho mejor que Broadcom).
Mi teléfono celular puede compartir su conexión de forma inalámbrica con mi PC, pero también tengo una conexión a Internet por cable. Entonces tengo múltiples conexiones a Internet para acceder a Internet. ¿Cómo puedo fusionar 2 o más conexiones y equilibrarlas para disfrutar de una experiencia de Internet unificada que es la suma de todas las conexiones de Internet conectadas a ella?
Por ejemplo, si tengo un módem con una conexión a Internet de 1024kB / sy otro que ofrece 512kB / sy uno pequeño que ofrece 128kB / s, después de equilibrar la carga y fusionar todas las conexiones (Bonding o Teaming), podría descargar en una velocidad de 1664kB / s usando las 3 conexiones a Internet como una, por ejemplo.
Esta pregunta siempre me ha intrigado.
fuente
Respuestas:
Hago algo así en el trabajo usando Ubuntu 11.04. Ejecutamos la herramienta de configuración de firewall de Shorewall, que además de ser excelente en su trabajo, proporciona algunas herramientas de enrutamiento ISP múltiples rudimentarias que pueden satisfacer sus necesidades. Puede encontrar algunos documentos al respecto aquí: http://www.shorewall.net/MultiISP.html
Sin embargo, todo se reduce a que no puedes usar múltiples ISP para una sola conexión ... las cosas no son tan simples. Lo mejor que puede hacer es tratar de dirigir nuevas conexiones de manera uniforme entre los diferentes proveedores.
Es un problema complejo. Probablemente terminarás golpeándote la cabeza contra la pared (ciertamente lo hice) antes de que hayas terminado de depurar cada problema. Entonces, como lo han sugerido otros carteles, puede ser prudente considerar cuidadosamente cuán fuerte es su deseo.
fuente
Puede hacerlo utilizando el paquete
ifenslave
que conecta y desconecta las interfaces de red esclavas a un dispositivo de enlace.Instalar:
Módulo de kernel de unión de carga
Configure sus interfaces:
Ejemplo de configuración, para combinar eth0 y eth1 como esclavos de su interfaz de enlace:
Reiniciar red:
Traer arriba / abajo interfaz limitada:
Hay varios modos de enlace como ejemplo que usamos:
Descripción del modo de enlace de respaldo activo :
Política de copia de seguridad activa: solo un esclavo en el enlace está activo. Un esclavo diferente se activa si, y solo si, el esclavo activo falla. La dirección MAC del enlace es visible externamente en un solo puerto (adaptador de red) para evitar confundir al conmutador. Este modo proporciona tolerancia a fallas. La opción principal afecta el comportamiento de este modo.
Fuente y más información en la wiki de ayuda de la comunidad de Ubuntu .
fuente
Es una pregunta un poco vieja, pero si aún quieres saber ...
Hay 2 escenarios típicos, lo que gertvdijk y pl1nk estaban discutiendo en una de las respuestas:
Tiene una computadora con 2 IP públicas (2 ISP diferentes) y se conecta a otro host (p. Ej., Un servidor en un centro de datos con una tubería gruesa que es más grande que el ancho de banda agregado de ambas conexiones ISP de su computadora). Entonces establece una conexión de enlace con el host a través de sus 2 conexiones y luego el host (servidor) sirve su tráfico a través de su propia conexión a Internet. En este escenario, puede obtener casi el 100% del ancho de banda combinado en ambas direcciones para una sola conexión.
Este es un caso particular de enlace / equipo / agregación ling donde múltiples interfaces de capa 2 (misma red) se unen. Se podría lograr estableciendo conexiones VPN de capa 2 (tap) en cada interfaz ISP desde la computadora al host y uniéndolas (modo round-robin) para tener una sola interfaz. El factor limitante en este escenario es cuán diferentes son los retrasos (ping) en cada conexión de ISP al host. Cuanto más similares y estables sean, mejor. Lo usamos en una de nuestras instalaciones, funciona bien. Si desea conocer los detalles sobre cómo implementarlo, hágamelo saber.
Luego, otro escenario sería sin un host intermedio, es decir, una conexión directa desde las interfaces de su ISP a varios servidores web de todo el mundo. En este caso, lo mejor que puede obtener es distribuir uniformemente las conexiones salientes entre las interfaces, es decir, una sesión TCP se realiza completamente a través de un ISP, una segunda sesión a través de otra, etc. Esto es así porque cuando establece una conexión TCP, tiene direcciones IP de origen y destino para cada paquete y cuando un servidor recibe un paquete de otra IP para la cual no se realizó un protocolo de enlace TCP, considera que el paquete es erróneo y lo descarta. Como cada conexión ISP tiene su propia IP pública, para la misma sesión TCP no puede enviar un paquete a través de una conexión desde una IP y otro a través de otra conexión con otra IP.
No logrará una utilización de ancho de banda agregado tan alta para una sola computadora como en el primer escenario, pero para una oficina pequeña podría ser una buena solución. Lo que puede hacer para extenderlo un poco es implementar soluciones personalizadas para protocolos específicos. Por ejemplo, podría tener algún tipo de proxy en la puerta de enlace (que podría ser la misma computadora) para descargas http y solicitar diferentes partes de un archivo enorme que establezca diferentes sesiones TCP a través de diferentes interfaces ISP. En este caso, la velocidad de descarga resultante sería cercana al 100% del ancho de banda combinado. Es como descargar en la puerta de enlace lo que hacen ReGet, GetRight y descargadores similares. Google 'HTTP 206 Contenido parcial'. No conozco ninguna solución de código abierto lista para usar para este escenario, pero hay dispositivos de hardware que hacen exactamente esto: google '
fuente
echo "bonding" >> /etc/modules
echo -e "alias bond* bonding\noptions bonding max_bonds=10 mode=2 xmit_hash_policy=layer3+4 arp_interval=100 arp_ip_target=10.0.0.1" > /etc/modprobe.d/bonding.conf
echo "+tapX " >> /sys/class/net/bond0/bonding/slaves
Verifique su estado con:cat /proc/net/bonding/bond0
En esta etapa, todo el tráfico de Internet debe fluir a través de bond0 al servidor en el centro de datos. Allí debe configurar el enrutamiento:echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
(se supone que eth0 es el iface de Internet)mode=2 xmit_hash_policy=layer3+4
especificarmode=0
(vea el enlace @ kernel.org), pero primero verifique qué tan similares son los enlaces a través de 3G. Si sus tiempos de ping difieren más de 2-3 ms o la fluctuación de fase es más de 1 ms, tendrá una gran cantidad de reordenamiento de paquetes que reducirá efectivamente la velocidad del enlace agregado. Tendrá que verificar las estadísticas de enlaces agregados connetstat -s
(buscar retransmisiones) yiperf -s
/iperf -c <server_ip> -d
. Primero verifique el rendimiento de cada enlace, luego podemos continuar con una soluciónMe enfrenté a un problema similar ... y estaba muy interesado en el enfoque de la solución de acuerdo con el primer escenario del Sr. GTH y Anatoli, le pido que presente las configuraciones básicas y los scripts, si es posible, para probar la configuración descrita en el primer escenario.
ahora configuré conexiones vpn a través de diferentes proveedores de ISP, usando interfaces combinadas tun / tap (no está vinculada, lo que se explica en la respuesta # 8) con esta utilidad:
Net-ISP-Balance por Lincoln D. Stein
Equilibre la carga de su conexión a Internet a través de dos o más ISP para mejorar el ancho de banda y la confiabilidad
Página principal del proyecto: https://lstein.github.io/Net-ISP-Balance/
Este paquete le permite equilibrar la carga de una conexión a Internet doméstica o de pequeña empresa a través de dos o más ISP. Puede usarlo con un único host conectado a dos ISP, o en un equipo enrutador / firewall para equilibrar la carga de toda su LAN. El tráfico de red se equilibra en ambas conexiones de ISP para aumentar la capacidad de carga y descarga, y si un ISP falla, los otros ISP se harán cargo automáticamente.
El ancho de banda se distribuye en un nivel por conexión. Esto significa que no verá el ancho de banda agregado en ninguna referencia de descarga o velocidad en particular, pero verá los beneficios cuando se realizan múltiples transferencias de datos simultáneamente, por ejemplo, cuando varias personas en su hogar transmiten películas. Además, los protocolos de transferencia de archivos con varias conexiones, como BitTorrent, verán los beneficios del equilibrio de carga.
Esta es una utilidad basada en Perl para administrar enrutamiento e iptables en Linux, perfecta para nuestros propósitos, de hecho, primero crea una tabla de enrutamiento para todos los proveedores, y luego distribuye todo el tráfico LAN de manera uniforme entre proveedores, para comprender cómo funciona la utilidad, sugiera considerar un pequeño ejemplo (configuración de prueba) para 3 isp + 1 lan
fuente