пятница, 30 июля 2021 г.

pfSense+Zerotier=?

Продолжая мусолить тему виртуального шлюза, сегодня я попытаюсь поженить pfSense с Zerotier и посмотрю что из этого выйдет.
Сразу отвечу на вопрос "Зачем это нужно, ведь в pfSense есть VPN сервер?": Если кратко - то для использования машины с pfSense в качестве VPN сервера нужен белый IP, который стоит денег, а для обеспечения бесперебойности работы, белый IP нужен и на резервном канале. Не каждое небольшое предприятие готово это все оплачивать (а если готово, то пусть лучше платит мне), да и провайдеры не всегда готовы его предоставить. Не стоит забывать и о возне с ключами (генерация, компрометация).
Zerotier на данный момент позволяет бесплатно использовать 50 клиентов (раньше было 100), заведя несколько аккаунтов это количество можно увеличить кратно, но всем этим надо как-то удобно рулить. Это мы и попытаемся реализовать.

Разрешаем установку FreeBSD пакетов, отредактировав первую строчку файла /usr/local/etc/pkg/repos/pfSense.conf (меняем no на yes)

FreeBSD: { enabled: yes }

Устанавливаем Zerotier:

pkg install -y net/zerotier net/ngrep textproc/jq

Правим файл /etc/defaults/rc.conf, добавив строку:

zerotier_enable=YES

Запускаем службу:

service zerotier start

Для реализации автозапуска создаем файлы /etc/rc.local и /etc/rc.local.running.
В файл /etc/rc.local добавляем строчку:

service zerotier start

Перегружаем систему.

Присоединяемся к сети Zerotier

# zerotier-cli join 0cccb752f734e76c
200 join OK

где 0cccb752f734e76c - наш <network ID>

Во вкладке "Интерфейсы"/"Назначения" в списке "Доступные сетевые порты" наблюдаем появившийся новый интерфейс:

Теперь мы можем нажать кнопку добавить и далее, по идее, управлять им как обычным сетевым интерфейсом стандартными средствами pfSense. Перегружаем систему и оп:

Интерфейс, из конфигурации отсутствует

Выбираем интерфейс, служащий WAN и продолжаем загрузку

Жмем 1

Как видим, сам интерфейс мы установили, но в интерфейс управления интеграции не произошло.
Для дальнейших действий нам потребуется виртуальная машина с FreeBSD, соответствующей нашему pfSense версии.
Устанавливаем на FreeBSD pkg, git и gmake, подключившись по SSH

pkg install git gmake

Соглашаемся на установку pkg и остальных пакетов
С помощью git клонируем коллекцию портов (примерно 2 Gb)

# git clone https://github.com/pfsense/FreeBSD-ports.git

Правим (создаем) файл /etc/make.conf, чтоб разрешить сборку для сторонних систем. добавив строчку

ALLOW_UNSUPPORTED_SYSTEM=YES

Клонируем в каталог FreeBSD-ports/net/, коллекции портов, скачанной ранее, порт pfSense-pkg-zerotier

cd FreeBSD-ports/net/
git clone https://github.com/ChanceM/pfSense-pkg-zerotier

Собираем пакет

cd pfSense-pkg-zerotier
make
make package

Переносим собранный пакет, находящийся в каталоге FreeBSD-ports/net/pfSense-pkg-zerotier/work/pkg/ на машину с pfSense по ssh и производим его установку

pkg add pfSense-pkg-zerotier-0.00.1.txz

После перезагрузки во вкладке Web интерфейса VPN, появился пункт Zerotier

Enable/Save

Во вкладке Networks появилась наша сеть, добавление новых сетей можно теперь делать прямо из интерфейса.

Есть возможность поднять свой контроллер, но я пока не буду ее рассматривать.

Послесловие
Таким образом (используя zerotier-cli join <network ID>) мы можем добавить любое разумное количество Zerotier сетей, преодолевая ограничение в 50 бесплатных клиентов и настраивая сеть любой сложности.
Пакет, собранный мною в процессе написания заметки (pfSense 2.5.2, zerotier 1.6.5) можно скачать здесь

1 комментарий:

  1. Подпись комментария:
    hi, did you make zerotier work on pfsense. I cant make it work, I think that I am not configurating the proper way the firewall rules. If you mak it work, which was your configuration??
    In zerotier it appear that is connected but I cant connect to other equipments ....

    ОтветитьУдалить