Приветствую всех читателей Хабра. В этой статье я расскажу как сделать маршрутизатор из компьютера на 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)

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

cheshircat
26.07.2026 10:10Статья какая-то поверхностная.
Основная проблема старого железа - энергопотребление. Сколько этот роутер съест киловатт-часов в простое?
Второй момент скорость маршрутизации. Не увидел тестов. Для 100Mbps нормально, но сможет ли он вытянуть 500Mbps, 1Gbps?

JBFW
26.07.2026 10:10А интернет канал у автора вытянет 500, 1G?
Это просто к тому, что далеко не везде есть необходимость в гигабитных сетевых портах. Толку-то от гигабита, если там какой-нибудь gsm-модем или оптика на 50/100 Мбит...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

MPfromLINUX Автор
26.07.2026 10:10Согласен, всякие N100 ноутбучные для подобных задач лучше всего подходят. Тв бокс на Amlogic S905X тоже хочу прошить на Armbian, но из него хочу почтовый сервер поднять на своем домене.
Lev3250
Нет, я сам немного ненормальный и у меня роутером служит opnsense в виртуалке, но всё таки - зачем? Что такого по итогу решил этот ноут в виде роутера, чего не мог сделать тот хуавей, что стал точкой доступа?
MPfromLINUX Автор
Если настроить, может обходить блокировки, блокать рекламу. Пока что только Filebrwoser в докер контейнере поднял. Вообщем, нужно еще многое настраивать, делать комбайн из него, тогда будет смысл. Это просто основа.