
Я не особо люблю освещать «текущие события», но правительство США на днях заявило о введении реально шокирующего запрета на импорт роутеров потребительского сегмента. Это идиотский запрет по целому ряду причин, но если он действительно начнёт работать, то навык сборки «самопального» роутера может оказаться весьма кстати.
К счастью, вы можете собрать его из практически всего, что можно хоть в какой-то степени назвать компьютером.
Лично я долгие годы использовал в качестве роутера мини-ПК под управлением Linux и даже писал о том, как собирать такие и настраивать файервол. Он был крайне стабилен, и единственной проблемой, с которой я за все эти годы столкнулся, был износ накопителя mSATA ценой в $20. И хотя обычно я пользуюсь Debian, Alpine наверняка сработает не хуже, а может и лучше, если вы с этим дистрибутивом знакомы. Самое главное, чтобы устройство работало под Linux и имело пару USB-портов. Подойдёт всё, что угодно, будь то мини-ПК, настольный, одноплатник, рэковый сервер, старый ноутбук или какое-то самодельное устройство.
Честно говоря, такое решение нельзя назвать эффективной мерой против нового закона США. Это лишь способ показать интересный «хак», который вы можете применить, чтобы выжать из своего железа больше возможностей. Плюс это доказывает, что в роутерах нет ничего особенного — в конце концов это просто компьютеры.
Выбор железа
Я лично предпочитаю специализированные мини-ПК с пассивным охлаждением.

Но, как я уже сказал, подойдёт практически всё. Устройство должно иметь два Ethernet-порта, но вполне можно обойтись и стандартным адаптером USB-Ethernet. Надёжность будет ниже, чем у штатного интерфейса, но её должно хватить. К примеру, моя кустарная поделка из подручных железок может легко обеспечивать скорость 820–850 Мбит/с по проводу и ~300 Мбит/с — по WiFi.

Конкретно в этом девайсе стоит двухъядерный Celeron 3205U с молниеносной! частотой 1,5 ГГц. И даже этот дряблый чип способен лихо маршрутизировать трафик по целому дому или небольшой компании.
Но вернёмся ещё дальше в прошлое. Вот мой сетап, собранный в начале осеннего учебного семестра 2016 года:

