Я не особо люблю освещать «текущие события», но правительство США на днях заявило о введении реально шокирующего запрета на импорт роутеров потребительского сегмента. Это идиотский запрет по целому ряду причин, но если он действительно начнёт работать, то навык сборки «самопального» роутера может оказаться весьма кстати.

К счастью, вы можете собрать его из практически всего, что можно хоть в какой-то степени назвать компьютером.

Лично я долгие годы использовал в качестве роутера мини-ПК под управлением Linux и даже писал о том, как собирать такие и настраивать файервол. Он был крайне стабилен, и единственной проблемой, с которой я за все эти годы столкнулся, был износ накопителя mSATA ценой в $20. И хотя обычно я пользуюсь DebianAlpine наверняка сработает не хуже, а может и лучше, если вы с этим дистрибутивом знакомы. Самое главное, чтобы устройство работало под Linux и имело пару USB-портов. Подойдёт всё, что угодно, будь то мини-ПК, настольный, одноплатник, рэковый сервер, старый ноутбук или какое-то самодельное устройство.

Честно говоря, такое решение нельзя назвать эффективной мерой против нового закона США. Это лишь способ показать интересный «хак», который вы можете применить, чтобы выжать из своего железа больше возможностей. Плюс это доказывает, что в роутерах нет ничего особенного — в конце концов это просто компьютеры.

Выбор железа

Я лично предпочитаю специализированные мини-ПК с пассивным охлаждением.

proper router
Подобающий роутер

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

 

crappy router
Отстойный роутер

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

Но вернёмся ещё дальше в прошлое. Вот мой сетап, собранный в начале осеннего учебного семестра 2016 года:

trash router
Трэшовый роутер

По фото сложно понять, что тут к чему, поэтому поясню:

  • 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

Дополнительные возможности

На этом этапе устройство должно прекрасно работать. Если хотите, есть ещё несколько фишек, которые можно настроить, либо добавить в виде пакетов:

Красота такого решения в его простоте и надёжности. И хотя может возникнуть соблазн установить всяческое ПО прямо на роутер, я так делать не советую. Лучше перенаправлять трафик на устройство в DMZ или VLAN.

Так что в маршрутизатор можно превратить практически всё, что угодно. Попробуйте и вы. Покопайтесь в залежах старого железа — там наверняка найдётся что-то рабочее, из чего вы сможете собрать собственный роутер на свободном ПО. 

