Encaminhar tun0 para 2 ou mais NICs

1. Encaminhar tun0 para 2 ou mais NICs

Eduardo Campos
3dUcP

(usa Manjaro Linux)

Enviado em 26/03/2019 - 13:48h

Tenho um aplicativo VPN na Google Play com varios servidores gratuitos e estou enfrentando problemas com a carga no servidor, depois de algum tempo rodando o servidor simplesmente fica inacessível de forma com que nem o ping funciona, me retorna "sendmsg: Operation not permitted" de dentro do servidor.

Eu programo meu próprio protocolo de VPN e já tentei de tudo para resolver isso, já cheguei até a listar todas as conexões TCPs (ips fonte e destino, portas, numeros de sequencias...) abertas pelo cliente para quando ele desconectar eu construir um pacote IP+TCP manualmente (recalculando tudo, checksums, numeros de sequencia,seq+=htonl(1)) com a flag RST/ACK e enviar para rede para que as conexões seja fechadas.
Isso funcionou e as conexões TCPs abertas pelo cliente foram fechadas.
Porém, isso não resolveu o problema da sobrecarga pois ainda tem o UDP e ICMP que não possuem tais flags...

A ideia que tenho agora para que a rede pelo menos não trave de vez por sobrecarga de portas é adicionando mais interfaces de rede com IPs publicos.

Eu fiz isso porém não sei como faço para distribuir o trafego da vpn tun0 para 2 links de internet, e outra, só está funcionando quando eu redireciono tun0 para a interface principal enp0s5, quando redireciono para enp0s6 não funciona.

Abaixo as configurações do servidor.

ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:16:3e:22:d0:6e brd ff:ff:ff:ff:ff:ff
inet 201.16.197.179/24 brd 201.16.197.255 scope global enp0s5
valid_lft forever preferred_lft forever
inet6 fe80::216:3eff:fe22:d06e/64 scope link
valid_lft forever preferred_lft forever
3: enp0s6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:16:3e:31:2c:0c brd ff:ff:ff:ff:ff:ff
inet 201.16.197.201/24 brd 201.16.197.255 scope global enp0s6
valid_lft forever preferred_lft forever
inet6 fe80::216:3eff:fe31:2c0c/64 scope link
valid_lft forever preferred_lft forever
4: ctun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN group default qlen 1000
link/none
inet 10.11.0.1/16 brd 10.11.255.255 scope global ctun0
valid_lft forever preferred_lft forever



ip route

default via 201.16.197.1 dev enp0s5
10.11.0.0/16 dev ctun0 proto kernel scope link src 10.11.0.1
201.16.197.0/24 dev enp0s6 proto kernel scope link src 201.16.197.201
201.16.197.0/24 dev enp0s5 proto kernel scope link src 201.16.197.179


ip route show tab 1
 
 

default via 201.16.197.1 dev enp0s5
10.11.0.0/16 dev ctun0 proto kernel scope link src 10.11.0.1
201.16.197.0/24 dev enp0s5 proto kernel scope link src 201.16.197.179
201.16.197.0/24 dev enp0s6 proto kernel scope link src 201.16.197.201


ip route show tab 2

default via 201.16.197.1 dev enp0s6
10.11.0.0/16 dev ctun0 proto kernel scope link src 10.11.0.1
201.16.197.0/24 dev enp0s6 proto kernel scope link src 201.16.197.201
201.16.197.0/24 dev enp0s5 proto kernel scope link src 201.16.197.179


iptables

-A POSTROUTING -s 10.11.0.0/16 -o enp0s5 -j MASQUERADE



Ambas as interfaces enp0s5 e enp0s6 são acessiveis por fora, porém, quando redireciono ctun0 para enp0s5 funciona normalmente, mas quando redireciono para enp0s6 não funciona.
Minha ideia é redirecionar para as 2 interfaces distruindo a carga de portas.


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts