Хочу реализовать такую схему: есть публичный статический IP-адрес из пула (маска подсети /29) который провайдер выдал организации, при обращении на него я попадаю на шлюз PfSense 2.5.0, а уже за ним виртуальные машины. К примеру я смогу самолично разобрать как установить Exchange 2010 (как у меня на работе, дабы в последствии сделать апгрейд на другую версию) от и до, а не только как я сделать еще одним сервер с ролью Mailbox. Т.е. у меня будет мини организации которая обрамлена виртуализации Debian 10 + Proxmox 6.4.4 на отдельной стоящей машине, а внутри виртуальные машины с различными сервисами: Почтовый сервер, Терминальный сервер, доступ к ним по VPN. Это нужно чтобы учиться на практике дабы по том на рабочую конфигурации переносить настройки от и до со всеми нюансами который я разберу в тестовой конфигурации по максимально приближенной к боевой.

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

Я нашел в интернете схему как это будет выглядеть:

Схема доступа через WAN-IP к инфраструктуре

Шаг №1: Устанавливаю через диск Zalman ZM-VE500 на системный блок предварительно записанный образ Proxmox из папки _iso. Чтобы установить Proxmox перевожу диск Zalman в режим VCD Mode

Menu — Mode Select — VCD Mode, выбираю папку Proxmox, а внутри образ proxmox-ve 6.4.1

система установлена.

Шаг №2: Далее изменяю настройки сети для Proxmox (я их себе задокумментировал)

root@proxmox:~# nano /etc/network/interfaces

# network interface settings; autogenerated

# Please do NOT modify this file directly, unless you know what

# you're doing.

#

# If you want to manage parts of the network configuration manually,

# please utilize the 'source' or 'source-directory' directives to do

# so.

# PVE will preserve these directives, but will NOT read its network

# configuration from sourced files, so do not attempt to move any of

# the PVE managed interfaces into external files!

auto lo

iface lo inet loopback

auto enp2s0

iface enp2s0 inet static

address XXX.XXX.XXX.XXX/29

gateway XXX.XXX.XXX.XXX

post-up echo 1 > /proc/sys/net/ipv4/ip_forward

post-up iptables -t nat -A PREROUTING -i enp2s0 -p tcp -m multiport ! --dport 22,8006 -j DNAT --to 10.0.0.2

post-up iptables -t nat -A PREROUTING -i enp2s0 -p udp -j DNAT --to 10.0.0.2

auto vmbr0

iface vmbr0 inet manual

bridge-ports none

bridge-stp off

bridge-fd 0

auto vmbr1

iface vmbr1 inet static

address 10.0.0.1/30

bridge-ports none

bridge-stp off

bridge-fd 0

post-up iptables -t nat -A POSTROUTING -s '10.0.0.0/30' -o enp2s0 -j MASQUERADE

post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/30' -o enp2s0 -j MASQUERADE

#между proxmox & pfsense

auto vmbr2

iface vmbr2 inet static

address 10.90.90.1/24

bridge-ports none

bridge-stp off

bridge-fd 0

bridge-stf off

#lan network

После сохраняю внесенные изменения и отправляю систему в перезагрузку и я получил рабочую схему задуманного.

root@proxmox:~# ip r

default via XXX.XXX.XXX.XXX dev enp2s0 onlink

10.0.0.0/30 dev vmbr1 proto kernel scope link src 10.0.0.1

10.90.90.0/24 dev vmbr2 proto kernel scope link src 10.90.90.1

XXX.XXX.XXX.XXX/29 dev enp2s0 proto kernel scope link src XXX.XXX.XXX.XXX

Где

  • XXX.XXX.XXX.XXX/29 — это WAN адрес по которому я получаю доступ к своей системе виртуализации Proxmox 6.4.4
  • 10.90.90.0/24 внутренняя сеть за шлюзом Pfsense 2.5.0

и я могу подключиться из вне по 8006/tcp & 22/tcp на нее, ну а далее для почтового сервера который будет настроить проброс портов: 993 (IMAPS), 25(SMTP),587,110(POP3),134(IMAP) и т.д.

Шаг №3: Поднимаю внутри Debian 10 + Proxmox 6.4.4 шлюз для внутренней сети:

Сетевые интерфейсы для шлюза на базе pfSense 2.5.0

Адресация сети для PfSense 2.5.0 (как шлюз)

т.е. 10.0.0.2 — это WAN-сеть, а 10.90.90.2/24 это LAN сеть инфраструктуры, где уже создаваемые виртуальные машины:

VM (10.90.90.3) Windows Server 2012 R2 Std (Domain Controller, DNS, DHCP и т.д)

Задача выполнена, на этом заметка завершена, с уважением автор блога Олло Александр aka ekzorchik.