Создание 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-адрес, хотя есть только один сетевой кабель, соединяющий все эти виртуальные машины с сетью.