Adquira automaticamente novo endereço IP na nova rede

4

Estou executando uma máquina virtual Centos em um laptop usando uma conexão de rede em ponte para evitar problemas com NAT duplo, com o endereço atribuído via DHCP. Isso funciona bem até eu mover o laptop para outra rede, no ponto em que a VM não percebe que está em uma rede diferente e continua a usar o endereço IP antigo, resultando em uma perda de conectividade.

Atualmente gerencio isso manualmente, executando ifdown e ifup para redefinir a conexão de rede, mas prefiro uma maneira automática de fazer isso. Sugestões?

Notas:

  • Todas as redes têm servidores DHCP.
  • A VM obtém corretamente uma concessão de endereço IP em cada rede ao exibir a interface.
  • Não consigo alterar as configurações nos servidores DHCP.
  • As redes estão em intervalos de endereços IP diferentes.
por Old Pro 13.09.2012 / 23:43

5 respostas

1

Edite seus hosts /etc/network/interfaces :

auto eth0
  post-up VBoxManage controlvm nameofyourboxhere setlinkstate1 on
  post-down VBoxManage controlvm nameofyourboxhere setlinkstate1 off

Deve fazer exatamente o que você quer! Pode, claro, ser melhorado, mas acho que mostrei o caminho.

    
por 31.01.2014 / 19:33
0

Esta é uma solução sugerida que pode funcionar para você.

Tente alterar o tempo de concessão fornecido pelo servidor DHCP no lado do cliente usando dhcp-eval (exemplo está bem ali). Defina o valor mais baixo que o tempo que muda entre as redes.

Por exemplo, se você levar 30 minutos normalmente para ir do escritório até a casa, configurá-lo para 20 minutos deverá fazer com que sua máquina virtual seja invalidada assim que você chegar em casa.

    
por 14.09.2012 / 00:19
0

Se você configurar uma segunda conexão de rede "somente host" com seu host, poderá assistir às suas principais conexões de rede para ver quando um endereço IP é alterado. Algo como ...

while sleep 60 ; do
    new_ip="'ssh host_ip ifconfig en1 | grep 'inet ' | awk '{print $2}''"
    if [ "$new_ip" != "$old_ip" ] ; then
        ifdown eth0 ; ifup eth0
    fi
    old_ip="$new_ip"
done

Ou, se você estiver mais familiarizado com o OS X do que eu, provavelmente poderia ligar o subsistema de rede ao ssh do host para o convidado e evitar a consulta de uma vez por minuto.

Isso requer que você seja capaz de ssh entre host e guest sem uma senha, no entanto. Você pode usar uma chave sem senha que só pode executar um script que execute ifconfig en1 .

    
por 27.11.2013 / 00:15
0

Parece que isso é mais um problema com o que você está usando para virtualizar (VMWare ou VirtualBox ou qualquer outro) onde não está dizendo à máquina virtual que a conexão foi redefinida e como a máquina virtual ainda tem a concessão DHCP a primeira rede, ela não sabe que precisa de uma nova. Em vez de tentar brincar com a máquina virtual, veja se o que você está usando para virtualizar tem um botão de um clique ou algo em que você pode ativar / desativar a NIC virtual na máquina virtual para que quando ela for redefinida, seja forçada a um novo IP.

    
por 30.12.2013 / 06:18
0

Aqui está um script (talvez excessivamente) simples para sua VM do CentOS que fará o que você está procurando. Eu recomendo Colocar este script em / usr / local / sbin, já que não é um script de sistema, e é executado por root.

#!/bin/bash
# nettest.sh
# Get the gateway address from the routing table
gateway=$(netstat -rn | awk '/^0.0.0.0/ {print $2}')

# Try and ping the gateway
ping -c 1 ${gateway}
# If the ping succeeds, exit.
if [ $? == 0 ]; then
     exit
# Otherwise take down and bring up the network interface
else
    ifdown eth0
    ifup eth0
    exit
fi

Uma vez feito isso, coloque esta entrada no arquivo root crontab ou em /etc/cron.d/nettest.cron , e você estará pronto:

# Call nettest.sh every 5 minutes
*/5 * * * * /usr/local/sbin/nettest.sh 2>&1> /dev/null
    
por 04.02.2015 / 19:16