3. Установка pFsense в Proxmox (для маршрутизации в Routed режиме )

Proxmox и pfSense

08 01 2021

Настройка совместной работы Proxmox и pfSense на сервере с единственным IP-адресом

  • Начавшийся с появлением графических интерфейсов регресс средней квалификации привёл к тому, что для большинства современных IT-специалистов настройка через GUI является не только более удобной, но зачастую и единственно возможной.
  • С другой стороны, благодаря им смогли получить повсеместное распространение инструменты, считавшиеся ранее нетривиальными — например, системы виртуализации и сетевые маршрутизаторы.
  • Однако зависимость от графических средств настройки нередко оборачивается усложнением конфигурации. Например, любой современный Linux (и в определённой мере FreeBSD) из коробки является и системой виртуализации, и сетевым маршрутизатором, но отсутствие единого GUI для управления этими функциями приводит многих к необходимости одновременно иметь два специализированных дистрибутива (один из-за удобного GUI для настройки маршрутизатора, второй из-за удобного GUI для настройки виртуализации) там, где при умении пользоваться текстовой консолью хватило бы одного универсального.
  • Ниже мы описываем ситуацию, с которой столкнулся наш GUI-зависимый клиент, и решение, которое мы ему предложили.

Исходная диспозиция:

  • Имеется сервер в дата-центре, серверу выделен один публичный IP-адрес.
  • Получение дополнительных IP невозможно, IPMI отсутствует, IP-KVM не предоставляется.
  • На сервере установлен Proxmox и планируется создание нескольких виртуальных машин.
  • Связь между виртуалками и Интернетом должна производиться через pfSense, запущенный в первой из виртуалок.
  • Добиться этого можно единственным образом — передать публичный IP-адрес (а также MAC-адрес физического интерфейса) из Proxmox в pfSense.
  • Вариант с NAT 1:1 на Proxmox был отвергнут из-за неочевидности для клиента и побочных эффектов.

Трудности перевода:

  • Поскольку управление и настройка производятся через передаваемый IP,
  • необходимо сначала полностью подготовить новые настройки на pfSense и Proxmox,
  • а затем одновременно применить их.
  • Если при этом Proxmox отдаст IP/Mac, а pfSense их не подхватит, система станет недоступной.
  • Eсли pfSense подхватит IP/Mac до того, как их отдаст Proxmox, возникнет конфликт адресов и система станет недоступной.
  • По умолчанию pfSense не отвечает на WAN-интерфейсе даже на ping — если он не будет предварительно подготовлен для управления извне, система станет недоступной.
  • Предварительно протестировать настройки невозможно — либо они верные, либо после их применения система станет недоступной
  • Мы нашли в сети неожиданно много обсуждений данной задачи, но ни одно из них не содержало решения.

Нам потребуется второй сетевой мост:

  • Автоматически создаваемый мост vmbr0 в Proxmox используется для связи с внешним миром подключенных к нему виртуальных машин, контейнеров и самого Proxmox.
  • Нам понадобится дополнительный мост vmbr1, который будет использоваться для внутренней сети: в него будет подключен LAN-интерфейс pfSense и сетевые интерфейсы всех остальных контейнеров и виртуалок.
  • После завершения настроек и перезагрузки vmbr1 превратится для Proxmox в IP-интерфейс по умолчанию, а шлюзом по умолчанию станет подключенный к этому мосту LAN-интерфейс pfSense.
  • Кроме того, до перезагрузки (т.е. до окончательного применения новых настроек) мы будем держать WAN-интерфейс pfSense подключенным к vmbr1 вместо vmbr0, чтобы полностью настроить pfSense, не создавая конфликта IP- и MAC-адресов между pfSense и Proxmox.

Порядок создания vmbr1:

    • Proxmox использует для хранения сетевых настроек классический файл /etc/network/interfaces
    • Чтобы применять его изменения без перезагрузки, необходима утилита ifup из пакета ifupdown2.
    • По умолчанию Proxmox его не устанавливает, поэтому перед созданием моста мы должны сделать это вручную из SSH-консоли:
apt update &&
apt -y dist-upgrade &&
apt -y install ifupdown2
    • После этого открываем в Веб-интерфейсе раздел System/Network и создаём новый мост с IP-адресом 10.0.0.10/24:
Create vmbr1

Обратите внимание!

  • На этом этапе у моста должен быть пустой IP-адрес шлюза.
  • В мост не должен быть подключен ни один физический интерфейс.

Загружаем дистрибутив pfSense на сервер:

gzip -d pfSense-*.iso.gz
  • Загружаем ISO-файл через Веб-интерфейс: Node => Content => Upload => ISO image.

Создаём виртуальную машину для pfSense:

  • General: Advanced => Start at boot = yes
  • OS: ISO image = pfSense, Guest OS type = other
  • Harddisk: Bus = virtio, Size = 2gb
  • CPU: cores = 2
  • Memory: 1024 megabytes
  • Network: Bridge = vmbr1, Model = virtio(Е1000), MAC address = ..., Firewall = off

