VM 인스턴스용 중첩 가상화 사용 설정

이 문서에서는 Compute Engine VM 인스턴스에서 중첩된 가상화에 대한 지원을 사용 설정하는 방법을 설명합니다. 또한 중첩된 VM의 시작 및 구성에 대한 기본 단계도 설명합니다.

중첩된 가상화는 Compute Engine VM에 Intel VT-x 프로세서 가상화 명령에 대한 지원을 추가합니다. 중첩된 가상화를 사용하면 VM 인스턴스를 Compute Engine에서 일반적으로 시작한 후 VM 인스턴스에 KVM 호환 하이퍼바이저를 설치하고 해당 하이퍼바이저 위에서 또 다른 VM 인스턴스를 실행할 수 있습니다. Hyper-V, ESX, Xen과 같은 기타 하이퍼바이저는 현재 지원되지 않습니다. Haswell 또는 최신 플랫폼에서 실행되는 모든 Linux VM 인스턴스에서 중첩된 가상화를 사용할 수 있습니다.

중첩된 가상화는 Compute Engine으로 VM 이미지를 전환하거나 가져오기가 쉽지 않은 VM 기반 애플리케이션 및 작업 부하에 최적화 되어있습니다. 예를 들어 중첩된 가상화를 사용하면 KVM 기반 가상 머신에서 실행되는 온프레미스 작업 부하를 위한 재해 복구 솔루션을 구축할 수 있습니다. 이를 통해 Compute Engine에서 실행되는 VM에 대해 매끄러운 장애 조치를 제공할 수 있으며, KVM 기반 VM을 기본 Compute Engine 이미지로 전환하기 위한 시간이나 조정이 추가로 필요하지 않습니다. 중첩된 가상화에 적합할 수 있는 또 다른 작업 부하는 서로 다른 KVM 호환 OS의 여러 버전에 따라 소프트웨어 패키지의 신규 버전을 테스트하고 검증해야 하는 소프트웨어 검증 프레임워크입니다. 중첩된 VM을 실행하면 Compute Engine 이미지의 대규모 라이브러리를 전환 및 관리할 필요가 없습니다.

시작하기 전에

중첩된 가상화의 작동 방법

Compute Engine VM은 L0 환경이라고 불리는 물리적 하드웨어(호스트 서버) 위에서 실행됩니다. 호스트 서버 내에서 사전 설치된 하이퍼바이저는 Compute Engine에서 L1 또는 기본 VM이라고 불리는 여러 Compute Engine VM을 단일 서버가 호스팅할 수 있게 해줍니다. 중첩된 가상화를 사용할 때는 L1 게스트 OS 위에 또 다른 하이퍼바이저를 설치하고 L1 하이퍼바이저를 사용해서 L2 VM이라고 부르는 중첩된 VM을 만듭니다. 게스트 하이퍼바이저 및 중첩된 VM을 실행하는 L1 또는 기본 Compute Engine VM을 호스트 VM이라고 부를 수도 있습니다.

중첩된 가상화 다이어그램

제한사항

  • 중첩된 가상화는 Haswell 이상의 프로세서에서 실행되는 L1 VM에 대해서만 사용 설정할 수 있습니다. 한 영역의 기본 프로세서가 Sandy Bridge 또는 Ivy Bridge인 경우에는 최소 CPU 선택을 사용하여 특정 인스턴스에 대해 Haswell 이상의 프로세서를 선택할 수 있습니다. Haswell 이상의 프로세서를 지원하는 영역을 확인하려면 지역 및 영역 페이지를 검토하세요.
  • 중첩된 가상화는 Linux 인스턴스에서 실행되는 KVM 기반 하이퍼바이저에서만 지원됩니다. ESX 및 Xen 하이퍼바이저는 지원되지 않습니다.
  • 중첩된 가상화에서 Windows 인스턴스는 현재 지원되지 않습니다.

테스트된 KVM 버전

