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

Маршрутизатор и домашний сервер из старого ноутбука ThinkPad 2012 года
Маршрутизатор и домашний сервер из старого ноутбука ThinkPad 2012 года

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

Маршрутизатор из любого устройства

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

Но в принципе это стандартный Linux-компьютер и там, и там. Можно сделать роутер из старого мини-ПК...

crappy router
Кустарный маршрутизатор из старого мини-ПК на процессоре Celeron 3205U 1,5 ГГц обеспечивает скорость 820–850 Мбит/с по проводу и 300 Мбит/с по Wi-Fi

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

trash router
Ещё один самодельный маршрутизатор. Старый ноутбук ThinkPad T60, сетевая карта PCIe (тоже из хлама), древний коммутатор Cisco 2960 на 100 Мбит/с, роутер D-Link для раздачи Wi-Fi

Нужное железо (тоже старое) можно докупить на барахолке за копейки, при этом функциональность самодельного Linux-маршрутизатора с программной точки зрения будет как у самого навороченного роутера. Его можно программировать как угодно и устанавливать любой софт: торрент-клиент, медиасервер для раздачи фильмов по сети и др.

Это маршрутизатор «на стероидах» с функциональностью домашнего мини-сервера. При этом он ещё блокирует рекламные домены, телеметрию и прочий мусор.

Маршрутизатор из ноутбука

Предположим, у нас в наличии старый ноутбук под Debian 13. Как сделать из него умный маршрутизатор с блокировкой рекламы и другими интеллектуальными функциями?

Debian 13 позволяет запустить точку доступа на ноутбуке без всяких ручных настроек Linux
Debian 13 позволяет запустить точку доступа на ноутбуке без всяких ручных настроек Linux

Конечно, 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
Редактируем файл 10-forward.conf в редакторе Nano
Редактируем файл 10-forward.conf в редакторе Nano

Чтобы применить настройку без перезагрузки, выполняем команду 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
Проверяем значение ip_forward после редактирования файла 10-forward.conf
Проверяем значение ip_forward после редактирования файла 10-forward.conf

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), см. неофициальную инструкцию.

Просмотр всех сетевых подключений с помощью утилиты nmcli
Просмотр всех сетевых подключений с помощью утилиты nmcli

Например, следующая команда создаёт мост br0:

sudo nmcli con add ifname br0 type bridge con-name br0
Мост br0 создан
Мост 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
NetworkManager (nmtui). Здесь можно в визуальном режиме создавать, редактировать и активировать сетевые подключения
NetworkManager (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 и динамически управляет конфигурацией по мере подключения и отключения интерфейсов.

Интеграция активируется указанием dns=dnsmasq в /etc/NetworkManager/NetworkManager.conf
Интеграция активируется указанием dns=dnsmasq в /etc/NetworkManager/NetworkManager.conf

7. Демон hostapd для раздачи Wi-Fi

Демон hostapd нужен для работы точек доступа и аутентификации. В Debian 13 он бывает замаскирован (masked), то есть systemd регистрирует службу, но блокирует её запуск, чтобы предотвратить запуск неконфигурированной открытой сети.

Ограничение снимается командой systemctl unmask hostapd. Если пакета нет в системе, его нужно установить, а потом разблокировать:

sudo apt install hostapd 
sudo systemctl unmask hostapd
Установка пакета hostapd и его активация в системе (unmask)
Установка пакета hostapd и его активация в системе (unmask)

Перед запуском нужно проверить, что в файле /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)


  1. sav13
    09.11.2026 08:22

    100 мегабитный Ethernet, WiFi 802.11g/n на 2.4ГГц

    И много много настроек в консоли

    Так себе стероиды для 2026 года, когда любой китайский роутер может на порядок больше за 5 минут настроек


    1. vvz
      09.11.2026 08:22

      Кто мешает взять ноут с 1гбит и 5ГГц WiFi?

      Принцип построения не изменится


      1. randomsimplenumber
        09.11.2026 08:22

        Если пришли гости, а в доме нет роутера, пошлите человека в погреб (ц)

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


      1. sav13
        09.11.2026 08:22

        Да чего уж мелочиться - сразу MacBook Pro в качестве роутера

        И совершенно верно, принцип настройки не изменится - вместо простого WEB-интерфейса, заточенного на построение сети много команд из консоли.


  1. sbanger3000
    09.11.2026 08:22

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


    1. dlinyj
      09.11.2026 08:22

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


  1. longmaster
    09.11.2026 08:22

    Роутеры на каком попало железе x86 я собирал 25 лет назад на базе тогда FreeBSD 2.2.6. Linux в то время из под стола уже вышел, но был далёк от мэйнстрима. Тогда весьма впечатлило после WinNT, что у операционки в ядре поддержка широчайшей номенклатуруры железа и не нужны никакие пляски с бубном драйверами.

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


    1. balamutang
      09.11.2026 08:22

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


    1. DGG
      09.11.2026 08:22

      С минимальными системными требованиями, разве что на 32-битном железе придётся устаревшую версию использовать.

      А за этим можно смотреть в сторону такого дистрибутива Линукс как OpenWRT. Там 32bit для x86 в последних версиях есть аж в трёх видах (686+, 586+ и для Geode). И скорее всего долго ещё выкидывать не будут.

      Веб-морда в наличии. Для домашнего роутера функционала достаточно. Зоопарк впнок подлерживает более менее. С поддержкой WiFi получше чем в BSDях. (Но такой роутер на x86 от которого нужен WiFi как основная функция - так себе идея вне зависимости от ОС, по "железным" причинам)


      1. longmaster
        09.11.2026 08:22

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


    1. TheRaven
      09.11.2026 08:22

      У pfsense с VPN-ками негусто, но Xray и WireGuard-таки прикрутили.


  1. nojecom
    09.11.2026 08:22

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


  1. dimka511
    09.11.2026 08:22

    Мне кажется удобнее установить просто openwrt или установить proxmox и в нём контейнер с openwrt

    Чем париться с ручной настройкой


  1. kryak
    09.11.2026 08:22

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


  1. zgwerby
    09.11.2026 08:22

    Было актуально годах в 10х, до ~15-16 года, когда вместо массового тогда хлама, зукселей (в качестве представителей нехлама) и уже полупрофессиональных роутеров китайцы начали собирать недорогой, но нормальный (поддерживаемый owrt) не-совсем-хлам с нормальным железом, мощные коробчонки-с-интернетом подороже, но не по стоимости полупрофных убиквити. Да и микротики выкатили нормальные, но дешевые hAP'ы для дома.

    Сейчас такой ПК куда как лучше утилизировать в качестве домашнего NAS'а - особенно если кузов сам по себе большой, сварен из стальных почтибронелистов с краской-неубивайкой, с большой корзиной для дисков; SATA выходов на матери много (а если мало, то недорогие PCIe to SATA в помощь) - воткнул, настроил и используй, много там не надо.


  1. ptr128
    09.11.2026 08:22

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


  1. vmcore
    09.11.2026 08:22

    "можно, но зачем" (c)


  1. b1ora
    09.11.2026 08:22

    Что только не сделаешь, чтобы не покупать нормальный роутер.

    Тот же MikroTik на ARM64 умеет в контейнеры, а значит неограниченные возможности.

    OpenWRT умеет в пакеты на любой вкус

    Keenetic/Netcraze умеет тоже что-то через пакеты.