Какой MAC-адрес следует указать в свойствах создаваемой сетевой карты?

    • В SSH-консоли Proxmox смотрим, какой физический интерфейс подключен в мост vmbr0:
# ip a

3: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP grou p default qlen 1000 link/ether 34:97:f6:8d:f4:65 brd ff:ff:ff:ff:ff:ff inet 192.168.1.200/24 brd 192.168.1.255 scope global vmbr0 valid_lft forever preferred_lft forever inet6 fe80::3697:f6ff:fe8d:f465/64 scope link valid_lft forever preferred_lft forever 4: vmbr1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP grou p default qlen 1000 link/ether ca:2e:89:e1:e8:27 brd ff:ff:ff:ff:ff:ff inet6 fe80::2409:9ff:fec0:660b/64 scope link valid_lft forever preferred_lft forever

 

    • Затем смотрим параметры физического интерфейса:
ip link list dev имя-физического-интерфейса
    • В данном примере исходный MAC-адрес WAN-интерфейса Proxmox для назначения WAN-интерфейсу pfSense равен 00:25:90:30:48:72:
Detect MAC WAN

Заканчиваем настройку виртуальной машины:

  • На вкладке Hardware нажимаем Add => Network Device
  • Параметры новой сетевой карты: bridge = vmbr1, model = virtio(Е1000), firewall = off

Теперь запускаем её и инсталлируем pfSense:

  • Открываем noVNC-консоль.
  • Внутри неё нажимаем “Start”.
  • Проходим установку, выбирая на всех шагах ответ по умолчанию.
  • В конце установки разрешаем перезагрузку.
  • После перезагрузки возвращаемся в раздел Hardware и выбираем для CD/DVD либо Remove, либо Edit => Do not use any media.

Настройка pfSense через консоль при первом запуске:

  • VLANs = no
  • WAN = em0
  • LAN = em1 
  • В текстовом меню выбираем “2” (Set interface(s) IP address) и настраиваем LAN-интерфейс:
    • IP-адрес = 10.8.0.2/24
    • DHCP server = yes
    • DHCP range = 10.8.0.50-10.8.0.100
    • revert webConf to HTTP = yes

Теперь мы можем подключиться к Веб-интерфейсу pfSense:

    • Для этого подключаемся к Proxmox по SSH, создавая TCP-туннель к pfSense (здесь и далее считаем 192.168.0.100 публичным адресом сервера):
ssh 192.168.0.100 -L 8000:10.8.0.2:80

Продолжение настройки pfSense через Веб-интерфейс:

  • Мастер настройки состоит из нескольких простых шагов, большинство параметров можно принимать без изменений.
  • Логин/пароль по умолчанию: admin, pfsense
  • DNS: рекомендуем 1.1.1.1 и 77.88.8.8
  • WAN: тип = Static, IP-адрес = 192.168.0.100/24 (как у Proxmox), шлюз = 192.168.0.1 (как у Proxmox)
  • Admin password: придумайте новый.
  • Готово!

Завершение настройки pfSense:

  • System / Advanced / Admin access: Enable SSH = yes
  • System / Advanced / Networking:
    • Prefer IPv4 over IPv6 = yes
    • Disable hardware checksum offload = yes (все остальные offloadings уже отключены по умолчанию)
  • Firewall / Rules: разрешаем SSH-подключения и пинги из Интернета:
    • Action = Pass, Destination = WANaddr, Port = SSH
    • Action = Pass, Destination = WANaddr, Proto = ICMP
    • Нажимаем APPLY
  • По умолчанию доступ к pfSense разрешён только через LAN интерфейс. Чтобы получить доступ через WAN, через консоль (INSTANCE CONSOLE) временно отключим firewall в pfSense. Для этого используем опцию №8 (Shell) чтобы попасть в интерфейс командной строки, где выполним отключение firewall:
Enter an option: 8

[2.4.4-RELEASE][root@pfSense.localdomain]/root: pfctl -d
pf disabled

Завершение настройки Proxmox:

    • Останавливаем pfSense:
qm shutdown 100
    • Редактируем

nano /etc/pve/qemu-server/100.conf

в свойствх nic0 заменяем "vmbr1" на "vmbr0"

    • Делаем резервную копию /etc/network/interfaces

сp /etc/network/interfaces /etc/network/interfaces.new1

    • Редактируем /etc/network/interfaces:
      • под «iface имя-физического-WAN-интерфейса enp0s20 » добавляем строку с отступом:
pre-up ip link set $IFACE addr 00:0C:29:11:22:33
      • пояснение: префикс "00:0C:29" мы позаимствовали у VMware, а "11:22:33" рекомендуется заменить на случайные 16-ричные цифры
      • в строке "iface vmbr0 ..." заменяем "dhcp" или "static" на "manual"
      • если использовался "static", под vmbr0 удаляем также строки "address", "netmask", "gateway" и "dns-..."
      • под "iface vmbr1 ..." добавляем с отступом:
gateway 10.0.0.1
    • Снова делаем резервную копию /etc/network/interfaces и запрещаем его менять с помощью установки атрибута "immutable":
  • сp /etc/network/interfaces /etc/network/interfaces.new2
