Благодаря открытой ОС Linux что угодно можно превратить в маршрутизатор: старый ноутбук, мини-ПК, ненужный десктоп, который собрались выкинуть. Вносим небольшие изменения в конфигурацию сети — и старый девайс получит новую функциональность:

Полгода назад мы публиковали перевод на эту тему. Американский разработчик оказался настолько шокирован запретом правительства на импорт роутеров потребительского сегмента, что решил самостоятельно собрать аналогичное устройство. Как он выразился, собрать роутер можно из чего угодно, что хоть отдалённо называется компьютером.
Маршрутизатор из любого устройства
Некоторым людям кажется, что маршрутизатор и компьютер — это разные вещи. Наверное, потому что опыт работы с командной строкой на сетевом оборудовании отличается от опыта работы на ПК. Но на самом деле разницы практически нет, просто на ПК мы обычно работаем с файлами и папками, а в маршрутизаторе — с процессами. Команды и цели взаимодействия сильно отличаются.
Но в принципе это стандартный Linux-компьютер и там, и там. Можно сделать роутер из старого мини-ПК...

...или ноутбука:

Нужное железо (тоже старое) можно докупить на барахолке за копейки, при этом функциональность самодельного Linux-маршрутизатора с программной точки зрения будет как у самого навороченного роутера. Его можно программировать как угодно и устанавливать любой софт: торрент-клиент, медиасервер для раздачи фильмов по сети и др.
Это маршрутизатор «на стероидах» с функциональностью домашнего мини-сервера. При этом он ещё блокирует рекламные домены, телеметрию и прочий мусор.
Маршрутизатор из ноутбука
Предположим, у нас в наличии старый ноутбук под Debian 13. Как сделать из него умный маршрутизатор с блокировкой рекламы и другими интеллектуальными функциями?

Конечно, Debian 13 позволяет запустить точку доступа без всяких ручных настроек, как и почти любой смартфон. Но нас интересует не эта ограниченная функциональность, а полнофункциональный маршрутизатор, к которому можно подключиться по Ethernet и который может обрабатывать пакеты. Для этого нужно настраивать Linux вручную.
С программной точки зрения любое Linux-устройство можно сделать частью сетевой инфраструктуры, если настроить ядро для пропуска сетевого трафика. Требуется всего семь изменений в конфигурации.
Некоторые из изменений также описаны в вышеупомянутой статье «Как превратить в маршрутизатор что угодно» и в других статьях на Хабре (раз, два, три).
1. Включить IP-форвардинг (ip_forward=1)
Чтобы активировать обработку и пересылку пакетов в ядре Linux, начинаем с сетевых функций в ядре. В каждом Android-устройстве с функцией точки доступа сделаны те же изменения.
Путешествие пакета начинается с внешнего интерфейса. Сетевая карта (NIC) сигнализирует о прерывании, драйвер извлекает фрейм в кольцевой буфер памяти через DMA, где аппаратное обеспечение записывает данные в RAM без участия CPU. Сетевой стек ядра забирает оттуда пакет, удаляет заголовок Ethernet и проверяет IP-адрес назначения.
В этот момент ядро обращается к своей таблице маршрутизации. Если адрес назначения совпадает с одним из интерфейсов машины, пакет поднимается по сетевому стеку к процессу, ожидающему его обработки. Если адрес назначения не соответствует ни одному локальному интерфейсу и IP-маршрутизация отключена, ядро сбрасывает пакет и увеличивает счётчик в /proc/net/snmp.
Если мы хотим включить маршрутизацию, то нужно внести изменения в систему, чтобы ядро могло передать пакет на другой хост.
Настройки IP-форвардинга находятся в файле /etc/sysctl.d/10-forward.conf. Вносим туда одно изменение:
# /etc/sysctl.d/10-forward.conf net.ipv4.ip_forward=1

Чтобы применить настройку без перезагрузки, выполняем команду sudo sysctl --system.
/etc/sysctl.d/ — конфигурация параметров ядра в рантайме. Во время загрузки системы systemd-sysctl.service читает все conf-файлы отсюда (плюс /etc/sysctl.conf) и записывает все параметры в соответствующие пути /proc/sys/.
Точечная нотация в коде выше — это просто перевод пути, то есть net.ipv4.ip_forward соответствует /proc/sys/net/ipv4/ip_forward. Запись 1 сообщает стеку IPv4 не отбрасывать пакеты с нелокальными адресами, а отправлять их через хук FORWARD.
Запись 1 в sysctl.d/10-forward.conf делает это изменение постоянным при каждой перезагрузке. Значение можно проверить в любой момент:
cat /proc/sys/net/ipv4/ip_forward