Комментарии (30)


  1. Pavel7
    05.04.2026 10:49

    износ накопителя mSATA ценой в $20

    Не знаю, как в nix, но в *bsd достаточно смонтировать / в ro, а /var и /tmp вынести в оперативную память (кроме /var/db/pkg)


  1. tbp2k5
    05.04.2026 10:49

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


    1. numark
      05.04.2026 10:49

      Это перевод.


      1. tbp2k5
        05.04.2026 10:49

        Спасибо. Не досмотрел.


    1. Zalechi
      05.04.2026 10:49

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


      1. tbp2k5
        05.04.2026 10:49

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

        А вы, если оптики не предвидеться и есть доступ к чистому небу - присмотритесь к Starlink: 200/100 спокойно держит над Европой и цены вполне доступные.


  1. SkifDS
    05.04.2026 10:49

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


    1. dimsoft
      05.04.2026 10:49

      HCL по сетевым там ограниченый, часть мусора не запустится.


    1. nitro80
      05.04.2026 10:49

      Либо тот же openwrt


    1. longmaster
      05.04.2026 10:49

      Или pfsense. Там вообще нет ограничений


    1. axel_pervoliajnen
      05.04.2026 10:49

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


  1. Taywox
    05.04.2026 10:49

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


    1. NotSlow
      05.04.2026 10:49

      вы находитесь здесь (с)


    1. Zhabrozavr
      05.04.2026 10:49

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


  1. longmaster
    05.04.2026 10:49

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


    1. MixaSg
      05.04.2026 10:49

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


      1. Telmah
        05.04.2026 10:49

        После “накатываешь Free/NetBSD” ещё был шаг по сборке нового ядра, потому как стандартное не умело в ipfw и прочие нат


        1. MixaSg
          05.04.2026 10:49

          Да, про ядро соглашусь, к тому же надо было убрать лишние драйвера, чтоб поменьше весило.


      1. Erop_M
        05.04.2026 10:49

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

        А п(р)оделки на CISC-архитектуре — это как раз для нищебродов, у которых не было ни трафика серьёзного, ни баблишка на нормальные железки (сам в студенчестве таким занимался)..


        1. LF69ssop
          05.04.2026 10:49

          Вы не поняли что прочитали среагировав на знакомое слово.


          1. Erop_M
            05.04.2026 10:49

            Хорошо, что вы поняли, что я не понял..


  1. alekseypro
    05.04.2026 10:49

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


  1. lked
    05.04.2026 10:49

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


    1. Belkogoth
      05.04.2026 10:49

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


  1. Belkogoth
    05.04.2026 10:49

    Зря не упомянули RouterOS, кстати))) Она удобная, ибо это всё-таки коммерческая ос для СЕТЕВЫХ задач, то есть инструменты для управления сетевыми функциями там куда комфортнее организованы. И в Winbox работать намного продуктивнее, чем в консоли, ибо перед глазами можно вывалить сразу несколько активных разделов настроек.

    NAS-инструментарий в ROS тоже неплохой, ибо пакет ROSE. Плюс контейнеры завезли, причем между мажорными версиями изменений прям дофига, очень активно работают в этом направлении. Я сам уже контейнерами давно пользуюсь в ROS, она поднята на ITX-плате с пеньком J4205, пашет как файлопомойка с подключенным диском, плюс в контейнерах HASS и Qbittorrent раздает. Правда, я лицензию в итоге купил, но это уже дело десятое, она и на L1 работает достойно.


  1. Zalechi
    05.04.2026 10:49

    Автор оригинала конечно умен, но, — достаточно простого свитча на кол-во портов, которое вам необходимо, сетевая карта с поддержкой вланов. Подключаешь к компу, и там настраиваешь рутинг и прочее.

    А то что китайские подделки запретили — правильно сделали. Сколько уже рутеров с дырами на руках у людей — большой вопрос. А сколько в них дыр безопасности….

    Статью не читал, ибо первые два абзаца дали мне пищу для комментария


  1. Scank
    05.04.2026 10:49

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


    1. sceptizator
      05.04.2026 10:49

      Ну почему же троллейбус. Если проблема шума не стоит (свой дом, гараж или подвал), то вполне рабочий вариант старый компьютер приделать как раутер или контроллер умного дома, пусть потрудится еще. Там даже не так проблема высохших или вздувшихся конденсаторов на плате, как то, что многие современные линуксы отказываются старые процессоры поддерживать, к примеру для RHEL9 нужен минимум x86-64-v2, Nehalem (2008), RHEL10 потребует минимум x86-64-v3, Haswell (2015), иначе просто не запустится инсталлятор.


      А прям очень это грустно, выбрасывать старую, служившую верой и правдой еще со студенческих лет материнку на каком 440BX чипсете. Вот и стоит потом в гараже, Windows 2000 со Broodwar раз в год запускает с мужиками по сетке.


  1. sceptizator
    05.04.2026 10:49

    1) Древний коммутатор от 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 оперативки.


  1. rw6hrm
    05.04.2026 10:49

    Почему-то никто про FreeSCO не вспомнил (хотя кому помнить, это только старики с ним работали xD). Обычный первопень с четырьмя сетевухами (одна из них 10 МБит полудуплекс по коаксиалу, ага) обеспечивал инетом три офиса с разделением по подсетям. Плюс подключенный модем, кому надо было подсоединиться по телефонной линии. Это начало Y2K, если что...