Usando a ligação de internet ethernet e móvel para alta disponibilidade

0

Eu tenho lido sobre o driver de ligação do Linux. link

Meu objetivo é melhorar a disponibilidade da minha conexão com a Internet em um sistema baseado no Debian, combinando a interface ethernet (eth0) conectada à LAN e uma conexão de internet móvel fornecida por um módulo surf-stick / GSM. O último aparece também como uma interface ethernet na saída de ifconfig .

Eu instalei ifenslave e adicionei ao meu /etc/network/interfaces :

# Slaves
auto eth0
iface eth0 inet manual
  bond-master bond0
  bond-primary eth0
  bond-mode active-backup

auto eth1
iface eth1 inet manual
  bond-master bond0
  bond-primary eth0
  bond-mode active-backup

# Master
auto bond0
iface bond0 inet dhcp
  bond-slaves none
  bond-primary eth0
  bond-mode active-backup
  bond-miimon 100

Após a reinicialização, minha saída ifconfig será

bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST>  mtu 1500
    inet 192.168.178.47  netmask 255.255.255.0  broadcast 192.168.178.255
    inet6 fe80::ba27:ebff:feb6:c504  prefixlen 64  scopeid 0x20<link>
    ether b8:27:eb:b6:c5:04  txqueuelen 1000  (Ethernet)
    RX packets 436  bytes 34223 (33.4 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 312  bytes 80051 (78.1 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
    ether b8:27:eb:b6:c5:04  txqueuelen 1000  (Ethernet)
    RX packets 436  bytes 34223 (33.4 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 312  bytes 80051 (78.1 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
    inet 127.0.0.1  netmask 255.0.0.0
    inet6 ::1  prefixlen 128  scopeid 0x10<host>
    loop  txqueuelen 1000  (Local Loopback)
    RX packets 2  bytes 78 (78.0 B)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 2  bytes 78 (78.0 B)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Ou seja, a interface vinculada está lá. Estranhamente, eth0 também é visível, enquanto eth1 (a interface de backup que representa o surf-stick) está ausente.

Eu posso acessar se o eth0 estiver conectado à internet, mas não se eu remover essa conexão. Ou seja, minha configuração se comporta como se o surf-stick não estivesse presente.

Não tenho certeza se estou obtendo o significado de ligação corretamente, já que a referência acima fala sobre switches. No meu caso, as duas interfaces conectam-se a gateways que não estão em uma sub-rede comum.

Editar 1 Eu poderia resolver o problema parcial que as interfaces não parecem estar ligados corretamente: Parece que isso é causado pela ordem de inicialização (uma das interfaces Ethernet é de um dispositivo USB). Potencialmente, os drivers são carregados somente depois que a ligação acontece. De qualquer forma, quando eu disparo a ligação em tempo de execução (modificando / etc / network / interfaces e, em seguida, executando /etc/init.d/networking restart) a ligação parece acontecer. No entanto, ainda não obtenho o comportamento desejado.

Editar 2 Enquanto isso (infelizmente) a resposta deletada apontou que a ligação pode de fato não ser útil para minha aplicação. Se isso estiver correto, é possível obter um comportamento semelhante usando tabelas de roteamento e como? Eu gostaria de ter um dos dispositivos ethernet (eth0) como rota padrão preferencial quando seu gateway está conectado à internet. Caso contrário, uma rota padrão secundária (via eth1) deve entrar até que a eth0 receba conexão com a internet novamente.

    
por highsciguy 29.07.2018 / 15:11

1 resposta

1

A ligação só funciona se você puder criar ligações em ambos os lados da conexão. Além disso, a colagem funciona na camada 2, por isso, se você tiver transporte de camada 3 no meio, não é possível.

Em outras palavras, a ligação não funciona para o seu caso de uso.

Como usar duas conexões de internet diferentes simultaneamente é uma FAQ. Você pode

1) Faça failover: Use apenas uma conexão, alterne entre elas usando scripts personalizados quando uma conexão falhar. O principal problema aqui é definir "falha", ou seja, como detectar quando uma conexão falhou. Uma opção é um ping em intervalos regulares para um endereço conhecido.

2) Use protocolos que suportem multi-homing como o SCTP. Infelizmente, isso não foi detectado, então isso não é prático para a maioria das coisas que você gostaria de fazer na Internet.

Caso contrário, não há muito o que fazer devido à forma como os protocolos amplamente utilizados (TCP e UDP) funcionam.

    
por 30.07.2018 / 08:19