Создание Private Network Bridge на Proxmox VE 6 с NAT

Создание Private Network Bridge на Proxmox VE 6 с NAT

 

В этой статье мы покажем вам, как создать частный и виртуальный сетевой мост на Proxmox с настроенным NAT. В инфраструктуре виртуализации Proxmox настройку сети можно выполнить либо с помощью интерфейса командной строки (вручную редактируя файлы конфигурации сети), либо с помощью интуитивно понятного графического пользовательского интерфейса. Можно использовать любой метод, но выбор может зависеть от вашего опыта администрирования Linux.

Одним из преимуществ изменения сетевых конфигураций из графического интерфейса пользователя является то, что Proxmox VE не записывает изменения непосредственно в / etc / network / interfaces . Вместо этого он будет использовать временный файл с именем /etc/network/interfaces.new , который позволяет одновременно вносить множество связанных изменений. Это также помогает убедиться, что сетевые изменения верны перед фиксацией в / etc / network / interfaces , поскольку неправильная конфигурация сети может сделать узел недоступным.

Шаг 1. Создание виртуального сетевого моста на Proxmox с NAT

Для метода CLI вы напрямую отредактируете файл конфигурации /etc/network/interfaces .

sudo vim /etc/network/interfaces

Я создам виртуальный сетевой мост на основе следующих сетевых параметров:

  • Сеть: 192.168.50.0
  • Сетевая маска: 255.255.255.0
  • IP-адрес хоста Proxmox: 192.168.50.1

Распечатать текущие активные сетевые интерфейсы на сервере:

$ sudo ip -f inet a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    inet 192.168.58.236/26 brd 195.201.58.255 scope global enp4s0
       valid_lft forever preferred_lft forever

Я создам виртуальный мост с именем vmbr1

auto vmbr1
iface vmbr1 inet static
 address 192.168.50.1
 netmask 255.255.255.0
 bridge_ports none
 bridge_stp off
 bridge_fd 0

Обратите внимание, что с мостом не связан физический интерфейс ( bridge_ports none ).

Шаг 2. Настроить NAT (маскарадинг)

Маскарадинг позволяет вашим виртуальным машинам в частной сети, созданной для доступа к внешним сетям, используя IP-адрес хоста для исходящего трафика. Каждый исходящий пакет перезаписывается iptables так, чтобы он выглядел как исходящий от хоста, а ответы соответственно переписываются для перенаправления исходному отправителю.

Я изменю приведенные выше конфигурации сети, чтобы добавить маршрутизацию для подключения к Интернету. Поскольку мой основной интерфейс enp4s0 подключен к физическому коммутатору и имеет подключение к Интернету, мы будем маршрутизировать трафик, поступающий от vmbr1, через него.

auto vmbr1
iface vmbr1 inet static
  address 192.168.50.1
  netmask 255.255.255.0
  bridge_ports none
  bridge_stp off
  bridge_fd 0
  post-up echo 1 > /proc/sys/net/ipv4/ip_forward
  post-up   iptables -t nat -A POSTROUTING -s '192.168.50.0/24' -o enp4s0 -j MASQUERADE
  post-down iptables -t nat -D POSTROUTING -s '192.168.50.0/24' -o enp4s0 -j MASQUERADE

Обратите внимание, что enp4s0 можно заменить интерфейсом VLAN или другим мостом Linux. iptables предоставляет возможность маскировки, которая позволяет экземплярам частной виртуальной сети получать доступ к Интернету.

Шаг 3. Поднимите интерфейс моста

Убедитесь, что ваши сетевые конфигурации верны, вручную вызвав интерфейс моста.

$ sudo ifup vmbr1
Waiting for vmbr1 to get ready (MAXWAIT is 2 seconds).

Проверьте информацию об IP-адресе моста:

$ ip address show dev vmbr1
3: vmbr1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether 16:cf:7e:23:de:1e brd ff:ff:ff:ff:ff:ff
    inet 192.168.50.1/24 brd 192.168.50.255 scope global vmbr1
       valid_lft forever preferred_lft forever
    inet6 fe80::14cf:7eff:fe23:de1e/64 scope link
       valid_lft forever preferred_lft forever

Из выходных данных можно подтвердить, что IP-адрес на vmbr1 правильный.

Вы должны иметь возможность перезапустить сетевую службу без каких-либо сбоев:

$ sudo systemctl restart networking

Подтвердите, что статус активен :

$ systemctl status networking.service
● networking.service - Raise network interfaces
   Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: enabled)
   Active: active (exited) since Fri 2021-05-07 19:27:34 CEST; 29s ago
     Docs: man:interfaces(5)
  Process: 27355 ExecStart=/sbin/ifup -a --read-environment (code=exited, status=0/SUCCESS)
 Main PID: 27355 (code=exited, status=0/SUCCESS)

May 07 19:27:29 proxmox systemd[1]: Starting Raise network interfaces...
May 07 19:27:34 proxmox ifup[27355]: Waiting for DAD... Done
May 07 19:27:34 proxmox ifup[27355]: Waiting for vmbr1 to get ready (MAXWAIT is 2 seconds).
May 07 19:27:34 proxmox systemd[1]: Started Raise network interfaces.

Как только вы создадите виртуальную машину на созданном мосту, она будет вести себя так, как если бы она была напрямую подключена к физической сети. Сеть, в свою очередь, считает, что каждая виртуальная машина имеет свой собственный MAC-адрес, хотя есть только один сетевой кабель, соединяющий все эти виртуальные машины с сетью.