По фото сложно понять, что тут к чему, поэтому поясню:
ThinkPad T60 — забрал из списанных со своей прежней работы.
Мост между ExpressCard в отсеке расширения ноутбука и внешним интерфейсом PCIe.
Небрэндовая сетевая карта в слоте PCIe (тоже из хлама), без монтажной пластины.
Древний коммутатор Cisco 2960 на 100 Мбит — купил за $10 у коллеги.
Роутер D-Link, выступающий в качестве точки доступа (куплен «как есть» с проблемным WAN-портом в магазине б/у товаров).
Вот это роутер так роутер! С виду похож на кучу хлама. Собственно, оно так и есть. Но этот хлам прекрасно справлялся с возложенной на него задачей!
Конфигурация
После настройки система будет выглядеть как-то так:
Interface |
Network |
eth0 |
WAN |
eth1 |
LAN (Wired) |
wlan0 |
LAN (Wireless) |
Оба LAN-интерфейса будут соединены мостом, то есть устройства в проводной и беспроводной сетях смогут нормально взаимодействовать. Если одного LAN-порта недостаточно, можете подключить сколько угодно USB-адаптеров и связать их. Скорость будет меньше, чем у «реального» коммутатора, но если вас интересует быстродействие, то здесь вы не по адресу.
Как я уже писал, в качестве ОС будет использоваться Debian с минимумом дополнительного ПО:
Все проприетарные прошивки, не включённые в базовый дистрибутив.
hostapd— для создания WiFi-сети.dnsmasq — для настройки DNS и DHCP.bridge-utils— для совмещения портов в общую сеть.
Также должен сказать, что настрою только IPv4. IPv6 прекрасно работает на чём-нибудь вроде мобильных устройств, но внутри LAN мне этим протоколом пользоваться не нравится. Возможно, мой мозг уже слишком закостенел, но пока меня вполне устраивает и IPv4.
Установка и настройка
В целом это довольно стандартный процесс установки Debian. Отмечу несколько деталей:
Отключите PXE-загрузку в BIOS/UEFI.
Если можете, установите минимальную частоту процессора, но для USB- и PCI-устройств энергосбережение отключите.
Найдите и включите опцию «Восстановление после сбоя питания».
Некоторые устройства не будут должным образом стартовать без подключённого дисплея. Если это ваш случай, воткните в HDMI-порт обманку.
Многие устройства будут корректно работать только при включении репозитория
non-free-firmware.
В зависимости от вашего беспроводного оборудования, может потребоваться установить дополнительный пакет прошивки.
Для устройств Intel:
sudo apt install firmware-iwlwifi
Для устройств Realtek:
sudo apt install firmware-ath9k-htc
Если же у вас что-то совсем древнее, как у меня:
sudo apt install firmware-atheros
Установка необходимых пакетов
После всего этого нужно установить ряд дополнительных утилит:
sudo apt install bridge-utils hostapd dnsmasq
В плане ПО этого будет достаточно. Всего в системе должно получиться около 250 пакетов.
Правильное именование интерфейсов
В современных системах Linux сетевые интерфейсы именуются на основе физического подключения и типа драйвера, например, enp0s31f6. Но я предпочитаю использовать старый формат ethX, чтобы каждый интерфейс получал постоянное имя.
Создайте для каждого интерфейса файл /etc/systemd/network/10-persistent-ethX.link:
[Match] MACAddress=AA:BB:CC:DD:00:11 [Link] Name=ethX
Создание беспроводной сети
Для этого используется USB WiFi-адаптер, который выступает в роли точки доступа, создавая сеть для подключения других устройств. По качеству работы он, конечно, будет уступать специализированному устройству, но всё же лучше, чем ничего. Мне с его помощью удалось получить достаточно неплохие результаты, но я живу в небольшом доме и редко нахожусь дальше 10 метров от роутера. Если для вас очень важна стабильность и мощность беспроводной связи, постарайтесь найти на роль точки доступа соответствующее устройство. Вполне должен сгодиться и старый роутер, даже десятилетней давности. Нужно будет просто подключиться к его LAN-порту (не WAN!).
Для настройки WiFi-сети через встроенное устройство создайте файл конфигурации по адресу /etc/hostapd/hostapd.conf:
interface=wlan0 bridge=br0 hw_mode=g channel=11 ieee80211d=1 country_code=US ieee80211n=1 wmm_enabled=1 ssid=My Cool and Creative Wi-Fi Name auth_algs=1 wpa=2 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP wpa_passphrase=mysecurepassword
По умолчанию служба hostapd маскирована, так что для включения её нужно размаскировать.
sudo systemctl unmask hostapd sudo systemctl enable --now hostapd
Настройка интерфейсов
Интерфейсом «внешнего» подключения будет WAN, а «внутреннего» — LAN. Имейте в виду, что для LAN-интерфейса шлюз по умолчанию не назначается.
/etc/network/interfaces
allow-hotplug eth0 allow-hotplug eth1 auto wlan0 auto br0 iface eth0 inet dhcp iface br0 inet static bridge_ports eth1 wlan0 address 192.168.1.1/24
После этого этапа устройство должно выполнить быструю перезагрузку и корректно вернуться к работе. Если что-то не заработает, проверьте наличие ошибок командой journalctl -e -u networking.service.
Если всё сработало как положено, $ sudo brctl show br0 выдаст следующее:
bridge name bridge id STP enabled interfaces br0 8000.xxxxx no eth1 wlan0
IP Forwarding
Для включения этой функции создайте /etc/sysctl.d/10-forward.conf и добавьте туда следующую строку:
net.ipv4.ip_forward=1
Примените изменения:
sudo systemctl restart systemd-sysctl.service
Правила файервола
В Linux правила файервола и конфигурация NAT обрабатываются новой системой netfilter. Мы делаем это с помощью nftables.
/etc/nftables.conf
#!/usr/sbin/nft -f flush ruleset table inet filter { chain input { type filter hook input priority 0; policy drop; ct state { established,related } counter accept ip protocol icmp counter accept iifname "br0" tcp dport { 22, 53 } counter accept iifname "br0" udp dport { 53, 67, 68 } counter accept counter } chain forward { type filter hook forward priority 0; policy drop; iifname "eth0" oifname "br0" ct state { established,related } counter accept iifname "br0" oifname "eth0" ct state { new,established,related } counter accept counter } chain output { type filter hook output priority 0; policy accept; counter } } table ip nat { chain postrouting { type nat hook postrouting priority 100; policy accept; oifname "eth0" counter masquerade } }
Этот конфигурационный файл реализует NAT, запрещает весь входящий трафик извне сети и позволяет роутеру выступать в роли DNS-, DHCP- и SSH-сервера (для управления). Довольно стандартный конфиг файервола.
Для следующей загрузки включите автоматический запуск nftables:
sudo systemctl enable nftables.service
DHCP и DNS
В отличие от прошлых устройств, здесь вместо isc-dhcp-server и bind9 используется dnsmasq. Он меньше, проще в настройке и для небольших девайсов работает не хуже. Файл его конфигурации до смешного прост.
/etc/dnsmasq.conf
interface=br0 listen-address=0.0.0.0 dhcp-range=192.168.1.50,192.168.1.250,255.255.255.0,6h dhcp-option=option:router,192.168.1.1 dhcp-option=option:dns-server,192.168.1.1 cache-size=10000
Включите эту службу для следующей загрузки.
sudo systemctl enable dnsmasq
Бонус: последовательный порт
Если ваш девайс имеет на борту последовательный или консольный порт, будет очень удобно управлять роутером без необходимости подцеплять отдельный монитор и клавиатуру. Это повсеместно практикуется в корпоративной среде, но и домашние устройства вполне заслуживают такую возможность.
Измените /etc/default/grub:
GRUB_CMDLINE_LINUX='console=tty0 console=ttyS0,115200n8' GRUB_TERMINAL=serial GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
Теперь включите запуск службы Getty на этом порту:
sudo systemctl enable serial-getty@ttyS0.service
Теперь обновим конфигурацию загрузчика grub и перезапустим девайс.
sudo update-grub
Проверка
Закончив всю эту настройку, пару раз перезапустите устройство и убедитесь в работоспособности всех служб. Проверить работу файервола можно командой $ sudo nft list ruleset:
table inet filter { chain input { type filter hook input priority filter; policy drop; ct state { established, related } counter packets 1546 bytes 138508 accept ip protocol icmp counter packets 1 bytes 84 accept iifname "br0" tcp dport { 22, 53 } counter packets 4 bytes 240 accept iifname "br0" udp dport { 53, 67, 68 } counter packets 92 bytes 6658 accept counter packets 2110 bytes 128536 } chain forward { type filter hook forward priority filter; policy drop; iifname "eth0" oifname "br0" ct state { established, related } counter packets 52964 bytes 479878687 accept iifname "br0" oifname "eth0" ct state { established, related, new } counter packets 78017 bytes 54802223 accept counter packets 0 bytes 0 } chain output { type filter hook output priority filter; policy accept; counter packets 1650 bytes 155966 } } table ip nat { chain postrouting { type nat hook postrouting priority srcnat; policy accept; oifname "eth0" counter packets 101 bytes 15882 masquerade } }
Прежде чем менять что-либо в настройках файервола, проверьте его файл конфигурации:
sudo nft -c -f /etc/nftables.conf
Преимуществом nftables перед iptables является возможность перезагружать службу при обновлении набора правил, не разрывая соединения.
sudo systemctl reload nftables.service
Для проверки DHCP-сервера загляните в его журнал и lease-файл:
sudo less /var/lib/misc/dnsmasq.leases sudo journalctl -eu dnsmasq.service
Дополнительные возможности
На этом этапе устройство должно прекрасно работать. Если хотите, есть ещё несколько фишек, которые можно настроить, либо добавить в виде пакетов:
Логирование срабатываний конкретных правил или создание журнала потоков.
VLAN и сегментация.
IPv6.
Переадресация входящего трафика на устройство в DMZ сети.
Удалённый доступ и межсетевое туннелирование через VPN.
Протоколы динамической маршрутизации, IGP, BGP и так далее.
Красота такого решения в его простоте и надёжности. И хотя может возникнуть соблазн установить всяческое ПО прямо на роутер, я так делать не советую. Лучше перенаправлять трафик на устройство в DMZ или VLAN.
Так что в маршрутизатор можно превратить практически всё, что угодно. Попробуйте и вы. Покопайтесь в залежах старого железа — там наверняка найдётся что-то рабочее, из чего вы сможете собрать собственный роутер на свободном ПО.
Комментарии (30)

