Автоматически приобретать новый IP-адрес в новой сети

Я запускаю виртуальную машину Centos на ноутбуке, используя мостовое сетевое соединение, чтобы избежать проблем с двойным NAT, с адресом, назначенным через DHCP. Это отлично работает, пока я не переведу ноутбук в другую сеть, после чего виртуальная машина не заметит, что она находится в другой сети и продолжает использовать старый IP-адрес, что приводит к потере подключения.

В настоящее время я управляю этим путем ручного запуска ifdown и ifup для сброса сетевого подключения, но я бы предпочел автоматический способ сделать это. Предложения?

Заметки:

  • Все сети имеют DHCP-серверы.
  • Виртуальная виртуальная машина правильно получает аренду IP-адресов в каждой сети при подключении интерфейса.
  • Я не могу изменять настройки на серверах DHCP.
  • Сети находятся в разных диапазонах IP-адресов.

5 Solutions collect form web for “Автоматически приобретать новый IP-адрес в новой сети”

Отредактируйте хосты /etc/network/interfaces :

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

Должны делать именно то, что вы хотите! Можно, конечно, улучшить, но я думаю, что показал вам путь.

Это рекомендуемое решение, которое может сработать для вас.

Попытайтесь возиться с временем аренды, предоставляемым сервером DHCP на стороне клиента, используя dhcp-eval (пример находится прямо там). Установите значение ниже, чем изменение времени между сетями.

Например, если вам требуется 30 минут, чтобы добраться из офиса до дома, установите его на 20 минут, чтобы ваша виртуальная машина была лишена аренды, как только вы вернетесь домой.

Если вы настроили второе сетевое соединение «только для хоста» с вашим хостом, вы можете посмотреть его основные сетевые подключения, чтобы увидеть, когда изменяется IP-адрес. Что-то вроде…

 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 

Или, если вы более знакомы с OS X, чем я, вы могли бы, вероятно, подключить сетевую подсистему к ssh от хоста к гостю вместо этого и избежать опроса раз в минуту.

Однако это требует от вас возможности ssh между хостом и гостем без пароля. Вы можете использовать ключ без пароля, которому разрешено запускать скрипт ifconfig en1 .

Похоже, что это больше проблема с тем, что вы используете для виртуализации (VMWare или VirtualBox или что-то еще), когда он не сообщает виртуальной машине, что соединение было сброшено, а так как виртуальная машина все еще имеет аренду DHCP из первой сети , он не знает, что нужно получить новый. Вместо того, чтобы пытаться поиграть с виртуальной машиной, посмотрите, есть ли у вас что-то, что вы используете для виртуализации, кнопка с одним щелчком мыши или что-то там, где вы можете включить / отключить виртуальную сетевую карту на виртуальной машине, чтобы при ее сбросе она была вынуждена захватить новый IP.

Вот вам (возможно, слишком) простой скрипт для CentOS VM, который сделает то, что вы ищете. Я рекомендую разместить этот скрипт в / usr / local / sbin, так как это не системный скрипт, и он запускается 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 

Как только это будет сделано, поместите эту запись в корневой файл корневого каталога или в /etc/cron.d/nettest.cron , и все будет установлено:

 # Call nettest.sh every 5 minutes */5 * * * * /usr/local/sbin/nettest.sh 2>&1> /dev/null 
  • Интернет-соединение теряется каждые 10-15 минут (Ethernet-кабель)
  • Поиск SERVER_IFACE для dhcprelay в busybox
  • Точка доступа предлагает IP-адрес, если используется в качестве сервера DHCP?
  • Network Manager не выполняет переключение между сетями по умолчанию
  • Два IP-адреса, назначенные одному и тому же компьютеру?
  • Запрос dhcp для получения IP по MAC
  • NFS через TCP недоступна (My server ip) - сеть недоступна и разрешение отклонено
  • Должен ли маршрутизатор wifi обрабатывать DHCP для своих клиентов?
  • Почему я получаю ошибки аутентификации в этой «открытой» конфигурации?
  • DDNS (dynamic-dns) и добавление имени хоста на устройство (чтобы быть видимым в сети)
  • Сбой сети в FreeBSD: Ping to router терпит неудачу, но маршрутизатор считает, что компьютер подключен
  • Interesting Posts

    Есть ли риск или недостаток в снижении частоты процессора со сценарием?

    Настроить nautilus в xfce

    Установите Ubuntu с маленького USB-накопителя

    Нужно ли luksClose раздел luks моего USB перед отключением его?

    Как сделать поиск Nautilus полезным вне / дома?

    Почему спин-блокировки имеют хороший выбор в Linux Kernel Design, а не в чем-то более распространенном в коде userland, таком как семафор или мьютекс?

    скрипт init.d вызывает зависание загрузки

    раскол не работает по мере необходимости?

    Как я могу получить версию команд pgrep & pkill?

    vim команды разных категорий и обозначений

    Использовать ssh с определенным сетевым интерфейсом

    Как запустить gnuplot, просто набрав «gp» в osx?

    Использовать UMTS Stick в качестве модема «dial in» – нет необходимости в dataplan

    Использование файла конфигурации ядра Linux с версии на версию

    Ansible failed_when только распечатать настроенное сообщение об ошибке

    Linux и Unix - лучшая ОС в мире.