Virtual Network Card
물리적 서버가 물리적 네트워크에 연결하기 위해 여러 개의 NIC를 가질 수 있는 것처럼, 가상 머신도 가상 네트워크에 연결하기 위해 여러 개의 가상 NIC(vNIC)를 가질 수 있습니다. 물리적 NIC와 마찬가지로 각 vNIC에는 고유한 MAC 주소가 있습니다. vNIC는 가상 머신의 게스트 OS에 전통적인 NIC로 나타납니다. 게스트 OS는 vNIC에 IP 주소를 할당할 수 있습니다.
가상 머신 네트워킹을 위한 네트워크 연결 외에도 ESXi는 호스트 관리 활동 및 기타 목적을 위해 네트워크 연결이 필요합니다. 이러한 요구 사항을 충족하려면 각 호스트에 하나 이상의 VMkernel이라 가상 네트워크 어댑터를 구성해야 합니다. 예를 들어, vCenter Server 또는 vSphere Host Client를 ESXi 호스트에 연결할 때 관리 트래픽을 위해 활성화된 VMkernel 가상 네트워크 어댑터의 주소(IP 주소 또는 완전히 정규화된 호스트 이름)를 제공합니다. 가상 머신이 여러 가상 네트워크 어댑터를 사용할 수 있는 것처럼, 각 ESXi 호스트도 여러 VMkernel 네트워크 어댑터를 사용할 수 있습니다.
Virtual Switch
가상 스위치는 ESXi 호스트 내 가상 장치에 네트워킹 연결성을 제공하기 위해 물리적 스위치와 유사하게 작동하는 소프트웨어 구조체입니다. 각 가상 머신은 vNIC을 사용하여 가상 스위치의 가상 포트에 연결할 수 있습니다. 물리적 네트워크에 접근하려면 호스트의 물리적 NIC 하나 이상을 업링크로 가상 스위치에 연결해야 합니다. VMkernel 내에 존재하는 가상 스위치는 호스트 내 모든 vNIC과 업링크의 모든 수신/발신 이더넷 프레임에 대한 트래픽 관리를 제공합니다.
가상 스위치는 OSI 모델의 레이어 2에서 작동합니다. 데이터를 송수신하고, VLAN 태깅을 제공하며, 기타 네트워킹 기능을 제공합니다. 가상 스위치는 가상 스위치에 직접 연결된 vNIC의 MAC 주소만 포함하는 MAC 주소 테이블을 유지합니다. 가상 스위치가 이더넷 프레임을 수신하면 내부 MAC 주소 테이블을 기반으로 해당 프레임을 적절한 포트로 전달합니다. 가상 스위치는 ARP를 사용하여 내부 MAC 주소 테이블로 물리적 스위치를 업데이트합니다.
vSphere 4.0에서 VMware는 기존 가상 스위치인 vSphere Standard Switch(vSS)의 명칭을 변경하고 vSphere Distributed Switch(vDS)를 도입했습니다. vSS와 vDS는 유사한 방식으로 동작하지만 관리 및 제어 방식이 다릅니다. 각 vSS는 특정 ESXi 호스트에서 구성 및 관리됩니다. vDS는 vCenter Server에서 구성 및 관리되며, vCenter Server는 스위치 구성을 참여하는 각 호스트에 배포합니다. vDS는 vSS보다 훨씬 더 많은 기능을 제공합니다. 모든 새로운 기능은 새로운 vDS에 내장되어 있는 반면, vSS의 기능은 제한적입니다.
각 가상 스위치에는 여러 가상 포트가 있습니다. vSS에서는 port groups (standard port groups)을 구성할 수 있습니다. vDS에서는 포트(distributed ports) 및 포트 그룹(distributed port groups)을 구성할 수 있습니다.
vSphere Standard Switch (vSS)
vSphere 표준 스위치(vSS)는 특정 ESXi 호스트 내에서 구성 및 유지 관리되므로 호스트 기반 스위치라고도 합니다. vSS의 Data Plane과 Control Plane은 단일 호스트 내에 존재합니다.
물리적 이더넷 스위치와 마찬가지로 가상 스위치(vSS)는 MAC 주소 테이블을 유지 관리하고 사용합니다. 그러나 vSS의 경우 VMkernel이 연결된 각 가상 NIC(vNIC)의 MAC 주소를 해당 가상 포트와 함께 가상 스위치의 MAC 주소 테이블에 직접 등록합니다. vSS는 네트워크 패킷을 관찰하여 MAC 주소를 학습하지 않습니다. vSS는 목적지 주소가 연결된 vNIC와 일치하지 않는 모든 패킷을 물리적 NIC 업링크로 전송합니다.
기본 ESXi 설치 시 호스트는 vSwitch0으로 식별되는 하나의 가상 스위치와 vmnic0으로 식별되는 물리적 NIC 업링크로 구성됩니다. 기본 가상 스위치에는 VM 네트워크라는 가상 머신 포트 그룹과 관리 네트워크라는 포트 그룹이 포함됩니다. VM 네트워크는 가상 머신을 연결하기 위한 포트 그룹(가상 머신 포트 그룹)입니다. 관리 네트워크는 vCenter Server 연결과 같은 관리 목적으로 사용되는 단일 VMkernel 가상 네트워크 어댑터(vmk0)를 포함하는 포트 그룹입니다. VMkernel 가상 어댑터는 일반적으로 VMkernel 포트라고 합니다. 추가 표준 스위치를 생성할 수 있습니다. 기존 표준 스위치에 가상 머신 포트 그룹과 VMkernel 가상 네트워크 어댑터를 추가할 수 있습니다. 가상 머신 포트 그룹에 고유한 레이블과 정책을 할당할 수 있습니다. NIC 팀 구성, 보안, 트래픽 형성 정책 등을 포함하는 이러한 정책은 포트 그룹에 연결된 가상 머신에 적용됩니다.
예를 들어, 아래 그림 VM 네트워크라는 포트 그룹에 연결된 두 대의 가상 머신, 두 개의 VMkernel 포트(관리 네트워크와 vMotion), 그리고 두 개의 물리적 NIC 업링크(vmnic0 및 vmnic1)를 가진 표준 가상 스위치를 나타내는 다이어그램입니다.

