Окт 092024
 

opnsnese Как и следовало думать, все начиналось с благородных мыслей сделать «все хорошо». Постоянные попытки искать компромиссы с вечно отваливающимися костылями VPN, уже морально устаревшее железо и прошивки на основе ASA СISCO, привели меня к тому, что нужно что то менять — в данном случае все. И железо, и программное обеспечение, которое позволит выходить благодарным пользователям в интернет.

И так, что нам для начала нужно? Правильно. Выбрать платформу, на которой будем все это твАрить. Выбор пал на прекрасное произведение дядюшки Ляо с такими характеристиками (на вырост):
1. Процессор — Intel N100;
2. DDR5 — 16Gb;
3. SSD M.2 — 256Gb;
4. LAN — 4 Port Realtek RTL8125 (Realtek pcie 2.5 gbe Family).
И вот этот самый пресловутый пункт под номером 4 сыграл самую плохую шутку со мной, и с данного момента начинаются танцы с бубном.

Установка ОС-прошивки не должно вас как то останавливать, но как всегда есть пара нюансов:
1. При первом запуске с ISO, вы загружаетесь по сути с Live диска, и вам необходимо сначала запустить мастер установки.
Делается это не совсем тривиально, и если внимательно читать то что написано перед авторизацией пользователя, то будет понятно, что нужно сделать.
И так, для начала установки используем логин installer и пароль opnsense
Запускается мастер, где я выбрал систему ZFS (так как считается, что она более универсальная), и одиночный диск (так как у меня он всего один M.2).
!Не забываем сменить пароль root. В остальном сложностей не должно возникнуть.
Перезагружаемся, и видим отсутствие каких либо портов LAN.
Начинаем гуглить, и немного седеть, так как выясняется отсутствие поддержки сетевого чипа по умолчанию.
Но решение есть (слава богам), не первый я такой, кто наткнулся на подобные грабли.

Смотрим что нужно сделать пошагово.
1. Логинимся под ROOT
2. Заходим в SHELL (цифра 8), и начинаем магию.
3. Первое, что нам нужно сделать, это выяснить какая версия FreeBSD у нас стоит:

freebsd-version

Это нам понадобится для того, чтобы правильно выбрать драйвера для той версии, которую мы установили (в нашем случае 14.1-Release-p5)
4. Далее идем по ссылке, и смотрим последнюю версию драйвера, которая доступна для нашего чипа RTL8125 (в нашем случае 1100.00)

https://www.freshports.org/net/realtek-re-kmod/

5. Далее идем по ссылке, и скачиваем последнюю найденную версию драйвера realtek-re-kmod-1100.00_1.pkg (не забываем, что у нас версия FreeBSD 14)

https://pkg.opnsense.org/FreeBSD:14:amd64/snapshots/latest/All/

6. Подготавливаем флешку обязательно отформатированную в один раздел в FAT32, и копируем туда наш драйвер (мы же помним, что у нас еще ни один сетевой порт не работает?).
7. Далее у нас идет магия монтирования флешки, и установка драйвера.

# Создаем директорию монтирования
mkdir /mnt/usbstick
# Выясняем устройство монтирования (как правило это da0)
ls -l /dev/da0*
# Монтируем раздел
mount -t msdosfs /dev/da0 /mnt/usbstick
# Устанавливаем пакет (в нашем случае realtek-re-kmod-1100.00_1.pkg), и убеждаемся, что все прошло без ошибок.
pkg add /mnt/usbstick/realtek-re-kmod-1100.00_1.pkg
# Размонтируем и удаляем не нужное
umount /mnt/usbstick
rm -rf /mnt/usbstick

После установки пакета, нам еще нужно указать ОС, что нужно использовать драйвер. Для этого создаем файл loader.conf.local и вносим в него изменения.

cd /boot
touch loader.conf.local
# Добавляем строки
echo 'if_re_load="YES"' >> /boot/loader.conf.local
echo 'if_re_name="/boot/modules/if_re.ko"' >> /boot/loader.conf.local
# Убеждаемся, что в файле наши изменения появились
less /boot/loader.conf.local

То же самое можно сделать с помощью команды vi, открыв файл на редактирование, и сразу прописав туда необходимые строки:

vi /boot/loader.conf.local
# Добавляем строки
if_re_load="YES"
if_re_name="/boot/modules/if_re.ko"

Вы прекрасны. Берем, перезагружаемся, и скрестив пальцы ждем заветного определения наших сетевых портов.

# Перезагрузка
reboot
# Убеждаемся, что if_re.ko загружен
kldstat
# Убеждаемся, что все порты функционируют исправно
ifconfig -a

Да, возможно вам захочется когда нибудь вручную повысить версию драйвера, по разным причинам.
Для этого, сначала нужно УДАЛИТЬ старый пакет (так как новый не поставится, и инсталлятор скажет, что уже другая версия установлена), а уже потом устанавливать новый.

# Удаляем старый
pkg delete realtek-re-kmod-1100.00_1.pkg
# Скачиваем и устанавливаем новый
fetch -v https://pkg.freebsd.org/FreeBSD:ВЕРСИЯ ОС:amd64/latest/All/realtek-re-kmod-НОВАЯ ВЕРСИЯ.pkg
pkg install -f -y realtek-re-kmod-НОВАЯ ВЕРСИЯ.pkg

! Файл /boot/loader.conf.local как правило оставляем БЕЗ изменения.

И да, несколько слов про PFSense.

По вычитанному в «Интернетах» это по идее исходная платформа (при примерно одинаковом функционале), от которой отошла ветка OPNSense, но попытки установить его наткнулись на несколько препятствий:
1. Официально и спокойно его не скачать, так как мы слегка заблокированы (решается прямым зеркалом с образами).
2. Установить с образа ISO не получилось, так как при установке появлялась ошибка CHECKSUM файлов (решилось скачиванием img для stick и записью на флешку с помощью balenaEtcher).
3. И да, он так же не поддерживает по умолчанию RTL8125.
Одной из причин, почему не стал останавливаться на PFSense, это отсутствие возможности нормально установить при необходимости какие либо плагины и обновления прошивки(мы же помним, что нас заблокировали?). Искать какие либо костыли, чтобы их обходить, я устал. Максимально пытаясь от этого уходить, возвращаться к исходной точке нет желания от слова СОВСЕМ.

ИТОГО:
1. Потраченного времени на написание статьи — 1 день.
2. Нервов — на годы вперед (опасения, что купленная дорогая железка будет лежать мертвым грузом).
3. Поиск рабочих вариантов — 3 дня.

Полезные ссылки:
OPNSense get started
Adding network Realtek support in FreeBsd (OPNSense)
Fix issues with Realtek NIC
Пособие для новичков во FreeBSD
Команды FreeBSD
Editing loader.conf
pkg add realtek-re-kmod-197.00.pkg problem
Комьюнити 4PDA PfSense
Зеркало образов PfSense

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)