새 네트워크에서 새 IP 주소를 자동으로 얻습니다.

새 네트워크에서 새 IP 주소를 자동으로 얻습니다.

이중 NAT 문제를 방지하기 위해 브리지된 네트워크 연결을 사용하고 DHCP를 통해 주소를 할당하면서 노트북에서 Centos 가상 머신을 실행하고 있습니다. 랩톱을 다른 네트워크로 이동할 때까지 이 방법은 제대로 작동했습니다. 그 시점에서 가상 머신은 랩톱이 다른 네트워크에 있다는 것을 인식하지 못하고 이전 IP 주소를 계속 사용하여 연결이 끊어졌습니다.

현재 저는 네트워크 연결을 수동으로 실행 ifdown하고 ifup재설정하여 이를 관리하고 있지만 자동화된 방법을 선호합니다. 제안?

노트:

  • 모든 네트워크에는 DHCP 서버가 있습니다.
  • 인터페이스를 불러올 때 VM은 각 네트워크에서 IP 주소 임대를 올바르게 얻습니다.
  • DHCP 서버의 설정을 변경할 수 없습니다.
  • 이러한 네트워크는 서로 다른 IP 주소 범위에 있습니다.

답변1

호스트를 편집하세요 /etc/network/interfaces:

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

당신이 원하는 것을 해야 합니다! 물론 개선될 수 있지만 그 방법을 보여드린 것 같습니다.

답변2

다음은 귀하에게 도움이 될 수 있는 제안된 해결 방법입니다.

클라이언트의 DHCP 서버에서 제공하는 임대 시간을 사용해 보세요.DHCP 평가(예가 바로 거기에 있습니다). 네트워크 간 시간 변화 아래의 값을 설정합니다.

예를 들어 사무실에서 집까지 이동하는 데 일반적으로 30분이 걸리는 경우 20분으로 설정하면 집에 도착하자마자 가상 머신의 임대가 만료됩니다.

답변3

호스트에 대한 두 번째 "호스트 전용" 네트워크 연결을 설정하는 경우 기본 네트워크 연결을 모니터링하여 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에 더 익숙하다면

그러나 이를 위해서는 비밀번호 없이 호스트와 게스트 간에 SSH를 통해 연결할 수 있어야 합니다. 실행만 허용하는 비밀번호 없는 키를 사용할 수 있습니다 ifconfig en1.

답변4

다음은 필요한 작업을 수행하는 CentOS VM에 대한 (아마도) 간단한 스크립트입니다. 이 스크립트는 시스템 스크립트가 아니고 루트에 의해 실행되므로 /usr/local/sbin에 배치하는 것이 좋습니다.

#!/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

완료되면 이 항목을 루트 crontab 파일에 넣거나 /etc/cron.d/nettest.cron모든 설정이 완료된 것입니다.

# Call nettest.sh every 5 minutes
*/5 * * * * /usr/local/sbin/nettest.sh 2>&1> /dev/null

관련 정보