lsattr    /etc/network/interfaces
chattr +i /etc/network/interfaces
lsattr    /etc/network/interfaces
  • Перезагружаем Proxmox...
  • ...запускаем "ping 192.168.0.100" и затаив дыхание ждём несколько минут, пока не пойдут ответы.

В случае успешной перезагрузки:

    • Поскольку теперь вместо Proxmox на IP-адресе 1.2.3.4 нам отвечает pfSense, удаляем запомненный публичный ключ сервера:
ssh-keygen -f ~/.ssh/known_hosts -R "192.168.0.100"
    • Подключаемся к pfSense с пробросом портов:
ssh admin@192.168.0.100 -L 8000:10.0.0.1:80 -L 8006:10.0.0.10:8006 -L 8022:10.0.0.10:22
    • В случае успеха в соседней консоли подключаемся к Proxmox:
ssh root@127.0.0.1 -p8022

Настройка OpenVPN для pfSense:

  • Когда вместо iptables для организации шлюза приходится настраивать pfSense, логично предположить, что для доступа во внутреннюю сеть вместо SSH-туннелей потребуется VPN
  • Настройка VPN производится быстро, но не вполне очевидно, поэтому мы приведём её здесь
  • System / Package Manager: установите пакет openvpn-client-export
  • System / Certificate Manager / CAs: создайте новый Certificate Authority с произвольным названием, например, "CA1"
  • System / Certificate Manager / Certificates => Add:
    • Descriptive name: vpncert1
    • Certificate authority: CA1
    • Common name: pfsense (произвольное)
    • Certificate Type: Server Certificate
  • VPN / OpenVPN / Server => Add:
    • Server mode: Remote access (user auth)
    • Peer CA: CA1
    • Server certificate: vpncert1
    • Tunnel Network: 10.0.2.0/24
    • Local Network: 10.0.0.0/24
  • Firewall / Rules:
    • action=pass, destination=WANaddr, proto=udp, port=1194
    • action=pass, interface=OpenVPN, proto=any
    • APPLY
  • VPN / OpenVPN / Client Export => Authentication Only (No Cert), most clients

Подключение:

    • Файл xx.ovpn загружен на предыдущем шаге из pfSense:
sudo openvpn --config pfSense-UDP4-1194-config.ovpn
  • Перед подключением будут запрошены имя пользователя (admin) и пароль (установленный вами при первом входе в pfSense).
  • После подключения убедитесь, что Веб-интерфейсы pfSense и Proxmox стали доступны как http://10.0.0.1 и https://10.0.0.10:8006

Священный заключительный шаг:

  • Выбираем в Веб-интерфейсе pfSense пункт Diagnostics / Backup & Restore => Download configuration as XML

 

Пробежимся по меню pfsens:

  • 0) Logout (SSH only) - Отключить соединение по SSH
  • 1) Assign Interfaces - Назначить интерфейсы
  • 2) Set interface(s) IP address - Установить IP-адрес интерфейса(ов)
  • 3) Reset webConfigurator password - Сброс пароля Веб-конфигуратора [По умолчанию логин - "admin", пароль - "pfsense"]
  • 4) Reset to factory defaults - Сброс роутера к заводским настройкам
  • 5) Reboot system - Перезагрузка системы
  • 6) Halt system - Выключение системы
  • 7) Ping host - Утилита ping
  • 8) Shell - Войти CLI
  • 9) pfTop
  • 10) Filter Logs
  • 11) Restart webConfigurator - Перезапустить Веб-конфигуратор
  • 12) PHP shell + pfSense tools
  • 13) Update from console - Обновить из консоли
  • 14) Enable Secure Shell (sshd) - Включить sshd
  • 15) Restore recent Configuration - Восстановить недавнюю конфигурацию
  • 16) Restart PHP-FPM

Думаю самые значимые для нас пункты это с 1 по 6. Тут и так всё понятно, подробно останавливаться на этом не будем.

Источник: https://cdnnow.ru/blog/pve-pfsense/

 

 

 

 

 

 

 

 

 

 

Источник: https://cdnnow.ru/blog/pve-pfsense/

  • 0 Корисниците го најдоа ова како корисно
Дали Ви помогна овој одговор?

Понудени резултати

2. Настройка сети в Proxmox для создания кластера

Настройка сети  в Routed режиме Обычно для виртуальных машин достаточно 3 режима работы сети:...

1. Установка pfsense в Proxmox (виртуальная маршрутизация)

Установка pfSense 2.4 pfSense основан на FreeBSD, и его установка не должна никого...

4. Настройка VPN в pFsense 2.4.5

Пункт 1. Обновляем ПО до актуальных версий Версию pfSense можно посмотреть на главной странице,...

5. Mikrotik OS 7.1 на VM Proxmox 5.4

Как установить Mikrotik 7.1 на базе RouterOS на виртуальную машину Proxmox В данной статье я...

6. Бекапы VM Proxmox 5.4 в облака с помощью rclone

Бекапы VM  Proxmox 5.4  в облака   документация по vzdump документация по vzdump-hook...