Google은 다음과 같은 호스트 VM과 중첩 VM 조합을 사용하여 기본적인 중첩 가상화 부팅 및 통합 테스트를 실행합니다.

  • 다음 중첩 VM을 호스팅하는 Debian 9 커널 버전 4.9
    • CentOS 6.5 커널 버전 2.6
    • Debian 9 커널 버전 4.9
    • RHEL 5.11 커널 버전 2.6
    • SLES 12 SP3 커널 버전 4.4
    • Ubuntu 16.04 LTS 커널 버전 4.15
    • Windows Server 2008 R2
    • Windows Server 2016 Datacenter Edition
  • 다음 중첩 VM을 호스팅하는 SLES 12 SP3 커널 버전 4.4
    • SLES 12 SP3 커널 버전 4.4
  • 다음 중첩 VM을 호스팅하는 Ubuntu 16.04 LTS 커널 버전 4.15
    • Ubuntu 16.04 LTS 커널 버전 4.15

여기에 나열되지 않은 배포판과 커널/KVM 버전에서 중첩 VM을 실행하는 데 문제가 있는 경우, 문제를 신고하기 전에 호스트 Compute Engine 인스턴스에서 위 환경 중 하나를 게스트 운영체제로 사용하여 문제를 재현해 보시기 바랍니다.

성능

하드웨어 지원 중첩된 가상화의 경우에도 중첩된 VM 자체 및 그 안에서 실행되는 모든 애플리케이션 또는 작업 부하에는 성능 제한이 발생합니다. 특정 애플리케이션 또는 작업 부하에 대해 정확한 성능 저하를 예측하는 것은 불가능하지만, CPU에 종속된 작업 부하는 최소 10% 이상의 성능 저하 그리고 I/O에 종속된 작업 부하는 그 이상의 성능 저하가 일어날 것으로 예상할 수 있습니다.

인스턴스에서 중첩된 가상화 사용 설정

중첩된 가상화는 API 또는 gcloud 구성요소를 사용하여 사용 설정할 수 있습니다. 중첩된 가상화를 사용 설정하려면 L1 또는 호스트 VM 인스턴스에서 VMX를 사용 설정하는 특수한 라이선스 키를 사용해서 커스텀 이미지를 만든 후 중첩된 가상화의 제한사항을 충족하는 인스턴스에서 해당 이미지를 사용해야 합니다. 이 라이선스 키는 추가 요금이 발생하지 않습니다.

  1. 운영체제를 사용해 공개 이미지 또는 커스텀 이미지에서 부팅 디스크를 만듭니다. 또는 이번 단계를 건너뛰고 라이선스를 VM 인스턴스 중 하나의 기존 디스크에 적용할 수도 있습니다.

    gcloud

    gcloud 명령줄 도구를 사용해 선택한 부팅 디스크 이미지에서 디스크를 만듭니다. 이번 예에서는 debian-9 이미지 계열에서 disk1이라는 이름의 디스크를 만듭니다.

    gcloud compute disks create disk1 --image-project debian-cloud --image-family debian-9

    API

    debian-9 이미지 계열에서 disk1이라는 이름의 디스크를 만듭니다.

    POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-b/disks
    
    {
     "name": "disk1",
     "sourceImage": "/projects/debian-cloud/global/images/family/debian-9"
    }

    여기서 [PROJECT_ID]는 프로젝트 ID입니다.

  2. 앞에서 만든 부팅 디스크 또는 기존 인스턴스의 부팅 디스크를 사용해 가상화에 필요한 특수 라이선스 키로 커스텀 이미지를 만듭니다.

    gcloud

    'gcloud' 명령줄 도구를 사용하여 이미지를 만드는 경우 '--licenses' 플래그를 사용해서 다음 라이선스 URL을 제공합니다.

    https://www.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx

    예를 들어 다음 명령어는 이름이 'disk1'인 예제 디스크로부터 이름이 'nested-vm-image'인 이미지를 만듭니다.

    gcloud compute images create nested-vm-image \
      --source-disk disk1 --source-disk-zone us-central1-b \
      --licenses "https://www.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx"

    API

    API에서 API 요청에 라이선스 속성을 포함시킵니다.

    POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images
    
    {
       "licenses": ["projects/vm-options/global/licenses/enable-vmx"],
       "name": "nested-vm-image",
       "sourceDisk": "zones/us-central1-b/disks/disk1"
    }

    여기서 [PROJECT_ID]는 프로젝트 ID입니다.

  3. 필요한 라이선스로 이미지를 만든 이후 더 이상 필요 없게 되었을 때는 소스 디스크를 삭제할 수 있습니다.
  4. 새로운 커스텀 이미지를 라이선스와 함께 사용하여 VM 인스턴스를 만듭니다. 이때 Haswell CPU 플랫폼 이상을 지원하는 인스턴스를 영역에 만들어야 합니다. 예를 들면 다음과 같습니다.
    gcloud compute instances create example-nested-vm --zone us-central1-b \
                  --min-cpu-platform "Intel Haswell" \
                  --image nested-vm-image
  5. 중첩된 가상화가 VM에서 사용 설정되었는지 확인합니다.
    1. VM 인스턴스에 연결합니다. 예를 들면 다음과 같습니다.
      gcloud compute ssh example-nested-vm
    2. 다음 명령어를 실행하여 중첩된 가상화가 사용 설정되었는지 확인합니다. 응답이 0이 아니면 중첩된 가상화가 사용 설정된 것입니다.
      grep -cw vmx /proc/cpuinfo

