Приветствую всех читателей Хабра. В этой статье я расскажу как сделать маршрутизатор из компьютера на Linux. На самом деле, сделать такой роутер несложно. Для реализации этого проекта подойдет любое устройство на Debian/Ubuntu Server, имеющее парочку сетевых карт и возможность раздавать Wi-Fi. Важно учесть, использует ли ваш провайдер PPPoE, т. к. статья не описывает настройку девайса для работы с этим протоколом. Для чего нужен x86 роутер? У него есть плюс: он может стать полноценным домашним сервером, ведь вы можете запускать другие сервисы на нем, а маршрутизация становится еще одной задачей для относительно мощного x86 железа.

Немного о сервере

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

  • AMD Athlon II X2 250

  • 8 гб DDR3 2 канала

  • ASRock 760GM-GS3

  • SSD SATA 128 гб

  • HDD 500 гб

Хоть он и слаб для повседневных задач, но он мощнее любого домашнего роутера. Однако в таком виде он не заменит домашний маршрутизатор. Ему не хватает как минимум второй сетевой карты и точки доступа Wi-Fi, поэтому я докупил на маркетплейсах:

  • Сетевую карту на чипе Intel I210

  • Роутер Huawei AX1 Lite

Для WAN я взял сетевую карту на чипе Intel I210, ee можно найти по цене менее 1200 рублей. Для Linux она подходит отлично, драйвер в ядре стабильный, заводится из коробки в любом дистрибутиве. Роутер Huawei AX1 Lite за 800 рублей будет переведен в режим моста, то есть станет точкой доступа WI-Fi и коммутатором. Конечно, раздавать Wi-Fi и подключаться по проводу к серверу можно и другими способами, но данный вариант простой и бюджетный, две железки обошлись мне менее чем в 2000 руб. Теперь, сервер может становиться полноценным роутером, осталось только настроить.

Точка доступа

Здесь нет ничего сложного. Нужно лишь подключиться к локальной сети, зайти в настройки роутера, задать имя сети и пароль (для новых роутеров), выставить свои настройки Wi-Fi и выбрать "Режим моста" или "Точка доступа" (зависит от производителя, название может отличаться). Также, необходимо отключить DHCP, ведь IP адресами займется x86 роутер.

Подготовка ОС

Запускаем сервер. Заходим под пользователем root (чтобы не писать sudo каждый раз). Обновляем пакеты:

apt update && apt upgrade

Теперь, установим нужные пакеты. Это утилита для управления файрволом nftables (сама подсистема вшита в ядро) и DHCP сервер dnsmasq:

apt install nftables dnsmasq

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

echo "net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.d/99-routing.conf
sysctl --system

Нужно узнать имена наших интерфейсов. Для WAN я буду использовать Intel I210, для LAN встроенный в плату Realtek. Самый простой способ узнать названия сетевых карт, ввести:

watch -n 1 "ip -br a"

Теперь можно подключить что-нибудь к одной из сетевых карт (WAN/LAN или другой ПК) и смотреть, какой сетевой карте присвоен интерфейс. У меня enp2s0 это I210 (для WAN), а enp3s0 Reltek материнской платы (для LAN).

Настройка /etc/network/interfaces

В /etc/network/interfaces необходимо добавить:

# enp3s0 замените на ваш LAN интерфейс
auto enp3s0
# Задаем статический IP для LAN
iface enp3s0 inet static
	address 192.168.1.1
	netmask 255.255.255.0
# enp2s0 замените на ваш WAN
auto enp2s0
# Позволяем провайдеру выдать IP WAN интерфейсу 
iface enp2s0 inet dhcp

Применяем изменения на лету:

systemctl restart networking.service

NFTables

В NFTables необходимо добавить NAT (подмену IP адресов, необходимо для выхода в Интернет). Здесь все просто: тип inet для всего трафика, тип цепочки nat, хук postrouting (после маршрутизации, непосредственно перед отправкой пакета), приоритет 0 (priority filter), имя интерфейса и маскарадинг. Вот так выглядит рабочий конфиг:

table inet Router {
	chain NAT {
		type nat hook postrouting priority filter; policy accept;
		oifname "enp2s0" masquerade # Замените enp2s0 на ваш WAN интерфейс
	}
}

Конфиг нужно вставить в /etc/nftables.conf. Также, NFTables нужно добавить в автозагрузку:

systemctl enable --now nftables.service

Dnsmasq

Чтобы маршрутизатор мог раздавать IP адреса в локальной сети, необходимо поднять DHCP сервер. Вот мой конфигурационный файл:

interface=enp3s0 # Замените на ваш LAN интерфейс
dhcp-range=192.168.1.50,192.168.1.150,255.255.255.0,12h # Диапозон IP от 50 до 150, маска /24, аренда
dhcp-option=3,192.168.1.1 # Шлюз
dhcp-option=6,192.168.1.1 # DNS сервер локальной сети 
# DNS серверы для самого роутера
server=1.1.1.1
server=8.8.8.8
# Кэш
cache-size=1000

Добавляем DHCP-DNS сервер в автозагрузку:

systemctl enable --now dnsmasq

Заключение

Роутер полностью настроен. Можно подключаться к сети, заданной в настройках точки доступа (в моем случае Huawei AX1 Lite). Вы можете поднять SSH, настроить Zapret или BE4 для обхода блокировок, файловое хранилище, блокировщик рекламы и многое другое. Всем удачи!

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


  1. Lev3250
    26.07.2026 10:10

    Нет, я сам немного ненормальный и у меня роутером служит opnsense в виртуалке, но всё таки - зачем? Что такого по итогу решил этот ноут в виде роутера, чего не мог сделать тот хуавей, что стал точкой доступа?


    1. MPfromLINUX Автор
      26.07.2026 10:10

      Если настроить, может обходить блокировки, блокать рекламу. Пока что только Filebrwoser в докер контейнере поднял. Вообщем, нужно еще многое настраивать, делать комбайн из него, тогда будет смысл. Это просто основа.


  1. gionet
    26.07.2026 10:10

    Мало .. мало! Надо еще прикрутить всякие штуки для обхода DPI , блокировки рекламы и пр. Раз уж вы накатили линуксы, так уж используйте по полной преимущества


  1. cheshircat
    26.07.2026 10:10

    Статья какая-то поверхностная.

    Основная проблема старого железа - энергопотребление. Сколько этот роутер съест киловатт-часов в простое?

    Второй момент скорость маршрутизации. Не увидел тестов. Для 100Mbps нормально, но сможет ли он вытянуть 500Mbps, 1Gbps?


    1. JBFW
      26.07.2026 10:10

      А интернет канал у автора вытянет 500, 1G?

      Это просто к тому, что далеко не везде есть необходимость в гигабитных сетевых портах. Толку-то от гигабита, если там какой-нибудь gsm-модем или оптика на 50/100 Мбит...


      1. DennisP
        26.07.2026 10:10

        Локальный nas никто не отменял. Который в общем-то и напрашивается реализовать силами самого "роутера"


    1. MPfromLINUX Автор
      26.07.2026 10:10

      Сколько ест в ватт-часах замерить достаточно тяжело, в простое 40 вт-ч навскидку. Гигабит вытягивает, Realtek на плате гигабитный, I210 тоже, cat 5e 8 жил. Процессорной мощности для маршрутизации полностью хватает.


    1. Domestomag
      26.07.2026 10:10

      Нат для гигабита он потянет не напрягаясь, скорее всего даже через опенвпн сможет гигабит прокачивать.


      1. korn3r
        26.07.2026 10:10

        у проца aes-ni нету, откуда там гигабит на OpenVPN?


        1. Domestomag
          26.07.2026 10:10

          Брутфорс Ж) Core2Duo E7500 с ddr2 шифрует aes256 со скоростью 150мбайт/с а chacha20-poly1305 все 500.


          1. korn3r
            26.07.2026 10:10

            ну да.... на мегагерцах. и это скорее всего замеры самим openssl чисто по шифрованию. в реальности (на фактическом openvpn соединении) это будет мегабит 100 + забитый под 100% проц.


  1. alexs963
    26.07.2026 10:10

    Для dhcp можно использовать встроенный в systemd:

    # cat 21-home-lan.network
    [Match]
    Name=enp5s0
    
    [Network]
    Address=192.168.0.1/24
    Gateway=192.168.0.1
    DHCPServer=true
    
    [DHCPServer]
    DefaultLeaseTimeSec=259200
    MaxLeaseTimeSec=604800
    PoolOffset=0
    PoolSize=0
    EmitDNS=yes
    DNS=192.168.0.1
    #DNS=8.8.8.8
    EmitNTP=yes
    NTP=192.168.0.1
    EmitRouter=yes
    
    [DHCPv4]
    ClientIdentifier=mac
    
    [DHCPServerStaticLease]
    MACAddress=xx:xx:xx:xx:xx:xx
    Address=192.168.0.200
    


    1. MPfromLINUX Автор
      26.07.2026 10:10

      Спасибо за конфиг, попробую использовать его в своей системе


  1. alexs89
    26.07.2026 10:10

    Круто, но почему не OpenWRT в качестве ОС? Минималистичная система, супер удобная веб морда, гигантский репозиторий софта специально под роутеры, поддержка докера и другие радости Linux.


    1. MPfromLINUX Автор
      26.07.2026 10:10

      Просто, x86 роутер это полноценный домашний сервер. OpenWRT лучше для роутеров, но Debian позволяет без проблем делать сервер на x86 железе. Репозиторий у OpenWRT хороший, но узконаправленный, заточенный для обычных роутреров. А из этого можно сделать домашний комбайн.


      1. DennisP
        26.07.2026 10:10

        Какие функции вы планируете (хотели бы) реализовать в этом комбайне? На первый взгляд многие интересные функции (типа сервера видеонаблюдения с хоть какой-то детекций или immich) просто не потянут на этом железе


        1. MPfromLINUX Автор
          26.07.2026 10:10

          Думаю торрент качалку сделать, а декодирование видео свалю на тв бокс Vontar X3. AdGuard и что-нибудь для обхода блокировок поставлю, Filebrowser уже стоит.


          1. korn3r
            26.07.2026 10:10

            интересно какая загрузка проца будет с торрентами и запретом на таком старичке.


            1. Domestomag
              26.07.2026 10:10

              Околонулевая. Должна быть. Торренты во времена компов 2ядра-2гига процессор не напрягали.


              1. korn3r
                26.07.2026 10:10

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


      1. alexs89
        26.07.2026 10:10

        OpenWRT вполне подходит для домашнего сервера, основной функцией которого является маршрутизация пакетов. Благодаря докеру из любого вычислительного устройства, поддерживающего докер, можно сделать что угодно. Разумеется, на Debian тоже можно реализовать все, что угодно, но у OpenWRT роутерная часть настраивается значительно проще и без дополнительных пакетов.


  1. little-brother
    26.07.2026 10:10

    Альтернативой этому системнику может быть прошитая TV-коробка под Armbian. Проц и памяти там за глаза, электричество почти не ест. Из существенных минусов: первый - есть только один порт Ethernet и тот зачастую сотка, а второй - диски можно подключить только через USB-переходник. Теоретически есть аппаратное декодирование для медиа-сервера, но на практике, думаю, будет работать так себе.

    Для совмещенного устройства роутера/NAS самый простым вариантом видится плата на N100.


    1. MPfromLINUX Автор
      26.07.2026 10:10

      Согласен, всякие N100 ноутбучные для подобных задач лучше всего подходят. Тв бокс на Amlogic S905X тоже хочу прошить на Armbian, но из него хочу почтовый сервер поднять на своем домене.