2. Прописать мост. Объединяем два интерфейса в один сегмент
Домашняя сеть обслуживает проводных и беспроводных клиентов в одной подсети. Конфигурация создаёт сетевой мост br0 и подключает к нему eth1 (второй порт с переходника USB-Ethernet) и wlan0 в качестве портов-участников. В нашей конструкции будет WAN (встроенный Ethernet, eth0), LAN (мост br0 из USB-Ethernet, eth1) и Wi-Fi (wlan0). Для более подробной информации см. документацию по мостам в ядре Linux.
Это важно для маршрутизации, потому что ядро назначает IP-адреса интерфейсам, а не физическим портам. Если интерфейсу br0 назначили адрес 192.168.0.1, то у маршрутизатора единственный адрес LAN, независимо от того, подключён клиент проводным или беспроводным способом. Оба интерфейса передают трафик в одной подсети и общаются на уровне 2 без необходимости маршрутизации между ними.
В десктопном Debian лучше использовать консольную утилиту nmcli (NetworkManager), см. неофициальную инструкцию.

Например, следующая команда создаёт мост br0:
sudo nmcli con add ifname br0 type bridge con-name br0

Потом можно назначить мосту IP-адрес:
sudo nmcli con modify br0 ipv4.method manual ipv4.addresses 192.168.0.1/24
После создания моста нужно добавить в него интерфейсы (например, второй проводной порт eth1). Примерно таким образом:
# Добавляем проводной порт локальной сети в мост sudo nmcli con add type bridge-slave ifname eth1 master br0 con-name br0-eth1 # Поднимаем мост sudo nmcli con up br0
Для более удобной настройки есть смысл использовать утилиту NetworkManager (nmtui) с визуальным текстовым интерфейсом:
sudo apt-get install network-manager sudo nmtui

В дальнейшем мы будем управлять wlan0 через hostapd, так что Wi-Fi попадёт в мост потом через параметр bridge=br0 в hostapd.conf.
Чтобы NetworkManager не перехватывал Wi-Fi-интерфейс у hostapd, отключаем его управление:
sudo nmcli device set wlan0 managed no
3. Активация политик nftables: установка хуков
Теперь нужно определить правила обработки пакетов nftables в Netfilter.
Netfilter — это общая система фильтрации пакетов на уровне ядра, которая предоставляет точки подключения к сетевому стеку, а nftables (через nf_tables) — современный движок классификации пакетов, работающий поверх этих точек подключения. Он заменил iptables в качестве предпочтительного интерфейса.
Установка nftables:
sudo apt install nftables sudo systemctl enable --now nftables
Правила файрвола и NAT прописываются в /etc/nftables.conf. Вот фрагмент цепочки forward внутри table:
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 }
В этой настройке точки доступа br0 — мост для локальной сети, который агрегирует трафик от проводных клиентов и беспроводных клиентов, управляемых hostapd. Два правила в цепочке FORWARD напрямую соответствуют двум направлениям потока трафика через маршрутизатор. Правило 1: от WAN к LAN (обратный и связанный трафик) и правило 2: от LAN к WAN (исходящий трафик). Это позволяет клиентам LAN свободно устанавливать соединения с интернетом, но из интернета невозможно инициировать соединения внутрь сети — классическая схема.
В конце стоит счётчик для остальных пакетов, которые не соответствуют ни одному из вышеуказанных правил (и, следовательно, будут отброшены). Полезно для мониторинга.
Более подробно о настройках Netfilter читайте здесь.
4. Подсистема conntrack
Правила ct state { established, related } и ct state { new, established, related } выше ссылаются на conntrack, подсистему отслеживания соединений ядра.
Устанавливаем программу conntrack для диагностики:
sudo apt-get install conntrack

Conntrack отслеживает трафик, проходящий через Netfilter, и ведёт таблицу активных потоков.
5. Политики NAT и Masquerade
Теперь нужно определить правила, изменяющие адреса отправителя в пакетах на хосте.
В домашних сетях используется частное адресное пространство в диапазонах 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16. В публичном интернете нет маршрутов ни к одному из этих диапазонов. В каждом пакете из локальной сети нужно заменить исходный адрес на публичный IP-адрес маршрутизатора, иначе хост никогда не получит ответы из интернета.
Эту функцию выполняет цепочка postrouting на хуке POSTROUTING:
chain postrouting { type nat hook postrouting priority 100; policy accept; oifname "eth0" counter masquerade }
Все кортежи (tuple), то есть сочетания «частный IP, частный порт, публичный IP, публичный порт, протокол» хранятся в таблице conntrack на протяжении всего времени соединения, их можно просмотреть напрямую:
sudo conntrack -L