중첩된 VM 시작

중첩된 VM은 여러 방법으로 시작할 수 있습니다. 이 섹션에서는 Debian을 실행 중인 L1 VM에서 qemu-system-x86_64를 사용하여 중첩된 VM을 시작하는 예를 제공합니다. 여기에 설명된 절차 이외의 방법을 사용해서 중첩된 VM을 시작할 때 문제가 발생한 경우에는 문제를 버그로 보고하기 전에 이 절차를 사용해서 문제를 재현해보세요.

  1. VM 인스턴스에 연결합니다. 예를 들면 다음과 같습니다.

    gcloud compute ssh example-nested-vm
    
  2. VM 인스턴스를 업데이트하고 필요한 패키지를 설치합니다.

    sudo apt-get update && sudo apt-get install qemu-kvm -y
    
  3. OS 이미지를 다운로드합니다.

    wget https://people.debian.org/~aurel32/qemu/amd64/debian_squeeze_amd64_standard.qcow2
    
  4. screen을 실행합니다.

    screen
    
  5. screen 시작 프롬프트가 표시되면 Enter를 누릅니다.

  6. 중첩된 VM을 시작합니다. 프롬프트가 표시되면 user: root, password: root로 로그인합니다.

    sudo qemu-system-x86_64 -enable-kvm -hda debian_squeeze_amd64_standard.qcow2 -m 512 -curses
    
  7. VM에 외부 액세스가 포함되는지 테스트합니다.

    user@nested-vm:~$ wget google.com && cat index.html
  8. 완료되었으면 Ctrl + a, Ctrl + d 버튼을 눌러서 중첩된 VM을 종료합니다.

호스트와 중첩된 VM 사이의 비공개 브리지 시작

