Problema com comutação de rede

3

Eu tenho um PC desktop executando o Debian que possui duas placas de rede instaladas. Uma placa de rede está conectada a uma rede corporativa segura e requer um IP estático. A outra placa de rede (eth1) é conectada a um roteador dlink e depois a um modem a cabo com endereçamento DHCP.

Gostaria de criar um script para alternar entre as duas redes. Eu quero ter certeza de que as duas redes não estão conectadas ao mesmo tempo. No momento, meu script verifica o status up / down de cada interface e os alterna com ifup / ifdown. No entanto, estou tendo vários problemas ao tentar mudar de rede, o que tentarei delinear, mas tenho a sensação de que estou fazendo isso da maneira errada.

Se eu configurar / etc / network / interfaces para refletir as configurações de IP estático necessárias para a conexão de rede da empresa e o DHCP necessário para a conexão a cabo do que recebo o erro "RTNETLINK responde: arquivo existe" porque tenho mais de um gateway definido no arquivo.

Se eu definir os gateways por meio de 'route add' e incluir a medição, o ifup não exibirá eth0. Se eu deixar eth0 e eth1 indefinidos no arquivo de interfaces e usar o gerenciador de rede para gerenciá-los, o ifup não trará nenhuma interface. Em ambos os casos, recebo o erro "Falha ao trazer eth #" (substitua # por 0 ou 1) sem explicação para mais detalhes quando tento usar ifup.

Se eu substituir ifup / ifdown por "ifconfig eth # up / down" do que as interfaces vão para cima e para baixo corretamente, mas as configurações de DNS em resolv.conf não são atualizadas, então não posso fazer muita coisa. Adicionando "resolvconf -u" não parece fazer o truque também.

Posso fazer com que tudo funcione corretamente em qualquer rede se eu editar manualmente o resolv.conf após a mudança, mas gostaria de ter isso da forma mais automatizada e fácil possível. Qualquer ajuda que você possa fornecer é muito apreciada.

--- atualização ---

/ etc / network / interfaces

auto lo
  iface lo inet loopback

auto eth0
  iface eth0 inet static
  address 10.0.0.152
  netmask 255.255.255.0
  gateway 10.0.0.1
  network 10.0.0.0
  broadcast 10.0.0.255
  dns-search company.com
  dns-nameservers 10.0.0.2 10.0.0.3 10.0.0.4
  meter 100  #without this line I get RNETLINK answers: file does not exist

auto eth1
  iface eth1 inet dhcp  #assigns an address in the 192.168.0.0/24 space with 192.168.0.1 as DNS
  meter 200  #without this line I get RNETLINK answers: file does not exist

/etc/resolv.conf

nameserver 10.0.0.2
nameserver 10.0.0.3
nameserver 10.0.0.4
search company.com cable.provider.com

A menos que eu edite manualmente o arquivo, meu resolv.conf sempre tem os servidores DNS para a conexão eth0 e os dois domínios no caminho de pesquisa. Para fazer com que a conexão a cabo funcione, preciso excluir as outras linhas do servidor de nomes e adicionar 192.168.0.1 e, para que a conexão da empresa funcione, basta excluir o caminho de pesquisa do provedor de cabo.

    
por DarkShadow 09.06.2014 / 19:00

1 resposta

1

As configurações do DHCP não devem conter um endereço de gateway em /etc/network/interfaces . Para configurar o DHCP no eth0, por exemplo, você só precisa das seguintes linhas no mínimo:

auto eth0
    iface eth0 inet dhcp

Uma vez configurado corretamente ifup & ifdown deve funcionar corretamente e, em seguida, você pode colocar os scripts que deseja executar ao alterar o estado de uma interface em /etc/network/if-up.d & %código%. No entanto, se o seu servidor DHCP estiver configurado corretamente, ele deverá fornecer uma configuração de DNS para seus clientes, portanto, configurá-lo manualmente não deve ser necessário

EDITAR

Para que suas configurações de DNS sejam alteradas automaticamente, você precisa adicionar a configuração necessária a cada respectiva interface em /etc/network/if-down.d , mesmo que a interface use DHCP. As configurações de DNS em /etc/network/interfaces são passadas para /etc/network/interfaces quando resolvconf & ifup são chamados usando scripts de gancho no diretório ifdown .

Quando você exibe uma interface usando /etc/network/if-(up|down).d , as configurações de DNS são anexadas a ifup , que é o que você está experimentando. Por outro lado, as mesmas configurações são removidas quando a interface é demolida usando /etc/resolv.conf . Mas mesmo se você usar ifdown , se não houver configurações de DNS estático em ifdown , as configurações dessa interface não serão removidas de /etc/network/interfaces .

Assim, sua entrada para /etc/resolv.conf deve ser:

auto eth1    
    iface eth1 inet dhcp  #assigns an address in the 192.168.0.0/24 space with 192.168.0.1 as DNS
    metric 200            #without this line I get RNETLINK answers: file does not exist
    dns-search cable.provider.com

Além disso, você pode usar a opção eth1 com -v & ifup para ativar a saída detalhada e ver exatamente quais scripts de gancho estão sendo executados.

Fontes: %código% ifdown

    
por 09.06.2014 / 21:54