Proxmox VE 매뉴얼 : 12. Software-Defined Network

Proxmox VE 매뉴얼을 Google Translate로 기계번역하고, 살짝 교정했습니다.
https://pve.proxmox.com/pve-docs/pve-admin-guide.html
version 8.1.4, Wed Mar 6 18:21:39 CET 2024

Proxmox VE의 소프트웨어 정의 네트워크(SDN) 기능을 사용하면 가상 영역 및 네트워크(VNet)를 생성할 수 있습니다. 이 기능은 고급 네트워킹 구성 및 다중 테넌트 설정을 단순화합니다.

12.1. 소개

Proxmox VE SDN을 사용하면 유연한 소프트웨어 제어 구성을 사용하여 가상 게스트 네트워크를 분리하고 세밀하게 제어할 수 있습니다.

분리는 zone, VNet(가상 네트워크) 및 subnet을 통해 관리됩니다.

  • zone은 사실상 분리된 자체 네트워크 영역입니다.
  • VNet은 zone에 속하는 가상 네트워크입니다.
  • subnet은 VNet 내부의 IP 범위입니다.

영역 유형에 따라 네트워크는 다르게 작동하며 특정 기능, 장점 및 제한 사항을 제공합니다.

각 개별 노드의 격리된 개인 네트워크부터 다양한 위치에 있는 여러 PVE 클러스터의 복잡한 오버레이 네트워크까지 SDN 범위의 사용 사례입니다.

클러스터 전체 데이터 센터 SDN 관리 인터페이스에서 VNet을 구성한 후에는 각 노드에서 로컬로 공통 Linux 브리지로 사용하여 VM 및 컨테이너에 할당할 수 있습니다.

12.2. 지원현황

12.2.1. 역사

Proxmox VE SDN 스택은 2019년부터 실험적 기능으로 제공되었으며 많은 개발자와 사용자에 의해 지속적으로 개선되고 테스트되었습니다. Proxmox VE 6.2의 웹 인터페이스에 통합되면서 더 광범위한 통합을 향한 중요한 이정표가 달성되었습니다. Proxmox VE 7 릴리스 주기 동안 수많은 개선 사항과 기능이 추가되었습니다. 사용자 피드백을 바탕으로 기본 설계 선택과 구현이 상당히 건전하고 안정적이라는 것이 분명해졌습니다. 결과적으로 ‘실험적’이라는 라벨을 붙인 것은 SDN 스택의 상태를 제대로 반영하지 못했습니다.
Proxmox VE 8에서는 네트워크 및 인터페이스 관리를 Proxmox VE 액세스 제어 스택의 핵심 구성 요소로 승격하여 SDN 기능의 완전한 통합을 위한 기반을 마련하기로 결정했습니다. Proxmox VE 8.1에서는 두 가지 주요 이정표가 달성되었습니다. 첫째, IP 주소 관리(IPAM) 기능에 DHCP 통합이 추가되었고, 둘째, 이제 SDN 통합이 기본적으로 설치됩니다.

12.2.2. 현재 상태

SDN 설치의 다양한 계층에 대한 현재 지원 상태는 다음과 같습니다.

  • VNet 관리 및 Proxmox VE 스택과의 통합을 포함하는 핵심 SDN이 완벽하게 지원됩니다.
  • 가상 게스트를 위한 DHCP 관리를 포함한 IPAM은 기술 미리보기 상태입니다.
  • FRRouting 및 컨트롤러 통합을 통한 복잡한 라우팅은 기술 미리보기 상태입니다.

12.3. 설치

12.3.1. SDN 코어

Proxmox VE 8.1부터 핵심 SDN(소프트웨어 정의 네트워크) 패키지가 기본적으로 설치됩니다.

이전 버전에서 업그레이드하는 경우 모든 노드에 libpve-network-perl 패키지를 설치해야 합니다.

apt update
apt install libpve-network-perl

참고: Proxmox VE 버전 7.0 이상에는 기본적으로 ifupdown2 패키지가 설치되어 있습니다. 원래 시스템을 이전 버전으로 설치한 경우 ifupdown2 패키지를 명시적으로 설치해야 합니다.

설치 후에는 SDN 구성이 포함되고 활성화되도록 모든 노드의 /etc/network/interfaces 구성 파일 끝에 다음 줄이 있는지 확인해야 합니다.