호스트와 중첩된 VM 사이의 연결을 설정하기 위해서는 비공개 브리지를 만들 수 있습니다. 이 샘플 절차는 Debian을 실행하는 L1 VM에서 사용할 수 있습니다.

  1. VM 인스턴스에 연결합니다. 예를 들면 다음과 같습니다.

    gcloud compute ssh example-nested-vm
    
  2. VM 인스턴스를 업데이트하고 필요한 패키지를 설치합니다.

    sudo apt-get update && sudo apt-get install uml-utilities qemu-kvm bridge-utils virtinst libvirt-daemon-system libvirt-clients -y
    
  3. libvirt 패키지에 제공되는 기본 네트워크를 시작합니다.

    sudo virsh net-start default
    
  4. virbr0 브리지가 준비되었는지 확인합니다.

    sudo ifconfig -a
    
     eth0      Link encap:Ethernet  HWaddr 42:01:0a:80:00:02
               inet addr:10.128.0.2  Bcast:10.128.0.2  Mask:255.255.255.255
               UP BROADCAST RUNNING MULTICAST  MTU:1460  Metric:1
               RX packets:14799 errors:0 dropped:0 overruns:0 frame:0
               TX packets:9294 errors:0 dropped:0 overruns:0 carrier:0
               collisions:0 txqueuelen:1000
               RX bytes:97352041 (92.8 MiB)  TX bytes:1483175 (1.4 MiB)
    
     lo        Link encap:Local Loopback
               inet addr:127.0.0.1  Mask:255.0.0.0
               inet6 addr: ::1/128 Scope:Host
               UP LOOPBACK RUNNING  MTU:65536  Metric:1
               RX packets:0 errors:0 dropped:0 overruns:0 frame:0
               TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
               collisions:0 txqueuelen:0
               RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    
     virbr0    Link encap:Ethernet  HWaddr 5a:fa:7e:d2:8b:0d
               inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
               UP BROADCAST MULTICAST  MTU:1500  Metric:1
               RX packets:0 errors:0 dropped:0 overruns:0 frame:0
               TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
               collisions:0 txqueuelen:0
               RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
  5. 더미 인터페이스를 만듭니다.

    sudo modprobe dummy
    
  6. 브리지에 더미 인터페이스를 추가합니다.

    sudo brctl addif virbr0 dummy0
    
  7. 인터페이스가 추가되었는지 확인합니다.

    sudo brctl show
    
    bridge name    bridge id          STP enabled    interfaces
    virbr0         8000.6a20fa136bb6  yes            dummy0
  8. 호스트 VM에서 중첩된 VM으로 이동하기 위해 tun 인터페이스를 만듭니다.

    sudo tunctl -t tap0
    sudo ifconfig tap0 up
    
  9. tun 인터페이스를 브리지 VM에 결속합니다.

    sudo brctl addif virbr0 tap0
    
  10. 브리지 네트워크가 올바르게 설정되었는지 다시 확인합니다.

    sudo brctl show
    
    bridge name     bridge id               STP enabled     interfaces
    virbr0          8000.5254005085fe       yes              dummy0
                                                             tap0
  11. OS 이미지를 다운로드합니다.

    wget https://people.debian.org/~aurel32/qemu/amd64/debian_squeeze_amd64_standard.qcow2
    
  12. screen을 실행합니다.

    screen
    
  13. screen 시작 프롬프트가 표시되면 Enter를 누릅니다.

  14. 중첩된 VM을 시작합니다. 프롬프트가 표시되면 user: root, password: root로 로그인합니다.

    sudo qemu-system-x86_64 -enable-kvm -hda debian_squeeze_amd64_standard.qcow2 -m 512 -net nic -net tap,ifname=tap0,script=no -curses
    
  15. 중첩된 VM에서 ifconfig를 실행하여 VM의 주소가 virbr0 공간에 속하는지(예: 192.168.122.89) 확인합니다.

    user@nested-vm:~$ ifconfig
  16. 포트 8000에서 더미 웹 서버를 시작합니다.

    user@nested-vm:~$ python -m SimpleHTTPServer
  17. Ctrl + a, Ctrl + a 버튼을 눌러서 중첩된 VM을 종료합니다.

  18. 호스트 VM이 중첩된 VM에 핑할 수 있는지 테스트합니다.

    curl 192.168.122.89:8000
    

    중첩된 VM이 다음과 비슷한 결과를 반환합니다.

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><html>
    <title>Directory listing for /</title>
    <body>
    <h2>Directory listing for /</h2>
    <hr>
    <ol>
    <li><a href=".aptitude/">.aptitude/</a>
    <li><a href=".bashrc">.bashrc</a>
    <li><a href=".profile">.profile</a>
    </ol>
    <hr>
    </body>
    </html>
    

호스트 VM 외부에서 액세스할 수 있도록 중첩된 VM 구성

여러 네트워크 인터페이스를 사용하여 인스턴스를 설정하거나 별칭 IP를 사용하여 인스턴스를 설정해서 호스트 VM 외부의 VM이 중첩된 VM에 핑할 수 있습니다.