Старые потоки устаревают, и conntrack удаляет их записи, что является ключевым механизмом для предотвращения неограниченного роста таблицы NAT. Соединения TCP истекают после закрытия сессии или после настраиваемого периода бездействия. Для UDP действуют более короткие таймеры.
6. DHCP и DNS
Каждое устройство в локальной сети должно знать свой IP-адрес, маску подсети, шлюз в интернет и адрес DNS-сервера. Инструмент Dnsmasq создан для домашних сетей и небольших клиентов — как раз наш случай. Он широко используется на смартфонах и точках доступа, а также для поддержки виртуальных сетей. Dnsmasq включён в большинство дистрибутивов Linux, а также встроен в NetworkManager, который мы использовали ранее.
NetworkManager выполняет функции DHCP-сервера и DNS. Он запускает собственный экземпляр dnsmasq и динамически управляет конфигурацией по мере подключения и отключения интерфейсов.

7. Демон hostapd для раздачи Wi-Fi
Демон hostapd нужен для работы точек доступа и аутентификации. В Debian 13 он бывает замаскирован (masked), то есть systemd регистрирует службу, но блокирует её запуск, чтобы предотвратить запуск неконфигурированной открытой сети.
Ограничение снимается командой systemctl unmask hostapd. Если пакета нет в системе, его нужно установить, а потом разблокировать:
sudo apt install hostapd sudo systemctl unmask hostapd

Перед запуском нужно проверить, что в файле /etc/hostapd/hostapd.conf заданы корректные настройки (интерфейс, SSID, пароль и параметр bridge=br0).
Затем команда sudo systemctl enable --now hostapd запускает демон и регистрирует его для будущих загрузок:

Блокировка рекламы через Pi-hole
Для блокировки рекламы, трекеров и телеметрии на самодельном Linux-маршрутизаторе применяется DNS-фильтрация (DNS Sinkhole). Вместо Dnsmasq можно развернуть полноценный Pi-hole (или AdGuard Home) в Docker-контейнере или настроить блокировку напрямую через уже запущенный Dnsmasq.
Pi-hole предоставляет удобный веб-интерфейс, графики, гибкие белые/чёрные списки и автоматически обновляемые базы рекламных доменов. Инструкция по установке здесь.
Запуск скрипта для установки:
curl -sSL https://install.pi-hole.net | bash
Скрипт запускает автоматический инсталлятор:

По окончании работы инсталлятора генерируется пароль для админки:

Панель администратора сразу доступна на http://192.168.0.112:80/admin:

По окончании установки нужно будет настроить dnsmasq как клиент Pi-hole или отключить его и использовать Pi-hole как единственный DNS.
Итого
Итогом всех этих изменений является работающий x86-маршрутизатор на базе ноутбука с блокировкой рекламы. Как мы уже упоминали, ноутбук ещё удобно использовать как домашний мини-сервер для скачивания торрентов, раздачи контента по сети, веб-хостинга и др. Маршрутизатор ведь работает 24/7 и всегда в онлайне. Только нужно продумать вопросы безопасности и изоляции сервисов, а ещё как защитить батарею ноутбука (через настройки энергопитания), чтобы она не вздулась от постоянной работы.
© 2026 ООО «МТ ФИНАНС»
Комментарии (18)

sbanger3000
09.11.2026 08:22серьезно? нет слов просто. уже бегу покупать на барахолке не китайский роутер за копейки под шитье опенврт, а древний ноутбук на селероне, юсб2 сетевые адаптеры... автор явно этот высер ллмки в жизни не повторял (и был абсолютно прав).

dlinyj
09.11.2026 08:22Что мешает накатить OpenWRT на ноутбук? Тут скорее присоединяюсь к сарказму, больше технический вопрос.

longmaster
09.11.2026 08:22Роутеры на каком попало железе x86 я собирал 25 лет назад на базе тогда FreeBSD 2.2.6. Linux в то время из под стола уже вышел, но был далёк от мэйнстрима. Тогда весьма впечатлило после WinNT, что у операционки в ядре поддержка широчайшей номенклатуруры железа и не нужны никакие пляски с
бубномдрайверами.Сейчас как-то странно видеть предложения поднять роутер на Линухе и рулить им из командной строки. Есть pfsense. На базе всё той же FreeBSD. Практически весь функционал бесплатный, за исключением специфичных фич для корпоративного использования. С минимальными системными требованиями, разве что на 32-битном железе придётся устаревшую версию использовать. Ну так и в Linux не за горами отказ от этой поддержки. Рулится всё из веб-морды. При моих достаточно сложных запросах мне пришлось залезть в командную строку один раз, и то тот случай уже не актуален. Интерфейс попроще ROS при этом. Переезд на другое железо в несколько кликов. А при использовании древнего металлолома это актуально. Разве что современный зоопарк всяких специфичных прокси/впнов штатно не поддерживается. Но это и задачка специфичная. Решается, например, туннелем через какой-нибудь Linux, а управление клиентами и маршрутизацией остаётся в pfsense.

