Как превратить любой ПК в роутер на Linux
Пошаговое руководство: настраиваем iptables, DHCP, DNS и NAT на обычном ПК с двумя сетевыми картами. Превращаем Linux-машину в полноценный роутер за 30 минут.
Перевод-адаптация статьи How to turn anything into a router Ника Бэйли.
Правительство США анонсировало политику, фактически запрещающую импорт новых потребительских роутеров. Но оказывается, роутер можно собрать буквально из любого компьютера. Автор оригинальной статьи использует мини-ПК на Linux в качестве домашнего роутера уже несколько лет: ни одного серьёзного сбоя, единственная замена — дешёвый mSATA-диск.
Мини-ПК, настольный компьютер, одноплатник, стоечный сервер, старый ноутбук — подойдёт всё, что запускает Linux и имеет пару USB-портов. В этой статье разберём полную настройку на Debian: от выбора железа до правил firewall.
Ключевые тезисы
— Роутер — это обычный компьютер с Linux, двумя сетевыми интерфейсами и несколькими пакетами.
— Для сборки хватит мини-ПК, старого ноутбука или одноплатника с USB-Ethernet-адаптером.
— Всё ПО — hostapd, dnsmasq, bridge-utils — входит в стандартные репозитории Debian.
— Настройка занимает около часа и не требует глубоких знаний сетей.
Выбор железа
Идеальный вариант — компактный пассивно охлаждаемый мини-ПК. Однако подойдёт практически что угодно. Главное условие: два Ethernet-интерфейса. Если у устройства только один — выручит обычный USB-Ethernet-адаптер. Это чуть менее надёжно, чем встроенный порт, но для домашней сети вполне достаточно.
Пример из практики автора: мини-ПК на Celeron 3205U (два ядра, 1,5 ГГц) без проблем выдаёт 820–850 Мбит/с по кабелю и около 300 Мбит/с по Wi-Fi. Даже такой скромный процессор с запасом тянет трафик целого дома или небольшого офиса.
Для совсем экстремальных случаев: в 2016 году автор собрал роутер из ThinkPad T60 (подобранного на мусорке), ExpressCard-PCIe-моста, безымянной Ethernet-карты и свитча Cisco 2960 за $10. Выглядело как куча хлама — но работало.
Архитектура сети
После настройки интерфейсы распределяются так: eth0 — WAN (внешняя сеть, интернет), eth1 — проводная LAN, wlan0 — Wi-Fi LAN.
eth1 и wlan0 объединяются в мост br0 — проводные и беспроводные устройства оказываются в одной сети. Нужно больше портов? Просто добавьте USB-Ethernet-адаптеры и включите их в мост.
Используемое ПО: hostapd для Wi-Fi точки доступа, dnsmasq для DHCP и DNS, bridge-utils для объединения портов. Статья покрывает только IPv4 — IPv6 в домашней LAN по-прежнему создаёт больше проблем, чем решает.
Установка Debian
Установка стандартная, но стоит учесть несколько нюансов:
- В BIOS отключить PXE-загрузку по сети
- Выставить минимальную частоту процессора, но отключить power management для USB и PCI-устройств
- Включить опцию «Restore after AC Power Loss» — роутер должен запускаться сам после отключения питания
- Если устройство не стартует без монитора — вставить HDMI-заглушку (dummy dongle)
- Включить репозиторий non-free-firmware — большинство Wi-Fi-адаптеров без него не работает
После базовой установки доставьте прошивку для своего Wi-Fi-адаптера. Для Intel:
Для Realtek:
Для совсем старого железа (Atheros и подобные):
Установка пакетов
Три пакета — это всё необходимое. Итого около 250 пакетов на системе:
Переименование сетевых интерфейсов
В современном Linux интерфейсы называются по физическому расположению: например, enp0s31f6. Чтобы не запутаться, зафиксируем привычные имена eth0, eth1 через systemd.network.
Для каждого сетевого интерфейса создайте файл /etc/systemd/network/10-persistent-ethX.link (где X — номер интерфейса):
MAC-адреса своих интерфейсов узнайте командой ip link show. Создайте по одному такому файлу для каждого Ethernet-порта.
Настройка Wi-Fi через hostapd
USB-Wi-Fi-адаптер будет работать как точка доступа. Это не заменит выделенный AP-девайс по качеству сигнала, но в небольшом помещении работает вполне приемлемо. Если Wi-Fi критичен — лучше подключить к LAN-порту старый роутер в режиме точки доступа.
Создайте конфиг /etc/hostapd/hostapd.conf:
По умолчанию служба hostapd замаскирована (masked). Размаскируйте и запустите:
Настройка сетевых интерфейсов
eth0 — внешний интерфейс (WAN, получает IP по DHCP от провайдера). br0 — внутренний мост с фиксированным адресом. Обратите внимание: у LAN-интерфейса нет шлюза по умолчанию.
Файл /etc/network/interfaces:
После этого перезагрузите устройство. Если сеть не поднялась, проверьте ошибки:
При успешной настройке вывод команды должен быть таким:
IP Forwarding
Без IP forwarding роутер не будет пробрасывать пакеты между интерфейсами. Создайте файл /etc/sysctl.d/10-forward.conf:
Примените изменения:
Настройка firewall через nftables
Правила firewall и NAT управляются через nftables — современную замену iptables. Конфиг /etc/nftables.conf:
Этот конфиг делает три вещи: включает NAT (masquerade), блокирует весь входящий трафик извне и разрешает роутеру работать как DNS, DHCP и SSH-сервер для локальной сети.
Включите nftables при загрузке:
Перед изменением правил всегда проверяйте конфиг на валидность:
В отличие от устаревшего iptables, nftables позволяет перезагружать правила без разрыва соединений:
DHCP и DNS через dnsmasq
dnsmasq — компактная альтернатива паре isc-dhcp-server + bind9. Конфиг элементарный. Создайте /etc/dnsmasq.conf:
DHCP-диапазон: 192.168.1.50 — 192.168.1.250, аренда на 6 часов. Адреса 192.168.1.2 — 192.168.1.49 остаются для статических назначений.
Бонус: последовательный порт (Serial/UART)
Если на устройстве есть последовательный порт — настройте UART-консоль. В enterprise-оборудовании это стандарт, но для домашнего роутера тоже удобно: управляйте без монитора и клавиатуры через USB-UART-адаптер.
В файле /etc/default/grub добавьте или замените строки:
Активируйте getty на последовательном порту, обновите GRUB и перезагрузите:
Проверка работы
После настройки перезагрузите устройство дважды — убедитесь, что всё поднимается стабильно. Проверьте состояние firewall и счётчики трафика:
Ненулевые счётчики в цепочках forward и postrouting означают, что трафик проходит через роутер. Проверьте DHCP-аренды:
Что ещё можно добавить
Базовая конфигурация работает как полноценный домашний роутер. При желании её можно расширить:
- VLAN и сегментация сети
- VPN (удалённый доступ и site-to-site туннели)
- Динамическая маршрутизация: IGP, BGP
- IDS/IPS (обнаружение и предотвращение вторжений)
- Логирование отдельных правил и flow logs
- Проброс портов в DMZ
- IPv6
- Мониторинг в реальном времени
- Фильтрация и блокировка трафика
Важное правило: не устанавливайте много дополнительного ПО прямо на роутер. Лучше выделить отдельную машину в DMZ или VLAN и пробрасывать на неё трафик. Роутер должен оставаться простым и надёжным.
Частые вопросы
Подойдёт ли Raspberry Pi или другой одноплатник?
Да, подойдёт. Raspberry Pi 4 и 5 вполне справляются с ролью роутера. Из минусов — один встроенный Ethernet-порт, поэтому второй интерфейс придётся добавлять через USB. Для небольшой квартиры производительности хватит, но не ждите гигабитных скоростей через USB-адаптер.
Почему Debian, а не OpenWRT или pfSense?
OpenWRT и pfSense — отличные решения для сетевых задач, но они требуют специфических знаний. Debian позволяет использовать те же инструменты, что и на любом другом Linux-сервере: знакомый пакетный менеджер, systemd, стандартные конфиги. Это удобнее для тех, кто уже работает с Debian/Ubuntu в других задачах.
Как добавить больше устройств в локальную сеть?
Если нужно больше проводных портов — подключите к LAN-порту обычный неуправляемый свитч. Если нужно лучше Wi-Fi — подключите к LAN-порту старый роутер в режиме точки доступа (через LAN-порт, не WAN). Несколько USB-Ethernet-адаптеров тоже можно включить в мост br0.
Что делать, если роутер не поднимается после перезагрузки?
Первый шаг — проверить журнал сетевой службы: journalctl -e -u networking.service. Частые причины: неверные MAC-адреса в файлах переименования интерфейсов, опечатка в /etc/network/interfaces, или hostapd не нашёл нужную прошивку Wi-Fi-адаптера. Перезагружайте дважды — иногда первый старт занимает чуть больше времени.
Итого
Роутер — это просто компьютер с Linux, двумя сетевыми интерфейсами и тремя пакетами. Ничего магического в потребительских роутерах нет: они тоже работают под управлением Linux (обычно урезанным), просто с удобным веб-интерфейсом поверх.
Мини-ПК на базе Celeron или Atom стоит $30–60 на вторичном рынке, потребляет 5–10 Вт и работает годами без обслуживания. Это надёжнее, гибче и дешевле большинства потребительских роутеров — а заодно отличный способ разобраться, как на самом деле работает сеть.