다음 샘플 절차에서는 별칭 IP를 사용해서 동일 네트워크에 있는 다른 VM에서 중첩된 VM에 액세스할 수 있도록 호스트와 중첩된 VM을 설정합니다. 이 절차는 Debian을 실행하는 L1 VM에서 사용할 수 있습니다.

  1. 중첩된 가상화가 설정된 VM을 만듭니다. 단, HTTP/HTTPS 트래픽 지원 및 별칭 IP 범위가 포함되어야 합니다. 예를 들면 다음과 같습니다.

    gcloud compute instances create example-nested-vm --image nested-vm-image \
        --tags http-server,https-server --can-ip-forward \
        --min-cpu-platform "Intel Haswell" \
        --network-interface subnet=subnet1,aliases=/30
    
  2. VM 인스턴스에 연결합니다. 예를 들면 다음과 같습니다.

    gcloud compute ssh example-nested-vm
    
  3. VM 인스턴스를 업데이트하고 필요한 패키지를 설치합니다.

    sudo apt-get update && sudo apt-get install uml-utilities qemu-kvm bridge-utils virtinst libvirt-daemon-system libvirt-clients -y
    
  4. libvirt 패키지에 제공되는 기본 네트워크를 시작합니다.

    sudo virsh net-start default
    
  5. virbr0 브리지가 준비되었는지 확인합니다.

    sudo ifconfig -a
     
     eth0      Link encap:Ethernet  HWaddr 42:01:0a:80:00:02
               inet addr:10.128.0.2  Bcast:10.128.0.2  Mask:255.255.255.255
               UP BROADCAST RUNNING MULTICAST  MTU:1460  Metric:1
               RX packets:14799 errors:0 dropped:0 overruns:0 frame:0
               TX packets:9294 errors:0 dropped:0 overruns:0 carrier:0
               collisions:0 txqueuelen:1000
               RX bytes:97352041 (92.8 MiB)  TX bytes:1483175 (1.4 MiB)

    lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

    virbr0 Link encap:Ethernet HWaddr 5a:fa:7e:d2:8b:0d inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

  6. 더미 인터페이스를 만듭니다.

    sudo modprobe dummy
    
  7. 브리지에 더미 인터페이스를 추가합니다.

    sudo brctl addif virbr0 dummy0
    
  8. 인터페이스가 추가되었는지 확인합니다.

    sudo brctl show
    bridge name    bridge id          STP enabled    interfaces
    virbr0         8000.6a20fa136bb6  yes            dummy0
  9. 호스트 VM에서 중첩된 VM으로 이동하기 위해 tun 인터페이스를 만듭니다.

    sudo tunctl -t tap0
    sudo ifconfig tap0 up
    
  10. tun 인터페이스를 브리지 VM에 결속합니다.

    sudo brctl addif virbr0 tap0
    
  11. 브리지 네트워크가 올바르게 설정되었는지 다시 확인합니다.

    sudo brctl show
    
    bridge name     bridge id               STP enabled     interfaces
    virbr0          8000.5254005085fe       yes              dummy0
                                                             tap0
  12. OS 이미지를 다운로드합니다.

    wget https://people.debian.org/~aurel32/qemu/amd64/debian_squeeze_amd64_standard.qcow2
    
  13. screen을 실행합니다.

    screen
    
  14. screen 시작 프롬프트가 표시되면 Enter를 누릅니다.

  15. 중첩된 VM을 시작합니다. 프롬프트가 표시되면 user: root, password: root로 로그인합니다.

    sudo qemu-system-x86_64 -enable-kvm -hda debian_squeeze_amd64_standard.qcow2 -m 512 -net nic -net tap,ifname=tap0,script=no -curses
    
  16. 중첩된 VM에서 ifconfig를 실행하여 VM의 주소가 virbr0 공간에 속하는지(예: 192.168.122.89) 확인합니다.

    user@nested-vm:~$ ifconfig
  17. 포트 8000에서 더미 웹 서버를 시작합니다.

    user@nested-vm:~$ python -m SimpleHTTPServer
  18. Ctrl + a, Ctrl + a 버튼을 눌러서 중첩된 VM을 종료합니다.

  19. 호스트 VM이 중첩된 VM에 핑할 수 있는지 테스트합니다.

    curl 192.168.122.89:8000
    

    중첩된 VM이 다음과 비슷한 결과를 반환합니다.

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><html>
    <title>Directory listing for /</title>
    <body>
    <h2>Directory listing for /</h2>
    <hr>
    <ol>
    <li><a href=".aptitude/">.aptitude/</a>
    <li><a href=".bashrc">.bashrc</a>
    <li><a href=".profile">.profile</a>
    </ol>
    <hr>
    </body>
    </html>
    
  20. 호스트 VM에서 중첩된 VM으로의 전달을 허용하도록 호스트 VM에서 iptables를 설정합니다. 예를 들어 192.168.122.89에서 호스팅된 VM으로 트래픽을 전달하기 위해 별칭 IP 10.128.0.13을 사용하려는 경우는 다음과 같습니다.

    echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
    sudo iptables -t nat -A PREROUTING -d 10.128.0.13 -j DNAT --to-destination 192.168.122.89
    sudo iptables -t nat -A POSTROUTING -d 192.168.122.89 -j MASQUERADE
    sudo iptables -A INPUT -p udp -j ACCEPT
    sudo iptables -A FORWARD -p tcp -j ACCEPT
    sudo iptables -A OUTPUT -p tcp -j ACCEPT
    sudo iptables -A OUTPUT -p udp -j ACCEPT
    
  21. 그런 다음 호스팅된 VM과 동일한 네트워크에 있는 또 다른 VM에 로그인하고 별칭 IP에 대한 curl 요청을 수행합니다. 예를 들면 다음과 같습니다.

    user@another-vm:~$ curl 10.128.0.13:8000

    중첩된 VM이 다음과 비슷한 결과를 반환합니다.

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><html>
    <title>Directory listing for /</title>
    <body>
    <h2>Directory listing for /</h2>
    <hr>
    <ol>
    <li><a href=".aptitude/">.aptitude/</a>
    <li><a href=".bashrc">.bashrc</a>
    <li><a href=".profile">.profile</a>
    </ol>
    <hr>
    </body>
    </html>
    