balamutang
09.11.2026 08:22ну еще можно добавить и openwrt который точно также можно накатить на тот же х86, вплоть до того что держать его на загрузочной флешке

DGG
09.11.2026 08:22С минимальными системными требованиями, разве что на 32-битном железе придётся устаревшую версию использовать.
А за этим можно смотреть в сторону такого дистрибутива Линукс как OpenWRT. Там 32bit для x86 в последних версиях есть аж в трёх видах (686+, 586+ и для Geode). И скорее всего долго ещё выкидывать не будут.
Веб-морда в наличии. Для домашнего роутера функционала достаточно. Зоопарк впнок подлерживает более менее. С поддержкой WiFi получше чем в BSDях. (Но такой роутер на x86 от которого нужен WiFi как основная функция - так себе идея вне зависимости от ОС, по "железным" причинам)

longmaster
09.11.2026 08:22Да, OpenWRT тоже вариант. На тот момент, когда я выбирал решение, у меня было принципиальное требование - полноценная балансировка двух WAN. В ROS тогда этого не было, OpenWRT как-то мимо меня прошёл, даже не рассматривал. Сдул пыль со старого системника и вперёд. Сейчас балансировка есть и в ROS и в OpenWRT, но я ничуть не жалею о выборе PFsense, попутно он закрывает ещё кучку задач разной сложности, удобен, ставится с полпинка. Так или иначе, уж точно даже есть выбор разных систем, чтобы не заниматься конфигурированием *nix-системы из консоли.

nojecom
09.11.2026 08:22У меня тоже ноутбук в качестве роутера. Использую systemd-networkd, iwd и adguardhome

dimka511
09.11.2026 08:22Мне кажется удобнее установить просто openwrt или установить proxmox и в нём контейнер с openwrt
Чем париться с ручной настройкой

kryak
09.11.2026 08:22При цене современного китайского роутера с поддержкой вообще всех перечисленных функций в 4к рублей, статья выглядит как бред сумасшедшего. А что более вероятно, бред ЛЛМ

zgwerby
09.11.2026 08:22Было актуально годах в 10х, до ~15-16 года, когда вместо массового тогда хлама, зукселей (в качестве представителей нехлама) и уже полупрофессиональных роутеров китайцы начали собирать недорогой, но нормальный (поддерживаемый owrt) не-совсем-хлам с нормальным железом, мощные коробчонки-с-интернетом подороже, но не по стоимости полупрофных убиквити. Да и микротики выкатили нормальные, но дешевые hAP'ы для дома.
Сейчас такой ПК куда как лучше утилизировать в качестве домашнего NAS'а - особенно если кузов сам по себе большой, сварен из стальных почтибронелистов с краской-неубивайкой, с большой корзиной для дисков; SATA выходов на матери много (а если мало, то недорогие PCIe to SATA в помощь) - воткнул, настроил и используй, много там не надо.

ptr128
09.11.2026 08:22Проблема в том, что на старых ноутах только стомегабитка, что в нынешних реалиях очень мало. С учётом того, что можно накатить OpenWRT на роутер десятилетнего возраста с гигабитными портами, смысла в старом ноуте в качестве роутера немного.

b1ora
09.11.2026 08:22Что только не сделаешь, чтобы не покупать нормальный роутер.
Тот же MikroTik на ARM64 умеет в контейнеры, а значит неограниченные возможности.
OpenWRT умеет в пакеты на любой вкус
Keenetic/Netcraze умеет тоже что-то через пакеты.
sav13
100 мегабитный Ethernet, WiFi 802.11g/n на 2.4ГГц
И много много настроек в консоли
Так себе стероиды для 2026 года, когда любой китайский роутер может на порядок больше за 5 минут настроек
vvz
Кто мешает взять ноут с 1гбит и 5ГГц WiFi?
Принцип построения не изменится
randomsimplenumber
Если пришли гости, а в доме нет роутера, пошлите человека в погреб (ц)
Из найденного в погребе всегда можно смастерить какой то троллейбус.
sav13
Да чего уж мелочиться - сразу MacBook Pro в качестве роутера
И совершенно верно, принцип настройки не изменится - вместо простого WEB-интерфейса, заточенного на построение сети много команд из консоли.