Tunnel Bonding con OpenVPN

Bueno pues me toco hacer un tunnel bonding para haer bandwith agregation, asi que ni modo a darle es tecnicamente facil, asi que explicare la situacion ahora mismo:

- 2 infiernitums (2Wire)
- Los 2 infiernitums natean
- Hay otra VPN corriendo a otro lugar por otro router
- Todo esto usando bubulubu linux

Primero busque el bandwith aggregation y es un desmadre y luego Sandino asi como Rolman me comentaron que seria mejor hacer un tunnel bonding porque no habia nadie que hiciera el nat de regreso. ¿Porque esto? facil porque despues de haber hecho el bonding tuve un problema:

- Cuando tenia 1 solo cable funcionaba perfecto pero cuando conectaba las dos se moria

La solucion es facil si lo piensas, las conexiones se van por IP diferente por lo tanto los pares de TCP/IP en los sockets no funcionan porque llegan partes de otra IP y obviamente son descartadas, entonces necesitas tener un tunnel del otro lado que haga el nat de nuevo!

Bueno tan facil que me llevo algun tiempo poderlo diseñar decentemente para que no hubiera bronca asi que los pasos faciles son:

- 2 OpenVPN
- 1 Bond
- El server natea

mega facil no? PERO hay algunas cosas que hay que checar =D

- El default GW TIENE que ser la interface de Bonding
- Segmentos diferentes en los 2Wire y en las OpenVPN

—————-
|      2Wire         |——
—————-           |         —————–
|—–| Ubuntu Linux |———— RED INTERNA
—————-           |         —————–
|     2Wire          |——-
—————-

Una cosa importante:

Como no quise natear con IPTables por puerto use 2 IPs en el server tambien (cuestan 1 USD por mes asi que mucho no subio)

route add -host <IP1 del server openvpn> gw <IP de 1 2wire>

route add -host <IP2 del server openvpn> gw <IP del otro 2wire>

Esto agrega las rutas al server para poder mandarlo por los 2 2wire si no termina mandandolo por 1 y no se nota el bandwith agreggation.

Iniciar  openvpn para cada una de las IPs.

y luego asegurarse que se tiene el paquete de hacer el slave:

sudo apt-get install ifenslave

y de ahi suponiendo que se tiene el tap0 y el tap1 como interfaces en el server y en el remoto solo se hace algo asi:

modprobe bonding mode=5

ifenslave bond0 tap0 tap1

ifconfig bond0 10.100.100.1 netmask 255.255.255.0 up (En el server remoto)

ifconfig bond0 10.100.100.2 netmask 255.255.255.0 up (En el server bubulubu)

route add default gw 10.100.100.2

ping 10.100.100.1

En el server hay que agregar un NAT para que pueda salir!!!

Tan facil como eso! =D

Leave a comment

You must be logged in to post a comment.