문제해결

Google은 Compute Engine 인스턴스에서 특정 Linux 배포판 및 커널/KVM 버전을 사용하여 기본 중첩된 가상화 부팅 및 통합 테스트를 실행합니다. 또한 이러한 테스트에는 특정 프로세스가 사용됩니다. 문제를 버그로 신고하기 전에 다음 항목에 따라 문제를 재현해 보세요.

grep -c vmx /proc/cpuinfo를 실행하면 0이 반환되고 내 VM이 중첩용으로 설정되지 않았다는 메시지가 표시됩니다.

  1. Haswell 이상의 CPU 플랫폼을 사용하여 VM을 시작했는지 확인합니다.
  2. VM 이미지에 올바른 라이선스를 사용 중인지 확인합니다.

중첩된 VM을 종료할 수 없습니다.

중첩된 각 VM 세션 이전에 screen을 실행하지 않은 경우 중첩된 VM을 종료할 수도 있고, 다른 터미널에서 프로세스를 종료할 수도 있습니다. 중첩된 VM을 종료하려면 중첩된 VM 내에서 poweroff 명령어를 실행합니다. 또는 다른 터미널에서 호스트 VM에 로그인하고, 프로세스를 종료하고, 호스트 VM에서 screen을 실행한 후에 중첩된 VM을 새로 시작합니다.

iptables 규칙이 트래픽을 중첩된 VM으로 전달하지 않습니다.

  • iptables는 하향식으로 규칙을 확인합니다. 규칙의 우선순위를 다른 규칙보다 높여 보세요.
  • 패킷을 가로채는 충돌 규칙이 있는지 확인합니다.
  • iptables 비우기를 고려합니다.

    1. 먼저 기본 정책을 설정합니다.

      sudo iptables -P INPUT ACCEPT
      sudo iptables -P FORWARD ACCEPT
      sudo iptables -P OUTPUT ACCEPT
      
    2. 그런 다음 모든 테이블 및 체인을 비우고 기본값이 아닌 체인을 삭제합니다.

      sudo iptables -t nat -F
      sudo iptables -t mangle -F
      sudo iptables -F
      sudo iptables -X
      
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Compute Engine 문서