tbp2k5
05.04.2026 10:49Вы железо вашего "роутера" с 2016 года не обновляли? Если да - поделитесь на что и какие скорости оно теперь может обеспечить.

Zalechi
05.04.2026 10:49Вам, что — 100 метров интернета мало? Не адсл же.. Хотя чего адсл? Вон у меня адсл 120/20 мбит. Италия. Полет отличный. Конечно хочется нормальной оптики, но ничего…

tbp2k5
05.04.2026 10:49Человек быстро привыкает к хорошему. С до-ковидных времен сидел на оптике (что-то типа 200/100) - во франции переход с меди на оптику - что то вроде национальной програмы. С ковидным карантином - оператор бесплатно поднял до 500/500 (реально молодцы). Пару недель тому мой личный роутер (всегда ставлю между домашней сеткой и роутером оператора) сбойнул впервые за многие годы, а я всегда внимательно отношусь к подобным "сигналам"... Прикинул Х к У и решил все проапрейдить. Сейчас оператор предлагает 8000+/8000+. Удивился, не верилось, но после установки - таки да 8200/8100. В процессе, сильно расстроили цены на роутеры с хотя бы парой 10Gbit/s портов. Вот и было интересно что можно получить само-сбором.
А вы, если оптики не предвидеться и есть доступ к чистому небу - присмотритесь к Starlink: 200/100 спокойно держит над Европой и цены вполне доступные.

