proxmox의 가상 포트에 물리적 포트를 전용으로 지정합니다(libvirt 필요 없음).

proxmox의 가상 포트에 물리적 포트를 전용으로 지정합니다(libvirt 필요 없음).

libvirt의 도움 없이 호스트 물리적 포트 1개를 게스트 가상 포트 1개에 전용으로 사용하면 됩니다.

호스트는 다음과 같습니다:

  • 2개의 물리적 인터페이스: eth0 및 eth1
  • 모든 VM에 대한 가상 인터페이스를 포함한 1개의 가상 브리지(vmbr0)
  • eth0 및 vmbr0이 브리지 모드에 있습니다.. 모든 게스트와 호스트가 동일한 서브넷(192.168.247.0/24)에 있기 때문입니다.

이것이 내 구성입니다./etc/network/interfaces

auto lo
iface lo inet loopback

iface eth0 inet manual
iface eth1 inet manual

auto vmbr0
iface vmbr0 inet static
        address 192.168.247.2
        netmask 255.255.255.0
        gateway 192.168.247.1
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0

eth1은 ISP 모뎀에 연결되어 있어야 합니다. 따라서 eth1은 인터넷을 종료합니다. 호스트의 가상 머신 중 하나인 가상 방화벽에 eth1을 전용으로 사용하고 싶습니다. 가상 방화벽은 호스트가 아닌 모든 라우팅 작업을 수행합니다.

내가 아는 한, 이 작업을 위해서는 MacVTap(macvlan)을 사용해야 하지만 내가 보는 모든 가이드는 KVM+libvirt에 대한 것입니다.그리고 나는 libvirt가 없습니다!Proxmox는 "사용자 친화적인 작업"을 모두 수행하고 있습니다.

아래에서 볼 수 있듯이 이제 인터페이스 Tap101i0 및 Tap101i1인 1개의 VM만 활성화되어 있습니다. 여기서 Tap101i0은 vmbr0에 있고 호스트의 eth0과 동일한 서브넷 마스크를 공유하는 것으로 가정됩니다. 그리고 tap101i1은 호스트의 eth1에 100% 바인딩되어야 하므로 인터넷이 종료됩니다.

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vmbr0 state UP mode DEFAULT group default qlen 1000
    link/ether 00:15:17:50:95:66 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:15:17:50:95:67 brd ff:ff:ff:ff:ff:ff
6: tap101i0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether 06:97:77:30:cc:a7 brd ff:ff:ff:ff:ff:ff
7: tap101i1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether ce:b4:f3:40:38:0d brd ff:ff:ff:ff:ff:ff
8: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 00:15:17:50:95:66 brd ff:ff:ff:ff:ff:ff

답변1

이 목적으로 macvlan을 사용할 수 있습니다.

  1. eth1에 macvlan 인터페이스를 생성합니다:
    ip link add link eth1 name macvlan1 type macvlan mode bridge
    
  2. macvlan 인터페이스에 IP 주소를 할당합니다. VM은 다음 IP 주소를 사용합니다.
    ip addr add 192.168.247.3/24 dev macvlan1
    
  3. macvlan 인터페이스를 불러옵니다.
    ip link set macvlan1 up
    
  4. 가상 머신의 PID를 가져옵니다( vm-name실제 이름으로 대체).
    ps aux | grep [v]m-name
    
  5. 가상 머신의 네트워크 네임스페이스에 macvlan 인터페이스를 추가합니다( PID실제 PID로 대체).
    ip link set macvlan1 netns PID
    
  6. 가상 머신에서 macvlan 인터페이스를 엽니다(PID를 다시 교체).
    ip netns exec PID ip link set macvlan1 up
    

이제 가상 머신은 마치 eth1에 직접 연결된 것처럼 사용할 수 있습니다. 가상 머신의 IP 주소는 192.168.247.3이며 eth1을 통해 인터넷과 통신할 수 있습니다.

관련 정보