source /etc/network/interfaces.d/*

12.3.2. DHCP IPAM

내장 PVE IP 주소 관리 스택에 대한 DHCP 통합은 현재 DHCP 임대를 제공하기 위해 dnsmasq를 사용합니다. 현재 선택되어 있습니다.

해당 기능을 사용하려면 모든 노드에 dnsmasq 패키지를 설치해야 합니다.

apt update
apt install dnsmasq
# disable default instance
systemctl disable --now dnsmasq

12.3.3. FRRouting

Proxmox VE SDN 스택은 고급 설정을 위해 FRRouting 프로젝트를 사용합니다. 현재 선택되어 있습니다.

SDN 라우팅 통합을 사용하려면 모든 노드에 frr-pythontools 패키지를 설치해야 합니다.

apt update
apt install frr-pythontools

12.4. 구성 개요

구성은 데이터 센터 수준의 웹 UI에서 수행되며 다음 섹션으로 구분됩니다.

  • SDN: 여기에서는 현재 활성 SDN 상태에 대한 개요를 확인하고 보류 중인 모든 변경 사항을 전체 클러스터에 적용할 수 있습니다.
  • Zones: 가상으로 분리된 네트워크 영역을 생성하고 관리합니다.
  • VNets : 가상 네트워크 브리지 만들기 및 서브넷 관리

옵션 카테고리를 사용하면 SDN 설정에 사용할 추가 서비스를 추가하고 관리할 수 있습니다.

  • Controllers: 복잡한 설정에서 레이어 3 라우팅 제어용
  • DHCP: IPAM에서 게스트에 대한 IP를 자동으로 할당하고 이를 DHCP를 통해 게스트에 임대하는 영역에 대한 DHCP 서버를 정의합니다.
  • IPAM: 게스트의 IP 주소 관리를 위해 외부를 활성화합니다.
  • DNS: 가상 게스트의 호스트 이름 및 IP 주소 등록을 위한 DNS 서버 통합 정의

12.5. 기술 및 구성

Proxmox VE 소프트웨어 정의 네트워크 구현은 표준 Linux 네트워킹을 최대한 사용합니다. 그 이유는 최신 Linux 네트워킹이 완전한 SDN 구현 기능에 대한 거의 모든 요구 사항을 제공하고 외부 종속성을 추가하지 않고 손상될 수 있는 전체 구성 요소의 양을 줄이기 때문입니다.

Proxmox VE SDN 구성은 Proxmox VE 구성 파일 시스템을 통해 다른 모든 클러스터 노드와 공유되는 /etc/pve/sdn에 있습니다. 이러한 구성은 기본 네트워크 스택을 관리하는 도구(예: ifupdown2 또는 frr)의 해당 구성 형식으로 변환됩니다.

새로운 변경 사항은 즉시 적용되지 않고 먼저 보류 중으로 기록됩니다. 그런 다음 웹 인터페이스의 기본 SDN 개요 패널에서 다양한 변경 사항 세트를 한 번에 적용할 수 있습니다. 이 시스템을 사용하면 다양한 변경 사항을 단일 원자적 변경 사항으로 롤아웃할 수 있습니다.

SDN은 /etc/pve/sdn에 있는 .running-config 및 .version 파일을 통해 롤아웃 상태를 추적합니다.

12.6. Zones

영역은 사실상 분리된 네트워크를 정의합니다. 사용자를 특정 영역 및 여기에 포함된 VNet으로 제한하기 위해 영역은 특정 노드 및 할당된 권한으로 제한됩니다.

분리를 위해 다양한 기술을 사용할 수 있습니다.

  • Simple: 고립된 다리. 간단한 레이어 3 라우팅 브리지(NAT)
  • VLAN: 가상 LAN은 LAN을 분할하는 고전적인 방법입니다.
  • QinQ: 스택형 VLAN(공식적으로 IEEE 802.1ad로 알려짐)
  • VXLAN: UDP 터널을 통한 레이어 2 VXLAN 네트워크
  • EVPN(BGP EVPN): 레이어 3 라우팅을 설정하기 위한 BGP가 포함된 VXLAN

12.6.1. 공통 옵션

모든 영역 유형에 대해 다음 옵션을 사용할 수 있습니다.

  • Nodes: 영역 및 연결된 VNet을 배포해야 하는 노드입니다.
  • IPAM: IPAM(IP 주소 관리) 도구를 사용하여 영역의 IP를 관리합니다. 선택 사항이며 기본값은 pve입니다.
  • DNS: DNS API 서버. 선택.
  • ReverseDNS: 역방향 DNS API 서버. 선택.
  • DNSZone: DNS 도메인 이름. .과 같은 호스트 이름을 등록하는 데 사용됩니다. DNS 영역은 DNS 서버에 이미 존재해야 합니다. 선택 과목.

12.6.2. Simple Zones

이것은 가장 간단한 플러그인입니다. 격리된 VNet 브리지가 생성됩니다. 이 브리지는 물리적 인터페이스에 연결되지 않으며 VM 트래픽은 각 노드에서만 로컬입니다. NAT 또는 라우팅 설정에서 사용할 수 있습니다.

12.6.3. VLAN Zones

VLAN 플러그인은 기존 로컬 Linux 또는 OVS 브리지를 사용하여 노드의 물리적 인터페이스에 연결합니다. VNet에 정의된 VLAN 태그 지정을 사용하여 네트워크 세그먼트를 격리합니다. 이를 통해 서로 다른 노드 간에 VM을 연결할 수 있습니다.

VLAN 영역 구성 옵션:

  • Bridge: 노드 간 연결을 허용하는 각 노드에 이미 구성되어 있는 로컬 브리지 또는 OVS 스위치.

12.6.4. QinQ Zone

격리를 위해 여러 계층의 VLAN 태그를 사용하는 QinQ는 VLAN 스태킹으로도 알려져 있습니다. QinQ 영역은 외부 VLAN 태그(서비스 VLAN)를 정의하는 반면 내부 VLAN 태그는 VNet에 의해 정의됩니다.

참고: 물리적 네트워크 스위치는 이 구성에 대해 스택형 VLAN을 지원해야 합니다.

QinQ 영역 구성 옵션:

  • Bridge: 각 로컬 노드에 이미 구성되어 있는 로컬 VLAN 인식 브리지
  • Service VLAN: 이 영역의 기본 VLAN 태그
  • Service VLAN Protocol: 802.1q(기본값) 또는 802.1ad 서비스 VLAN 유형 중에서 선택할 수 있습니다.
  • MTU: 태그가 이중으로 쌓이기 때문에 QinQ VLAN에는 4바이트가 더 필요합니다. 예를 들어 물리적 인터페이스 MTU가 1500인 경우 MTU를 1496으로 줄여야 합니다.

12.6.5. VXLAN 영역

VXLAN 플러그인은 기존 네트워크(언더레이) 위에 터널(오버레이)을 설정합니다. 이는 기본 대상 포트 4789를 사용하여 레이어 4 UDP 데이터그램 내에 레이어 2 이더넷 프레임을 캡슐화합니다.

모든 피어 간의 UDP 연결을 활성화하려면 언더레이 네트워크를 직접 구성해야 합니다.

예를 들어 공용 인터넷 위에 VXLAN 오버레이 네트워크를 생성하여 마치 동일한 로컬 레이어 2 네트워크를 공유하는 것처럼 VM에 표시할 수 있습니다.

경고 VXLAN은 자체적으로 암호화를 제공하지 않습니다. VXLAN을 통해 여러 사이트에 참가하는 경우 사이트 간 VPN 등을 사용하여 사이트 간에 보안 연결을 설정해야 합니다.

VXLAN 영역 구성 옵션:

  • Peers Address List: VXLAN 영역에 있는 각 노드의 IP 주소 목록입니다. 이는 이 IP 주소에서 연결할 수 있는 외부 노드일 수 있습니다. 여기서는 클러스터의 모든 노드를 언급해야 합니다.
  • MTU: VXLAN 캡슐화는 50바이트를 사용하므로 MTU는 나가는 물리적 인터페이스보다 50바이트 낮아야 합니다.

12.6.6. EVPN Zones

EVPN 영역은 여러 클러스터에 걸쳐 확장할 수 있는 라우팅 가능한 레이어 3 네트워크를 생성합니다. 이는 VPN을 설정하고 BGP를 라우팅 프로토콜로 활용함으로써 달성됩니다.

EVPN의 VNet에는 애니캐스트 IP 주소 및/또는 MAC 주소가 있을 수 있습니다. 브리지 IP는 각 노드에서 동일합니다. 즉, 가상 게스트가 이 주소를 게이트웨이로 사용할 수 있습니다.

라우팅은 VRF(가상 라우팅 및 전달) 인터페이스를 통해 다양한 영역의 VNet에서 작동할 수 있습니다.

EVPN 영역 구성 옵션:

  • VRF VXLAN ID: VNet 간의 전용 라우팅 상호 연결에 사용되는 VXLAN-ID입니다. VNet의 VXLAN-ID와 달라야 합니다.
  • Controller: 이 영역에 사용할 EVPN 컨트롤러입니다. (컨트롤러 플러그인 섹션 참조)
  • VNet MAC Address: 이 영역의 모든 VNet에 할당되는 애니캐스트 MAC 주소입니다. 정의되지 않은 경우 자동 생성됩니다.
  • Exit Nodes: 실제 네트워크를 통해 EVPN 네트워크에서 출구 게이트웨이로 구성되는 노드입니다. 구성된 노드는 EVPN 네트워크의 기본 경로를 알려줍니다. 선택.
  • Primary Exit Node: 여러 종료 노드를 사용하는 경우 모든 노드에 부하를 분산하는 대신 이 기본 종료 노드를 통해 트래픽을 강제 실행합니다. 선택 사항이지만 SNAT를 사용하려는 경우 또는 업스트림 라우터가 ECMP를 지원하지 않는 경우 필수입니다.
  • Exit Nodes Local Routing: 이는 출구 노드에서 VM/CT 서비스에 연결해야 하는 경우 특별한 옵션입니다. (기본적으로 출구 노드는 실제 네트워크와 EVPN 네트워크 간의 트래픽 전달만 허용합니다.) 선택.
  • Advertise Subnets: EVPN 네트워크의 전체 서브넷을 발표합니다. 자동 VM/CT가 있는 경우(예를 들어 IP가 여러 개 있고 애니캐스트 게이트웨이가 이러한 IP의 트래픽을 볼 수 없는 경우 EVPN 네트워크 내부에서 해당 IP 주소에 접근할 수 없습니다). 선택.
  • Disable ARP ND Suppression: ARP 또는 ND(Neighbor Discovery) 패킷을 억제하지 마십시오. 이는 VM에서 유동 IP를 사용하는 경우 필요합니다(IP 및 MAC 주소는 시스템 간에 이동됩니다). 선택.
  • Route-target Import: 외부 EVPN 경로 대상 목록을 가져올 수 있습니다. DC 간 또는 다른 EVPN 네트워크 상호 연결에 사용됩니다. 선택.
  • MTU: VXLAN 캡슐화는 50바이트를 사용하므로 MTU는 나가는 물리적 인터페이스의 최대 MTU보다 50바이트 작아야 합니다. 선택 사항이며 기본값은 1450입니다.

12.7. VNets

SDN GUI를 통해 가상 네트워크(VNet)를 생성한 후 각 노드에서 동일한 이름의 로컬 네트워크 인터페이스를 사용할 수 있습니다. 게스트를 VNet에 연결하려면 게스트에 인터페이스를 할당하고 그에 따라 IP 주소를 설정합니다.

영역에 따라 이러한 옵션은 다른 의미를 가지며 이 문서의 해당 영역 섹션에 설명되어 있습니다.

경고: 현재 상태에서 일부 옵션은 효과가 없거나 특정 영역에서 작동하지 않을 수 있습니다.

VNet 구성 옵션:

  • ID: VNet을 식별하기 위한 최대 8자 ID
  • Comment: 더 설명적인 식별자입니다. 인터페이스에서 별칭으로 할당됩니다. 선택 과목
  • Zone: 이 VNet에 연결된 영역
  • Tag: 고유한 VLAN 또는 VXLAN ID
  • VLAN Aware: 인터페이스에서 VLAN 인식 옵션을 활성화하여 게스트에서 구성을 활성화합니다.

12.8. Subnets

서브넷은 CIDR 네트워크 주소로 설명되는 특정 IP 범위를 정의합니다. 각 VNet에는 하나 이상의 서브넷이 있을 수 있습니다.

서브넷을 사용하여 다음을 수행할 수 있습니다.

  • 특정 VNet에서 정의할 수 있는 IP 주소를 제한합니다.
  • 계층 3 영역의 VNet에 경로/게이트웨이 할당
  • 계층 3 영역의 VNet에서 SNAT를 사용하도록 설정
  • IPAM 플러그인을 통해 가상 게스트(VM 또는 CT)에 IP 자동 할당
  • DNS 플러그인을 통한 DNS 등록

IPAM 서버가 서브넷 영역과 연결된 경우 서브넷 접두사가 IPAM에 자동으로 등록됩니다.

서브넷 구성 옵션:

  • ID: CIDR 네트워크 주소(예: 10.0.0.0/8)
  • Gateway: 네트워크 기본 게이트웨이의 IP 주소입니다. 계층 3 영역(Simple/EVPN 플러그인)에서는 VNet에 배포됩니다.
  • SNAT: 패킷을 나가는 인터페이스 노드로 전달하여 VNet 내부의 VM이 외부 네트워크에 연결할 수 있도록 하는 원본 NAT를 사용하도록 설정합니다. EVPN 영역에서는 EVPN 게이트웨이 노드에서 전달이 수행됩니다. 선택 과목.
  • DNS Zone Prefix: .prefix.과 같이 도메인 등록에 접두사를 추가합니다.

12.9. Controllers

일부 영역에서는 VNet의 제어 평면을 관리하기 위해 외부 컨트롤러가 필요한 별도의 제어 및 데이터 평면을 구현합니다.

현재 EVPN 영역에만 외부 컨트롤러가 필요합니다.

12.9.1. EVPN Controller

EVPN 영역에는 컨트롤 플레인을 관리하기 위한 외부 컨트롤러가 필요합니다. EVPN 컨트롤러 플러그인은 frr(Free Range Routing) 라우터를 구성합니다.

EVPN 컨트롤러를 활성화하려면 EVPN 영역에 참여할 모든 노드에 frr을 설치해야 합니다.

apt install frr frr-pythontools

EVPN 컨트롤러 구성 옵션:

  • ASN # : 고유한 BGP ASN 번호입니다. 개인 ASN 번호(64512 – 65534, 4200000000 – 4294967294)를 사용하는 것이 좋습니다. 그렇지 않으면 실수로 글로벌 라우팅이 중단될 수 있습니다.
  • Peers: EVPN 영역에 속하는 모든 노드의 IP 목록입니다. (외부 노드 또는 경로 리플렉터 서버일 수도 있음)

12.9.2. BGP 컨트롤러

BGP 컨트롤러는 영역에서 직접 사용되지 않습니다. 이를 사용하여 BGP 피어를 관리하도록 FRR을 구성할 수 있습니다.

BGP-EVPN의 경우 노드별로 다른 ASN을 정의하는 데 사용할 수 있으므로 EBGP를 수행합니다. EVPN 경로를 외부 BGP 피어로 내보내는 데에도 사용할 수 있습니다.

참고: 기본적으로 단순 풀 메시 EVPN의 경우 BGP 컨트롤러를 정의할 필요가 없습니다.

BGP 컨트롤러 구성 옵션:

  • Node: 이 BGP 컨트롤러의 노드
  • ASN #: 고유한 BGP ASN 번호입니다. (64512 – 65534) 또는 (4200000000 – 4294967294) 범위의 프라이빗 ASN 번호를 사용하는 것이 좋습니다. 그렇지 않으면 실수로 글로벌 라우팅이 중단될 수 있습니다.
  • Peer: 기본 BGP 네트워크를 사용하여 통신하려는 피어 IP 주소 목록입니다.
  • EBGP: 피어의 원격 AS가 다른 경우 EBGP가 활성화됩니다.
  • Loopback Interface: 루프백 또는 더미 인터페이스를 EVPN 네트워크의 소스로 사용합니다(다중 경로용).
  • egbp-mutltihop: 피어가 직접 연결되지 않았거나 루프백을 사용하는 경우 피어에 도달하기 위한 홉 수를 늘립니다.
  • bgp-multipath-as-path-relax: 피어의 ASN이 다른 경우 ECMP를 허용하십시오.

12.9.3. ISIS 컨트롤러

ISIS 컨트롤러는 존에서 직접 사용되지 않습니다. 이를 사용하여 EVPN 경로를 ISIS 도메인으로 내보내도록 FRR을 구성할 수 있습니다.

ISIS 컨트롤러 구성 옵션:

  • Node: 이 ISIS 컨트롤러의 노드입니다.
  • Domain: 고유한 ISIS 도메인입니다.
  • Network Entity Title: 이 노드를 식별하는 고유한 ISIS 네트워크 주소입니다.
  • Interfaces: ISIS가 사용하는 물리적 인터페이스 목록입니다.
  • Loopback: 루프백 또는 더미 인터페이스를 EVPN 네트워크의 소스로 사용합니다(다중 경로용).

12.10. IPAM

IPAM(IP Address Management) 도구는 네트워크에 있는 클라이언트의 IP 주소를 관리합니다. Proxmox VE의 SDN은 예를 들어 IPAM을 사용하여 새 게스트를 위한 무료 IP 주소를 찾습니다.

단일 IPAM 인스턴스는 하나 이상의 영역과 연결될 수 있습니다.

12.10.1. PVE IPAM 플러그인

Proxmox VE 클러스터용 기본 내장 IPAM입니다.

데이터 센터 구성의 SDN 섹션에 있는 IPAM 패널을 통해 PVE IPAM 플러그인의 현재 상태를 검사할 수 있습니다. 이 UI를 사용하여 IP 매핑을 생성, 업데이트 및 삭제할 수 있습니다. 이는 DHCP 기능과 함께 사용하면 특히 편리합니다.

DHCP를 사용하는 경우 IPAM 패널을 사용하여 특정 VM에 대한 임대를 생성하거나 편집할 수 있으며, 이를 통해 DHCP를 통해 할당된 IP를 변경할 수 있습니다. DHCP를 사용하는 VM의 IP를 편집할 때 게스트가 강제로 새 DHCP 임대를 획득하도록 해야 합니다. 이는 일반적으로 게스트의 네트워크 스택을 다시 로드하거나 재부팅하여 수행할 수 있습니다.

12.10.2. NetBox IPAM 플러그인

NetBox는 오픈 소스 IPAM(IP 주소 관리) 및 DCIM(데이터센터 인프라 관리) 도구입니다.

NetBox를 Proxmox VE SDN과 통합하려면 https://docs.netbox.dev/en/stable/integrations/rest-api/#tokens에 설명된 대로 NetBox에서 API 토큰을 생성하세요.

NetBox 구성 속성은 다음과 같습니다.

  • URL: NetBox REST API 엔드포인트: http://yournetbox.domain.com/api
  • Token: API 액세스 토큰

12.10.3. phpIPAM 플러그인

phpIPAM에서는 “애플리케이션”을 생성하고 애플리케이션에 관리자 권한이 있는 API 토큰을 추가해야 합니다.

phpIPAM 구성 속성은 다음과 같습니다.

  • URL: REST-API 엔드포인트: http://phpipam.domain.com/api//
  • Token: API 액세스 토큰
  • Section: 정수 ID입니다. 섹션은 phpIPAM의 서브넷 그룹입니다. 기본 설치에서는 고객에 대해 sectionid=1을 사용합니다.

12.11. DNS

Proxmox VE SDN의 DNS 플러그인은 호스트 이름과 IP 주소 등록을 위한 DNS API 서버를 정의하는 데 사용됩니다. DNS 구성은 하나 이상의 영역과 연결되어 영역에 대해 구성된 모든 서브넷 IP에 대한 DNS 등록을 제공합니다.

12.11.1. PowerDNS 플러그인
https://doc.powerdns.com/authoritative/http-api/index.html

PowerDNS 구성에서 웹 서버와 API를 활성화해야 합니다.

api=yes
api-key=arandomgeneratedstring
webserver=yes
webserver-port=8081

PowerDNS 구성 옵션은 다음과 같습니다.

  • URL: REST API 엔드포인트: http://yourpowerdnserver.domain.com:8081/api/v1/servers/localhost
  • Key: API 액세스 키
  • ttl: 레코드의 기본 TTL

12.12. DHCP

Proxmox VE SDN의 DHCP 플러그인을 사용하여 영역에 DHCP 서버를 자동으로 배포할 수 있습니다. DHCP 범위가 구성된 영역의 모든 서브넷에 DHCP를 제공합니다. 현재 DHCP에 사용 가능한 유일한 백엔드 플러그인은 dnsmasq 플러그인입니다.

DHCP 플러그인은 VM/CT에 새 네트워크 인터페이스를 추가할 때 영역에 구성된 IPAM 플러그인에 IP를 할당하여 작동합니다. 설명서의 해당 섹션에서 IPAM을 구성하는 방법에 대한 자세한 내용을 확인할 수 있습니다.

VM이 시작되면 영역의 DHCP 플러그인에 MAC 주소와 IP에 대한 매핑이 생성됩니다. 네트워크 인터페이스가 제거되거나 VM/CT가 삭제되면 IPAM 및 DHCP 서버의 항목도 삭제됩니다.

참고: 일부 기능(IP 매핑 추가/편집/제거)은 현재 PVE IPAM 플러그인을 사용할 때만 사용할 수 있습니다.

12.12.1. 구성

영역 패널을 통해 웹 UI의 영역에 대해 자동 DHCP를 활성화하고 영역의 고급 옵션에서 DHCP를 활성화할 수 있습니다.

참고: 현재는 단순 영역에서만 자동 DHCP를 지원합니다.

영역에 대해 자동 DHCP가 활성화된 후에는 영역의 서브넷에 대해 DHCP 범위를 구성해야 합니다. 이를 위해 Vnet 패널로 이동하여 DHCP 범위를 구성하려는 서브넷을 선택합니다. 편집 대화 상자의 각 탭에서 DHCP 범위를 구성할 수 있습니다. 또는 다음 CLI 명령을 통해 서브넷에 대한 DHCP 범위를 설정할 수 있습니다.

pvesh set /cluster/sdn/vnets/<vnet>/subnets/<subnet>
 -dhcp-range start-address=10.0.1.100,end-address=10.0.1.200
 -dhcp-range start-address=10.0.2.100,end-address=10.0.2.200

또한 서브넷에 대해 게이트웨이를 구성해야 합니다. 그렇지 않으면 자동 DHCP가 작동하지 않습니다.

그러면 DHCP 플러그인은 구성된 범위에서만 IPAM의 IP를 할당합니다.

dnsmasq DHCP 플러그인 설치 단계도 따르는 것을 잊지 마세요.

12.12.2. 플러그인

Dnsmasq 플러그인

현재 이것은 유일한 DHCP 플러그인이므로 영역에 대해 DHCP를 활성화할 때 사용되는 플러그인입니다.

설치

설치에 대해서는 DHCP IPAM 섹션을 참조하세요.

구성

플러그인은 dnsmasq가 배포되는 각 영역에 대해 새로운 시스템 서비스를 생성합니다. 서비스 이름은 dnsmasq@입니다. 이 서비스의 수명주기는 DHCP 플러그인에 의해 관리됩니다.

플러그인은 /etc/dnsmasq.d/ 폴더에 다음 구성 파일을 자동으로 생성합니다.

  • 00-default.conf : 여기에는 dnsmasq 인스턴스에 대한 기본 전역 구성이 포함되어 있습니다.
  • 10–.conf: 이 파일은 DHCP를 통해 구성되어야 하는 DNS 서버와 같은 서브넷에 대한 특정 옵션을 구성합니다.
  • 10–.ranges.conf: 이 파일은 dnsmasq 인스턴스의 DHCP 범위를 구성합니다.
  • ethers: 이 파일에는 IPAM 플러그인의 MAC 주소와 IP 매핑이 포함되어 있습니다. 이러한 매핑을 재정의하려면 이 파일을 편집하는 대신 해당 IPAM 플러그인을 사용하세요. dnsmasq 플러그인이 파일을 덮어쓰게 되기 때문입니다.

위 파일은 DHCP 플러그인에 의해 관리되므로 편집해서는 안 됩니다. dnsmasq 구성을 사용자 정의하려면 구성 폴더에 추가 파일(예: 90-custom.conf)을 생성할 수 있습니다. 이 파일은 dnsmasq DHCP 플러그인에 의해 변경되지 않습니다.

구성 파일은 순서대로 읽혀지므로 사용자 정의 구성 파일의 이름을 적절하게 지정하여 구성 지시문의 순서를 제어할 수 있습니다.

DHCP 임대는 /var/lib/misc/dnsmasq..leases 파일에 저장됩니다.

PVE IPAM 플러그인을 사용하면 DHCP 임대를 업데이트, 생성 및 삭제할 수 있습니다. 자세한 내용은 PVE IPAM 플러그인 설명서를 참조하세요. 현재 다른 IPAM 플러그인에서는 DHCP 임대 변경이 지원되지 않습니다.

12.13. 예

이 섹션에서는 일반적인 SDN 사용 사례에 맞게 조정된 여러 구성 예를 제공합니다. 이는 사용 가능한 구성 옵션에 대한 이해를 높이기 위한 추가 세부 정보를 제공하여 실질적인 구현을 제공하는 것을 목표로 합니다.

12.13.1. Simple zone 예

Simple zone 영역 네트워크는 단일 호스트의 게스트가 서로 연결할 수 있도록 격리된 네트워크를 만듭니다.

팁: 같은 호스에 위치한 게스트 간에는 연결할 수 있지만, 다른 노드 간에는 연결할 수 없습니다.

  • simple 처름 이름 붙여진 simple zone을 만듭니다.
  • VNet 이름 vnet1을 추가합니다.
  • 게이트웨이와 SNAT 옵션이 활성화된 서브넷을 생성합니다.
  • 그러면 노드에 네트워크 브리지 vnet1이 생성됩니다. 네트워크에 참여하고 IP 주소를 구성할 게스트에게 이 브리지를 할당합니다.

두 VM의 네트워크 인터페이스 구성은 다음과 같을 수 있으며 이를 통해 10.0.1.0/24 네트워크를 통해 통신할 수 있습니다.

allow-hotplug ens19
iface ens19 inet static
        address 10.0.1.14/24
allow-hotplug ens19
iface ens19 inet static
        address 10.0.1.15/24

12.13.2. 소스 NAT 예

단순 네트워크 영역에서 게스트에 대한 발신 연결을 허용하려는 경우 단순 영역은 소스 NAT(SNAT) 옵션을 제공합니다.

위의 구성에서 시작하여 VNet vnet1에 서브넷을 추가하고 게이트웨이 IP를 설정하고 SNAT 옵션을 활성화합니다.

Subnet: 172.16.0.0/24
Gateway: 172.16.0.1
SNAT: checked

게스트에서 서브넷의 IP 범위 내에 고정 IP 주소를 구성합니다.

노드 자체는 게이트웨이 IP 172.16.0.1을 사용하여 이 네트워크에 가입하고 서브넷 범위 내의 게스트에 대한 NAT 게이트웨이 역할을 합니다.

12.13.3. VLAN 설정 예

서로 다른 노드에 있는 VM이 격리된 네트워크를 통해 통신해야 하는 경우 VLAN 영역에서는 VLAN 태그를 사용하여 네트워크 수준 격리를 허용합니다.

myvlanzone이라는 VLAN 영역을 만듭니다.

ID: myvlanzone
Bridge: vmbr0

VLAN 태그 10과 이전에 생성된 myvlanzone을 사용하여 myvnet1이라는 VNet을 생성합니다.

ID: myvnet1
Zone: myvlanzone
Tag: 10

기본 SDN 패널을 통해 구성을 적용하여 각 노드에 로컬로 VNet을 만듭니다.

myvnet1에 vNIC를 사용하여 node1에 Debian 기반 가상 머신(vm1)을 생성합니다.

이 VM에는 다음 네트워크 구성을 사용합니다.

auto eth0
iface eth0 inet static
        address 10.0.3.100/24

vm1과 동일한 VNet myvnet1에 vNIC를 사용하여 node2에 두 번째 가상 머신(vm2)을 만듭니다.

이 VM에는 다음 네트워크 구성을 사용합니다.

auto eth0
iface eth0 inet static
        address 10.0.3.101/24

그런 다음 해당 네트워크를 사용하여 두 VM 간에 ping을 수행할 수 있어야 합니다.

12.13.4. QinQ 설정 예

이 예에서는 두 개의 QinQ 영역을 구성하고 각 영역에 두 개의 VM을 추가하여 더 격리된 VLAN을 구성할 수 있는 VLAN 태그의 추가 계층을 보여줍니다.

이 구성의 일반적인 사용 사례는 VM 통신을 위해 고객에게 격리된 네트워크를 제공하지만 VM을 다른 고객으로부터 격리하는 호스팅 공급자입니다.

서비스 VLAN 20을 사용하여 qinqzone1이라는 QinQ 영역을 만듭니다.

ID: qinqzone1
Bridge: vmbr0
Service VLAN: 20

서비스 VLAN 30을 사용하여 qinqzone2라는 다른 QinQ 영역을 만듭니다.

ID: qinqzone2
Bridge: vmbr0
Service VLAN: 30

이전에 생성된 qinqzone1 영역에 VLAN-ID 100을 사용하여 myvnet1이라는 VNet을 생성합니다.

ID: qinqvnet1
Zone: qinqzone1
Tag: 100

qinqzone2 영역에 VLAN-ID 100을 사용하여 myvnet2를 만듭니다.

ID: qinqvnet2
Zone: qinqzone2
Tag: 100

기본 SDN 웹 인터페이스 패널에 구성을 적용하여 각 노드에 로컬로 VNet을 만듭니다.

4개의 Debian 기반 가상 머신(vm1, vm2, vm3, vm4)을 생성하고 qinqvnet1 브리지를 사용하여 vm1 및 vm2에 네트워크 인터페이스를 추가하고 qinqvnet2 브리지를 사용하여 vm3 및 vm4를 추가합니다.

VM 내에서 /etc/network/interfaces 등을 통해 인터페이스의 IP 주소를 구성합니다.

auto eth0
iface eth0 inet static
        address 10.0.3.101/24

4개 VM 모두가 10.0.3.101~10.0.3.104 범위의 IP 주소를 갖도록 구성합니다.

이제 VM vm1과 vm2 사이는 물론 vm3과 vm4 사이에서도 ping을 수행할 수 있습니다. 그러나 VM vm1 또는 vm2는 모두 다른 서비스 VLAN을 사용하는 다른 영역에 있으므로 VM3 또는 vm4를 ping할 수 없습니다.

12.13.5. VXLAN 설정 예

이 예에서는 노드 IP 주소가 192.168.0.1, 192.168.0.2 및 192.168.0.3인 3개의 노드가 있는 클러스터를 가정합니다.

myvxlanzone이라는 VXLAN 영역을 생성하고 노드의 모든 IP를 피어 주소 목록에 추가합니다. 기본 MTU인 1450을 사용하거나 그에 따라 구성하십시오.

ID: myvxlanzone
Peers Address List: 192.168.0.1,192.168.0.2,192.168.0.3

이전에 만든 VXLAN 영역 myvxlanzone을 사용하여 vxvnet1이라는 VNet을 만듭니다.

ID: vxvnet1
Zone: myvxlanzone
Tag: 100000

기본 SDN 웹 인터페이스 패널에 구성을 적용하여 각 노드에 로컬로 VNet을 만듭니다.

vxvnet1에 vNIC를 사용하여 node1에 Debian 기반 가상 머신(vm1)을 생성합니다.

이 VM에는 다음 네트워크 구성을 사용합니다(낮은 MTU 참고).

auto eth0
iface eth0 inet static
        address 10.0.3.100/24
        mtu 1450

vm1과 동일한 VNet vxvnet1에 vNIC를 사용하여 node3에 두 번째 가상 머신(vm2)을 만듭니다.

이 VM에는 다음 네트워크 구성을 사용합니다.

auto eth0
iface eth0 inet static
        address 10.0.3.101/24
        mtu 1450

그런 다음 vm1과 vm2 사이에서 ping을 수행할 수 있어야 합니다.

12.13.6. EVPN 설정 예

이 예에서는 IP 주소가 192.168.0.1, 192.168.0.2 및 192.168.0.3인 3개의 노드(node1, node2, node3)가 있는 클러스터를 가정합니다.

프라이빗 ASN 번호와 위 노드 주소를 피어로 사용하여 EVPN 컨트롤러를 생성합니다.

ID: myevpnctl
ASN#: 65000
Peers: 192.168.0.1,192.168.0.2,192.168.0.3

myevpnzone이라는 EVPN 영역을 생성하고, 이전에 생성된 EVPN 컨트롤러를 할당하고, node1 및 node2를 종료 노드로 정의합니다.

ID: myevpnzone
VRF VXLAN Tag: 10000
Controller: myevpnctl
MTU: 1450
VNet MAC Address: 32:F4:05:FE:6C:0A
Exit Nodes: node1,node2

EVPN 영역 myevpnzone을 사용하여 myvnet1이라는 첫 번째 VNet을 만듭니다.

ID: myvnet1
Zone: myevpnzone
Tag: 11000

myvnet1에 서브넷을 만듭니다.

Subnet: 10.0.1.0/24
Gateway: 10.0.1.1

동일한 EVPN 영역 myevpnzone을 사용하여 myvnet2라는 두 번째 VNet을 만듭니다.

ID: myvnet2
Zone: myevpnzone
Tag: 12000

myvnet2에 다른 서브넷을 만듭니다.

Subnet: 10.0.2.0/24
Gateway: 10.0.2.1

기본 SDN 웹 인터페이스 패널의 구성을 적용하여 각 노드에 로컬로 VNet을 만들고 FRR 구성을 생성합니다.

myvnet1에 vNIC를 사용하여 node1에 Debian 기반 가상 머신(vm1)을 생성합니다.

vm1에 대해 다음 네트워크 구성을 사용하십시오.

auto eth0
iface eth0 inet static
        address 10.0.1.100/24
        gateway 10.0.1.1
        mtu 1450

다른 VNet myvnet2에 vNIC를 사용하여 node2에 두 번째 가상 머신(vm2)을 만듭니다.

vm2에 대해 다음 네트워크 구성을 사용하십시오.

auto eth0
iface eth0 inet static
        address 10.0.2.100/24
        gateway 10.0.2.1
        mtu 1450

이제 vm1에서 vm2를 ping하고 vm2에서 vm1을 ping할 수 있습니다.

게이트웨이가 아닌 node3의 vm2에서 외부 IP를 핑하는 경우 패킷은 구성된 myvnet2 게이트웨이로 이동한 다음 종료 노드(node1 또는 node2)로 라우팅되고 거기에서 기본 게이트웨이를 통해 해당 노드를 떠납니다. node1 또는 node2에 구성됩니다.

참고 공용 네트워크가 응답할 수 있도록 외부 게이트웨이의 node1 및 node2에 10.0.1.0/24 및 10.0.2.0/24 네트워크에 대한 역방향 경로를 추가해야 합니다.

외부 BGP 라우터를 구성한 경우 BGP-EVPN 경로(이 예에서는 10.0.1.0/24 및 10.0.2.0/24)가 동적으로 공지됩니다.

12.14. 노트

12.14.1. 다중 EVPN 종료 노드

게이트웨이 노드가 여러 개인 경우 패킷이 한 노드에 도착하지만 다른 노드에서 나갈 수 있으므로 rp_filter(Strict Reverse Path Filter) 옵션을 비활성화해야 합니다.

/etc/sysctl.conf에 다음을 추가합니다:

net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0

12.14.2. VXLAN IPSEC 암호화

VXLAN 위에 IPSEC 암호화를 추가하기 위해 이 예에서는 Strongswan을 사용하는 방법을 보여줍니다.

암호화를 처리하려면 IPv4의 경우 60바이트, IPv6의 경우 80바이트를 추가로 MTU를 줄여야 합니다.

따라서 기본 실제 1500 MTU에서는 1370(1370 + 80(IPSEC) + 50(VXLAN) == 1500)의 MTU를 사용해야 합니다.

호스트에 Strongswan을 설치합니다.

apt install strongswan

/etc/ipsec.conf에 구성을 추가합니다. VXLAN UDP 포트 4789의 트래픽만 암호화하면 됩니다.

conn %default
    ike=aes256-sha1-modp1024!  # the fastest, but reasonably secure cipher on modern HW
    esp=aes256-sha1!
    leftfirewall=yes           # this is necessary when using Proxmox VE firewall rules

conn output
    rightsubnet=%dynamic[udp/4789]
    right=%any
    type=transport
    authby=psk
    auto=route

conn input
    leftsubnet=%dynamic[udp/4789]
    type=transport
    authby=psk
    auto=route

다음을 사용하여 사전 공유 키를 생성합니다.

openssl rand -base64 128

파일 내용이 다음과 같도록 /etc/ipsec.secrets에 키를 추가합니다.

: PSK <generatedbase64key>

VXLAN 네트워크에 참여하는 모든 노드에 PSK 및 구성을 복사합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like