일반적으로 각 가상 머신에는 네트워크 통신을 허용하기 위해 하나 이상의 vNIC가 있습니다. 가상 머신을 vSS에 연결하려면 해당 vNIC 중 하나를 vSS의 가상 머신 포트 그룹에 연결해야 합니다. 가상 머신이 다른 호스트의 가상 머신과 통신할 수 있도록 하려면 포트 그룹을 vSS의 하나 이상의 물리적 NIC 업링크에 연결하십시오. 물리적 NIC는 물리적 이더넷 스위치에 연결되어야 합니다. 인바운드 및 아웃바운드 이더넷 프레임은 vSS의 물리적 NIC 업링크를 통해 이동합니다. 물리적 NIC 업링크가 없는 포트 그룹의 가상 머신은 동일한 호스트 및 포트 그룹에 있는 다른 vNIC와만 통신할 수 있습니다.
vSS는 VLAN 태깅, NIC 팀 구성, 네트워크 보안 정책, 트래픽 셰이핑 등의 기능을 제공합니다. vSS가 제공하는 기능 세트는 vDS 또는 물리적 이더넷 스위치가 제공하는 기능보다 작습니다.
가상 스위치(vSS)는 물리적 스위치의 취약점 일부를 가지지 않습니다. 예를 들어, 관측된 데이터를 사용하여 MAC 주소 테이블을 채우지 않기 때문에 MAC 주소 플러딩 공격에 취약하지 않습니다. 다음 목록에는 다른 일반적인 네트워크 취약점과 vSS가 각각으로부터 안전한 이유에 대한 간략한 설명이 포함되어 있습니다:
- 802.1q tagging attacks: 가상 스위치(vSS)는 이러한 유형의 공격에 필요한 동적 트렁킹을 수행하지 않습니다.
- Double-encapsulation attacks: 가상 머신이 특정 VLAN용으로 구성된 포트에서 전송하려는 이중 캡슐화된 프레임은 vSS가 모두 드롭합니다.
- Multicast brute-force attacks:가상 스위치(vSS)는 프레임이 올바른 브로드캐스트 도메인(VLAN)을 벗어나지 못하도록 합니다.
- Spanning tree attacks: 가상 스위치(vSS)는 스패닝 트리 프로토콜에 참여하지 않습니다.
vSS는 관리형 스위치가 아니므로 기존 네트워킹 모델 및 유틸리티를 사용하여 구성하거나 모니터링할 수 없습니다. 대신 vSphere Client, vSphere Host Client, vCLI, ESXi 셸 또는 PowerCLI와 같은 VMware에서 제공하는 도구를 사용하여 vSS를 관리할 수 있습니다.
vSS 네트워크 정책
표준 스위치 및 분산 스위치에 네트워크 정책을 적용하여 특정 기능을 사용하고 구성할 수 있습니다. vSS에서는 스위치에 정책을 적용하면 해당 정책이 각 포트 그룹으로 자동 전파됩니다. 포트 그룹 수준에서는 스위치에 적용된 정책을 재정의하고 포트 그룹에 고유한 정책을 적용할 수 있습니다. vDS에서는 정책 적용에 더 많은 유연성을 가지며 포트 수준에서 정책을 재정의할 수 있습니다.
vSS에서는 다음과 같은 네트워크 정책을 설정할 수 있습니다:
- Teaming and Failover
- Security
- Traffic Shaping
- VLAN
vSS에 직접 정책을 설정할 수 있습니다. 포트 그룹 수준에서 정책을 재정의하려면 해당 포트 그룹에 다른 정책을 설정하기만 하면 됩니다.
NIC Teaming Policies
두 개 이상의 물리적 NIC(pNIC)를 동일한 vSS에 연결할 때는 사용할 NIC 티 구성 옵션을 결정해야 합니다. NIC 팀 구성의 두 가지 주요 목적은 가용성 향상(단일 장애 지점 제거)과 대규모 워크로드 처리(여러 업링크에 트래픽 분산)입니다. vSS 및 vDS에서 사용할 수 있는 NIC 팀 구성 옵션은 다음과 같습니다:
- Route Based on Originating Virtual Port: 기본 옵션입니다. 가상 머신의 발신 포트 ID를 기반으로 부하 분산을 수행합니다. 새 가상 머신이 포트 그룹에 연결되면 가상 스위치는 해당 가상 머신의 포트 ID를 사용하여 활성 업링크 목록에서 하나의 pNIC를 선택해 아웃바운드 트래픽을 전달합니다. 일반적으로 이로 인해 업링크 간 가상 머신 분배가 거의 균등하게 이루어집니다. 업링크 중 하나가 장애 발생 시 스위치는 장애 업링크의 트래픽을 정상 작동 중인 업링크로 재지정합니다.
- Route Based on IP Hash: 이 부하 분산 방식에서는 스위치가 각 아웃바운드 패킷의 출발지 및 목적 IP 주소를 읽고 해시를 사용하여 패킷을 어느 업링크에 배치할지 결정합니다. VMkernel이 각 이더넷 패킷의 헤더를 검사하기 때문에 선택 과정은 리소스 집약적입니다. 이 방법을 사용하면 단일 VM이 서로 다른 업링크를 통해 서로 다른 목적지로 패킷을 전송할 수 있어 처리량을 향상시킬 수 있습니다. 이 방법을 지원하려면 스위치가 IEEE 802.3ad를 지원해야 하며, 물리적 스위치에 EtherChannel을 구성해야 합니다.
- Route Based on Source MAC Hash: 이 부하 분산 방식은 출발지 MAC 주소를 기반으로 합니다. 스위치는 각 아웃바운드 패킷 헤더를 처리하고 MAC 주소의 최하위 비트(LSB)를 사용하여 해시를 생성합니다. 이 해시를 활용하여 패킷을 배치할 활성 업링크를 결정합니다.
- Use Explicit Failover Order: 이 옵션을 선택하면 모든 아웃바운드 트래픽은 활성 업링크 목록에 나타나는 첫 번째 업링크를 사용합니다. 첫 번째 업링크가 장애 발생 시 스위치는 장애 발생 업링크의 트래픽을 목록의 두 번째 업링크로 재지정합니다.
Network Security Policies
관리자로서 MAC 주소 위조 및 원치 않는 포트 스캐닝으로부터 네트워크 트래픽을 보호하기 위한 네트워크 보안 정책을 정의할 수 있습니다. 가상 스위치의 보안 정책은 TCP/IP 스택의 레이어 2에서 구현됩니다. 네트워크 보안 정책을 사용하여 레이어 2 공격으로부터 트래픽을 보호할 수 있습니다.
가상 머신 MAC 주소가 보안 정책에 영향을 미치므로 이를 정의하는 방식을 이해하는 것이 중요합니다. 가상 머신의 각 vNIC에는 초기 MAC 주소와 유효 MAC 주소가 있습니다. 초기 MAC 주소는 어댑터 생성 시 할당됩니다. 게스트 운영 체제 외부에서 수정할 수 있지만, 게스트 운영 체제 자체로는 변경할 수 없습니다. 유효 MAC 주소는 일반적으로 어댑터 생성 시 초기 MAC 주소와 동일한 값으로 할당됩니다. 게스트 OS는 유효 MAC 주소를 변경할 수 있습니다. 유효 MAC 주소는 수신 패킷 필터링 시 사용됩니다. 게스트 OS가 유효 MAC 주소를 변경하면 어댑터는 새 유효 MAC 주소로 전송되는 패킷을 수신합니다. 패킷을 전송할 때 게스트 OS는 일반적으로 이더넷 프레임의 소스 MAC 주소 필드에 자신의 유효 MAC 주소를 기록합니다.
게스트 OS는 위장된 소스 MAC 주소를 가진 프레임을 전송할 수 있으며, 이는 위장 및 악의적인 공격을 용이하게 합니다. 이러한 위험으로부터 보호하기 위해 vSS 포트 그룹 및 vDS 분산 포트 그룹의 보안 정책을 활용할 수 있습니다. 네트워크 보안 정책에는 다음 세 가지 옵션이 있습니다:

- Promiscuous Mode: vSS 포트 그룹의 기본값은 거부(Reject)입니다. 기본적으로 vNIC는 유효한 MAC 주소와 일치하는 프레임만 수신합니다. 이 옵션을 허용(Accept)으로 설정하면 가상 스위치가 모든 프레임을 vNIC로 전송하여 가상 머신이 자신에게 전송되지 않은 패킷도 수신할 수 있게 합니다. 이 설정은 게스트 운영 체제 내에서 tcpdump 및 Wireshark와 같은 도구의 사용을 허용합니다.
- MAC Address Changes: vSS 포트 그룹의 경우 기본값은 거부(Reject)입니다. 이 옵션이 거부(Reject)로 설정된 경우, ESXi는 초기 MAC 주소와 다른 주소로 유효 MAC 주소를 변경하려는 요청을 수용하지 않습니다. 대신 유효 MAC 주소가 초기 MAC 주소와 일치할 때까지 가상 스위치 포트를 비활성화합니다. 게스트 OS는 요청이 거부된 사실을 인지하지 못합니다.
- Forged Transmits: vSS 포트 그룹의 경우 기본값은 거부(Reject)입니다. 이 옵션이 거부(Reject)로 설정된 경우, ESXi는 소스 MAC 주소와 유효 MAC 주소를 비교하고 주소가 일치하지 않으면 패킷을 삭제합니다.
Traffic Shaping Policy
가상 머신의 네트워크 대역폭은 트래픽 셰이핑을 활성화하여 제어할 수 있습니다. 트래픽 셰이핑은 평균 대역폭, 피크 대역폭 및 버스트 크기로 정의됩니다. 네트워크 트래픽 셰이핑은 표준 스위치 또는 분산 스위치에서 구성할 수 있지만, 기본적으로 트래픽 셰이핑은 비활성화되어 있습니다. 각 vSS 포트 그룹, 각 vDS 분산 포트 또는 각 vDS 분산 포트 그룹에 트래픽 셰이핑 정책을 적용할 수 있습니다. 표준 스위치에서는 아웃바운드 트래픽에 대해서만 트래픽 셰이핑을 구성할 수 있습니다. vDS에서는 아웃바운드 및 인바운드 트래픽 모두에 대해 구성할 수 있습니다. 표준 스위치 또는 포트 그룹에 대해 트래픽 셰이핑을 활성화할 때 다음 옵션을 구성할 수 있습니다:
- Average Bandwidth: 이는 포트의 허용 평균 부하입니다. 시간에 따른 평균값으로, 포트를 통과하는 트래픽에 대해 허용되는 초당 킬로비트 수를 의미합니다.
- Peak Bandwidth: 포트가 트래픽 버스트를 송수신할 때 허용되는 초당 최대 트래픽 양(킬로비트 단위)입니다. 이 수치는 ‘Burst Size‘ 매개변수로 구성된 Burst Bonus를 사용할 때 포트가 사용하는 대역폭을 상한으로 합니다. 최대 대역폭 설정은 평균 대역폭 설정보다 작을 수 없습니다.
- Burst Size: 버스트 시 허용되는 최대 킬로바이트 수입니다. 이 매개변수가 설정된 경우, 포트가 할당된 대역폭을 모두 사용하지 않을 때 버스트 보너스를 얻을 수 있습니다. 포트 그룹에 연결된 가상 머신에 대한 평균 대역폭 할당량을 정의할 수 있습니다. 가상 머신이 할당된 대역폭을 모두 사용하지 않은 경우, 시스템은 버스트 보너스를 부여하여 가상 머신이 버스트 크기로 제한된 일부 데이터를 더 빠른 속도(최대 피크 대역폭까지)로 전송할 수 있도록 허용할 수 있습니다.