SkifDS
05.04.2026 10:49Эмм, берем RouterOS от микротов. Накатываем на любой ПК. Прикручиваем trial-лицуху (у которой ограничение только в том, что нельзя накатывать обновы). Все. Нет?

axel_pervoliajnen
05.04.2026 10:49Нет :) еще нужно обернуть в фольгу. Чтоб на случай.. ЭМИ не спалил :)

Taywox
05.04.2026 10:49Так в России не запрещали продажу роутеров! ;)

Zhabrozavr
05.04.2026 10:49«Это среда очень свободная, в высшей степени демократическая. Считаю невозможным ограничивать интернет» - ВВП-2011

longmaster
05.04.2026 10:49Вообще-то в конце 90х - начале 2000х шлюз на обычном x86 железе был практически единственным вариантом, так что в статье изобретён велосипед. Основной осью тогда было bsd-семейство, сам freebsd юзал. С тех пор появился, например, тот же pfsense на базе той же freebsd. Но с веб-мордой и широчайшими возможностями, доступными через эту самую веб-морду. Нафига нужен голый линух, мне совершенно не понятно.

MixaSg
05.04.2026 10:49О да, только хотел посыпать тред старческим песком, а тут уже. Славные были времена, берешь Pentium-200MMX, вставляешь два RTL8139 или 3Com Etherlink, если на богатом, накатываешь Free/NetBSD и вот он, роутер. А после того, как Глеб Смирнов написал ng_netflow и драйвер HDLC для Cronyx TAU-PCI так и вообще никаких преград.

Erop_M
05.04.2026 10:49На богатом — это всегда были циски. Никто с баблишком и в здравом уме никогда не будет роутить серьёзный трафик на неспециализированном железе (я про x86); для этого всегда использовались ASIC/NP. И реалтековская сетевуха никак принципиально не могла помочь. Подешевле — это было железо от Juniper, 3Com (которых потом купила UP), Linksys и прочие D-Link'и с Netgear'ами (но тоже на MIPS).
А п(р)оделки на CISC-архитектуре — это как раз для нищебродов, у которых не было ни трафика серьёзного, ни баблишка на нормальные железки (сам в студенчестве таким занимался)..

alekseypro
05.04.2026 10:49А можно воткнуть в смартфон/планшет USB - Ethernet адаптер и раздавать инет в режиме точки доступа :)

lked
05.04.2026 10:49Собирал похожее на мини-ПК. Кто планирует VPN на таком роутере - обращайте внимание на AES-NI. У меня на ARM без него WireGuard через userspace давал около 250 Мбит, а на x86 с AES-NI — под гигабит.

Belkogoth
05.04.2026 10:49AES-NI тут прям реально отличная тема, благо Штеуд с Амуде внедрили их еще во времена Царя Гороха: с выходом первых Core и "строительной техники" у АМД) Хотя массово - все же с поколений Vishera\Core_gen2 =) Ну и плюс Silvermont на энергоэффективках, что куда более важно, ибо роутер - дерьмо, если на минимальной и средней нагрузках, а тем более в простое, жрет как взрослый ПК, а не роутер)))

