Como posso alternar facilmente entre rede com e sem fio?

1

Meu laptop geralmente é conectado via wifi (antigo T61 com Intel WM3945ABG). Para a maioria do meu trabalho, isso é suficiente. De vez em quando, eu gostaria de ligar-se à minha multa ethernet com fio de 1GB. Mas se eu fizer isso ingenuamente, montagens nfs começam a travar. (Se eu desmontar todos os nfs antes da mudança, todos está bem).

Por exemplo, meu backup inicia via anacron. Este involes montagem do unidade de backup no meu servidor via nfs4. O mais provável é que eu estou em wi-fi se isso acontece. Se eu agora conectar meu cabo ethernet, todo o acesso ao backup conduzir resultar em um sono ininterrupto. Como o backup leva bastante algum tempo (wi-fi lento, lembra?), eu não sou capaz de desmontar e remontar a unidade de backup.

Esses involes bloqueiam diálogos e shells (talvez eles digitalizem todos mountpoints quando abertos, eu não sei).

Estou com o Linux desde o Kernel 2.0.2 e, para ser honesto, esse é o / only / coisa com o Linux que realmente me deixa louco, porque eu não sou capaz de resolva isso.

Existe uma maneira de trocar transparentemente redes com e sem fio?

Oh, alguns fatos que faltam: Atualmente, estou usando o WICD, mas já tentei o NetworkManager antes. Eu estou considerando uma abordagem somente do systemd ...

% /sbin/iwconfig wlan0

wlan0     IEEE 802.11  ESSID:"the-grue"
      Mode:Managed  Frequency:2.422 GHz  Access Point: 64:70:02:A2:67:DE
      Bit Rate=54 Mb/s   Tx-Power=15 dBm
      Retry short limit:7   RTS thr:off   Fragment thr:off
      Power Management:off
      Link Quality=70/70  Signal level=-33 dBm
      Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
      Tx excessive retries:0  Invalid misc:476   Missed beacon:0

% mount | grep nfs
zem:/backup on /media/backup type nfs4
(rw,relatime,vers=4.1,rsize=65536,wsize=65536,namlen=255,soft,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.178.63,local_lock=none,addr=192.168.178.2)

Ambas as redes usam o mesmo IP e assim por diante ...

Por favor, me diga, se você precisar de mais informações!

    
por Markus 07.02.2017 / 18:40

1 resposta

1

Sem alguma ajuda do outro lado, seja onde sua WLAN e GB LAN convergem (ou seja, seu roteador doméstico) ou onde o outro ponto de comunicação é, você não pode.

E isso não é um problema do Linux, é porque os protocolos de rede são do jeito que são (por razões históricas): TCP e UDP não suportam multihoming failover, ou seja, ter várias interfaces com endereços IP diferentes em uma extremidade que todos podem ser usados de forma equivalente.

Dito isto, há algumas maneiras de fazer algo como este trabalho, mas nenhum deles é fácil, eu não tentei implementar um deles sozinho, e será necessário um esforço considerável para fazê-los funcionar. trabalho em tudo:

1) Em vez de TCP e UDP, use um protocolo que permita multihoming com failover, por exemplo, SCTP . Enquanto o SCTP está nativamente disponível no kernel do Linux, muitos não o usam. Então você terá que encontrar um aplicativo que faça o que você quer e suporte SCTP em ambas as extremidades, e boa sorte com isso. Ou você terá que modificar os aplicativos existentes, como o NFS ou seu backup, para dar suporte ao SCTP e, novamente, boa sorte com isso.

Editar : Eu descobri que há um comando wrapper chamado withsctp que faz o aplicativo empacotado usar SCTP em vez de TCP. Eu testei com nc e socat com dois pares de veth conexões para namespaces de rede, e o multihoming de failover funciona fora da caixa: desligar o par onde a conexão foi iniciada não interrompe a transmissão, que é movida para o outro par. Mas parece que ambas as interfaces de rede precisam estar visíveis quando a conexão é estabelecida, pois os endereços disponíveis fazem parte do handshake do SCTP.

Eu não testei, mas isso pode funcionar para o seu programa de backup, ou sistemas de arquivos remotos do FUSE, como o SSHFS, ou até mesmo sistemas de arquivos do kernel como o NFS.

2) Você pode unir várias interfaces, veja linux/Documentation/networking/bonding.txt nas fontes do kernel. Isto é apenas destinado a ligar, e. conexões LAN paralelas em um datacenter. Você precisará fazer isso em ambos os lados, por exemplo seu PC e seu roteador (o que significa que você pode precisar recompilar o kernel Linux de seu firmware para o roteador), e você terá que certificar-se de que ambas as interfaces são razoavelmente estáticas (especialmente WLAN). Se você conseguir este trabalho, eu estaria interessado nos detalhes.

3) Você pode tentar configurar o roteador de modo que ele forneça à sua WLAN e à sua interface LAN exatamente o mesmo endereço IP e desabilite a interface WLAN assim que ela for vista na LAN. Isso exigirá um pouco de mexer com os componentes internos do roteador e, novamente, se você conseguir esse trabalho, eu estaria interessado nos detalhes.

Existem provavelmente outros métodos igualmente obscuros. Escrever um script que desmonta / remonta o NFS e verifica se você não está no meio de um backup antes de ativar a interface da LAN pode ser mais fácil.

    
por 08.02.2017 / 12:17