Belkogoth
05.04.2026 10:49Зря не упомянули RouterOS, кстати))) Она удобная, ибо это всё-таки коммерческая ос для СЕТЕВЫХ задач, то есть инструменты для управления сетевыми функциями там куда комфортнее организованы. И в Winbox работать намного продуктивнее, чем в консоли, ибо перед глазами можно вывалить сразу несколько активных разделов настроек.
NAS-инструментарий в ROS тоже неплохой, ибо пакет ROSE. Плюс контейнеры завезли, причем между мажорными версиями изменений прям дофига, очень активно работают в этом направлении. Я сам уже контейнерами давно пользуюсь в ROS, она поднята на ITX-плате с пеньком J4205, пашет как файлопомойка с подключенным диском, плюс в контейнерах HASS и Qbittorrent раздает. Правда, я лицензию в итоге купил, но это уже дело десятое, она и на L1 работает достойно.

Zalechi
05.04.2026 10:49Автор оригинала конечно умен, но, — достаточно простого свитча на кол-во портов, которое вам необходимо, сетевая карта с поддержкой вланов. Подключаешь к компу, и там настраиваешь рутинг и прочее.
А то что китайские подделки запретили — правильно сделали. Сколько уже рутеров с дырами на руках у людей — большой вопрос. А сколько в них дыр безопасности….
Статью не читал, ибо первые два абзаца дали мне пищу для комментария

Scank
05.04.2026 10:49При виде таких статей сразу картинка с троллейбусом из буханки всплывает, уж простите :)

sceptizator
05.04.2026 10:49Ну почему же троллейбус. Если проблема шума не стоит (свой дом, гараж или подвал), то вполне рабочий вариант старый компьютер приделать как раутер или контроллер умного дома, пусть потрудится еще. Там даже не так проблема высохших или вздувшихся конденсаторов на плате, как то, что многие современные линуксы отказываются старые процессоры поддерживать, к примеру для RHEL9 нужен минимум x86-64-v2, Nehalem (2008), RHEL10 потребует минимум x86-64-v3, Haswell (2015), иначе просто не запустится инсталлятор.
А прям очень это грустно, выбрасывать старую, служившую верой и правдой еще со студенческих лет материнку на каком 440BX чипсете. Вот и стоит потом в гараже, Windows 2000 со Broodwar раз в год запускает с мужиками по сетке.

sceptizator
05.04.2026 10:491) Древний коммутатор от Cisco или HP Procurve потребляет ватт 150 (до полукиловата по паспорту), и ладно бы стоял как зимний обогреватель, но он и шумит как самолет
2) USB Ethernet адаптер добавляет ощутимые 10мс к пингу и не может вытянуть гигабит (обычно 300..400 мегабит), и годится лишь для веб серфинга
3) USB Wifi еще и слабомощный, в качестве AP можно рассматривать лишь в пределах комнаты
4) Ноутбук, особенно старый - тоже шумит по ночам, даже если нагрузки нет и даже если смазать его новой термопастой. Еще и аккумуляторы старые поди пожароопасные.А так да, любой актуальный Linux можно задействовать как раутер. В сравнении с OpenWrt и уж тем более с "фирменной" прошивкой имеет даже преимущества в части оперативных обновлений безопасности.
Но для обычных пользователей это так-же неприемлемо, как и идея самостоятельного ремонта авто в гараже. А для в линуксах и сетях профи, но в домашних условиях - можно на авито найти бу, главное с OpenWrt совместимый SOHO раутер за 500 рублей, по USB какой SATA на 5ТB туда присовокупить, и вот вам домашний датацентр, и главное - не шумит по ночам.
И даже резервный канал через USB 4G/5G свисток с автоматическим переключением туда, всякие мониторы температуры и влажности и прочий самодельный умный дом без этой вашей алисы, но с collectd. Если с node.js не связываться и дружить с C, то вполне реально все это втиснуть в 256MB оперативки.

rw6hrm
05.04.2026 10:49Почему-то никто про FreeSCO не вспомнил (хотя кому помнить, это только старики с ним работали xD). Обычный первопень с четырьмя сетевухами (одна из них 10 МБит полудуплекс по коаксиалу, ага) обеспечивал инетом три офиса с разделением по подсетям. Плюс подключенный модем, кому надо было подсоединиться по телефонной линии. Это начало Y2K, если что...
Pavel7
Не знаю, как в nix, но в *bsd достаточно смонтировать / в ro, а /var и /tmp вынести в оперативную память (кроме /var/db/pkg)