Home router/ru

В этом документе подробно рассказывается, как превратить старый компьютер с системой Gentoo в маршрутизатор для соединения домашней сети с интернетом.

Введение
Создание собственного маршрутизатора из старых компонентов имеет массу преимуществ по сравнению с покупкой уже собранного и запечатанного на заводе (Linksys, D-Link, Netgear и т.д.). Самое большое преимущество, безусловно, является контроль над соединением. Остальные преимущества можно оставить на пользовательское воображение. Можно сделать буквально все что угодно; дело лишь в том, действительно ли это нужно.

Это руководство рассказывает, как настроить преобразование сетевых адресов (NAT) на пользовательском маршрутизаторе (ядро и iptables), как добавить и настроить распространённые сервисы (вроде системы доменных имён (DNS) с помощью, DHCP с помощью , ADSL с помощью ). Статья завершается более сложными и интересными вещами на которые способен пользовательский маршрутизатор (проброс портов (port forwarding), шейпинг (traffic shaping), прокси/кэширование и т.д.).

Перед началом, пожалуйста ознакомьтесь со списком основных требований:
 * 1) в компьютере должны быть установлены как минимум две сетевые платы (NIC)
 * 2) (необязательно) Wi-Fi-адаптер, поддерживающий master mode (режим точки доступа). Для master mode рекомендуется избегать сетевых плат с функцией bypass (hardware bypass mode), так как для некоторых сетевых адаптеров требуется проприетарный драйвер. Не имея доступа к проприетарному драйверу карта будет оставаться в режиме bypass на постоянной основе и не будет использоваться.
 * 3) будут нужны настройки для соединения с интернетом (такие вещи как IP/DNS/шлюз/имя пользователя/пароль).
 * 4) нужно будет немного свободного времени, и любовь к Gentoo для того, чтобы прочитать эту статью и успешно настроить многофункциональный домашний маршрутизатор.


 * 1) A computer that has at least 2 Network Interface Cards (NICs) installed.
 * 2) The configuration settings for an Internet connection (may include things like IP/DNS/Gateway/username/password).
 * 3) (Optionally) a Wi-Fi card that supports master mode. Master mode is recommended to avoid NICs with a bypass feature since some NICs require proprietary drivers. Without access to the proprietary driver the card will remain in bypass mode permanently and will not be usable.
 * 4) A bit of spare time and Gentoo loving in order to successfully follow this guide and implement a well functioning home router.

В руководстве используются следующие оговорки:


 * eth0 - сетевая плата, подключенная к локальной сети (LAN) или сетевой мост, состоящий из нескольких сетевых карт
 * eth1 - сетевая плата, подключенная к глобальной сети (WAN)
 * LAN использует частную сеть вида 192.168.0.xxx
 * маршрутизатор жестко привязан к IP-адресу 192.168.0.1
 * маршрутизатор работает на ядре Linux 2.4 или 2.6; другие версии ядра не поддерживаются в этом руководстве&#41;.

Настройка ядра (сначала познай себя)
Ядру необходимы драйверы для обеих сетевых плат, установленных в компьютере. Возможно, сетевые платы уже настроены — чтобы проверить это, используйте. Вывод может немного отличаться примера ниже, ничего страшного. Самое главное, присутствует ли интерфейс в списке.

Если видна только одна (или ни одной) из двух карт, то попробуйте запустить.

После того, как марка(и)/модель(и) NIC(ов) были получены, настройте ядро с поддержкой соответствующих драйверов. Для получения дополнительной информации о настройке ядра смотрите руководство по конфигурации ядра.

Далее, необходима поддержка iptables и NAT (а также, по желанию, шейпинга (packet shaping)). Нижеследующий список разделён на всегда необходимое (*), нужное только для ADSL через PPPoE (a), предлагаемое для всех (x), и только для shaping'a (s). Не имеет значения, встраивается ли функцию в ядро, или компилируется как модуль, когда нужна какая-либо функция, нужные модули загружаются автоматически. Более подробную информацию о загрузке модулей можно найти в статье Kernel Modules Guide.

Для работы DHCP необходимо включить следующее, если используется ядро 2.4.x :

Введение
Существует много способов соединения с интернетом, однако, как правило, лишь несколько способов широко используются. ADSL (PPPoE) и кабельными модемами (статическими/динамическими) это два распространенные методы предоставления интернета, которые используют ISP. Если есть другие способы, не стесняйтесь написать их в этой вики статье. Пропускайте любой из разделов этой главы, который не относится к делу. Эта глава рассматривается подключение маршрутизатора к интернету через плату eth1.

ADSL и PPPoE
Всевозможное программное обеспечение PPPoE, которое обеспечивалось пакетом rp-pppoe (Roaring Penguin) было включено в стандартный пакет PPP. Просто выполните для установки PPPoE. Помните, что были необходимы логин и пароль в списке выше? Откройте файл в любимом текстовом редакторе и настройте его соответствующим образом.

Замените  и   в примере ниже необходимым именем пользователя и паролем:

Проводной динамический/статический IP
Если необходим статический IP, то потребуется немного больше информации. Пользователям со статическим IP-адресом потребуются добавить IP, шлюз (gateway) и DNS-сервера.

Пользователи с динамическим IP:

Пользователи со статическим IP:

Как для динамического, так и для статического варианта:

После изменений выше система должна быть готова к продолжению.

Настройка LAN (приведем своих друзей)
Этот шаг очень простой, по сравнению с предыдущим. Чтобы использовать более двух устройств (более одной локальной сети и один для WAN), то Network bridge необходимо будет настроить между всеми сетевыми картами, которые будут использованы для локальной сети. Это позволит иметь несколько сетевых адаптеров, которые должны быть доступны под одним и тем же IP-адресом.

Если необходим сетевой мост, то прочитайте инструкции по настройке сетевого моста. Назовите сетевой мост (по умолчанию br0), а затем замените устройства локальной сети eth0 на br0 в действиях, описанных в этой вики. Если на домашнем маршрутизаторе большое количество сетевых устройств, то, для облегчения администрирования, можно переименовать их с помощью Udev. Настройка моста и переименование устройств не является обязательным, но рекомендуется для большой домашней сети.

Когда создаете Wi-Fi точку доступа, убедитесь что Wi-Fi карта поддерживает master mode и настройте Hostapd.

DHCP-сервер
Было бы отлично, если любой желающий в доме просто бы мог подключить свои компьютеры к сети, после чего всё сразу бы заработало. Без необходимости помнить сбивающие с толку данные, или заставлять пялиться на запутанные окна настройки. Жизнь была бы прекрасна, не так ли? Познакомьтесь с протоколом динамической настройки узла (DHCP), и с тем, почему о нём действительно стоит позаботиться.

DHCP — вещь, соответствующая своему названию. Это протокол, который позволяет настроить другие узлы автоматически, прямо во время работы. Запустите DHCP-сервер на маршрутизаторе, снабдив его данными о сети (правильные IP, сервера DNS, шлюзы и т. п.), и как только другие компьютеры включаются, они запускают DHCP-клиен, чтобы автоматически настроиться. Ни забот, ни хлопот! За дополнительными сведениями о DHCP всегда можно обратиться к статье о DHCP на Википедии.

В этом разделе используется пакет под названием, который включает и DHCP, и DNS сервисы. Сейчас давайте просто сосредоточимся на DHCP. Заметьте, что если нужен другой DHCP-сервер, то можно найти другие примеры в разделе ниже Прикольные вещи. Также, если хотите полазить в настройках DHCP-сервера, то просто почитайте комментарии в файле.

Настроить интерфейс очень важна. Использование параметров по умолчанию в dnsmasq откроет маршрутизатор для DNS amplification атак, которые могут привести к тому что провайдер пришлет вам страшное электронное письмо. Убедитесь, что маршрутизатор не подвержен DNS amplification атакам с помощью.

Теперь маленький маршрутизатор является истинным DHCP-сервером! Врубайте компьютеры, и наблюдайте за работой! В системах Windows возможно потребуется зайти в настройки TCP/IP, и включить параметры «Получить IP-адрес автоматически» и «Получить адрес DNS-сервера автоматически». Иногда изменения не сразу применяются, тогда придётся открыть командную строку и выполнить и. Ладно, хватит про Windows, давайте вернёмся к нашим пингвинам.

DNS-сервер
Когда человек хочет посетить место в интернете, он помнит его название, но не строку страшных цифр. Действительно, что легче запомнить, eBay.com, или 66.135.192.87? Именно в этом замешан DNS. Сервера DNS работают по всему интернету, и когда кто-то хочет посетить eBay.com, эти сервера преобразовывают текст "eBay.com" (что нам понятно) в IP-адрес "66.135.192.87" (что понятно нашим компьютерам). За дополнительными сведениями о DNS можно обратиться к Википедии.

Как только начали использовать dnsmasq как DHCP-сервер, к тому же пакет включает DNS-сервер, то здесь просто больше нечего делать! Маленький маршрутизатор уже обеспечивает DNS для своих DHCP-клиентов. Не должно же быть так всё просто? ;&#41;

Всегда можно выбрать другие DNS-сервера, если они более удобны в настройки. dnsmasq используется в этой статье, потому что он был разработан чтобы делать именно то, что требуется в этой статье. Это маленький кэширующий/перенаправляющий DNS-сервер для локальных сетей. Руководство не содержит объяснений как поднять DNS на собственном домене; а просто предоставляет простой DNS-сервис для каждого пользователя в домашней локальной сети.

NAT (или IP-маскарадинг)
На данном этапе люди в сети могут общаться друг с другом, и могут просматривать имена узлов через DNS, но до сих пор не в состоянии соединиться с интернетом. Пока сетевой администратор (человек, читающий это) думает, что все круто (побольше пропускной способности для Админа!), другие пользователи, вероятно, не очень счастливы без интернета.

Здесь вступает в игру преобразователь сетевых адресов (NAT). NAT - это способ соединения нескольких компьютеров в частной сети к интернету, при малом количестве доступных публичных IP-адресов. Как правило, домашнему пользователю интернета предоставляется 1 IP-адрес от ISP на весь дом, чтобы подключиться к Интернету. NAT — та магия, делающая это возможным. За дополнительной информацией о NAT всегда можно обратиться к Википедии.

После установки iptables очистите правила:

Настройте политику по умолчания для обработки пакетов, которые не подпадают ни под одно правило:

Скопируйте и вставьте следующее:

Далее заблокируйте сервисы, чтобы они были доступны только из локальной сети.

(Необязательно) Разрешите доступ к ssh серверу из WAN:

Отбросьте TCP / UDP пакеты для привилегированных портов:

Наконец, добавьте правила для NAT:

Сообщим ядру, что IP-форвардинг разрешён:

Скажите iptabes демону сохранит настройки, а затем добавьте iptables на уровень запуска default:

Если используется динамический IP-адрес, то необходимо активировать следующее:

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

Опция  полезна для набора по требованию системы или если провайдер выдает динамические адреса. Это работает с проблемой, когда соединение пытается подключиться до того как интернет-интерфейс полностью настроен. Это обеспечивает более гладкой опыт сети для пользователей за маршрутизатором.

Введение
Верите ли, или нет, но все сделано! В этом разделе будут рассмотрены некоторые другие общие темы, которые могут заинтересовать. Чтение всего, что содержится в этом разделе, необязательно.

Переадресация портов (port forwarding)
Иногда пользователям необходимо разместить некоторые сервисы на компьютерах за маршрутизатором, или необходима возможность удаленно подключаться к компьютеру за маршрутизатором. Возможно, FTP, HTTP, SSH, или сервер VNC требуется на одном или нескольких компьютерах за маршрутизатором и аутсайдерами нужно подключатся к ним всем. Единственное ограничение Port Forwarding - только одна услуга/машина может быть установлена для каждого порта. Например, нет никакого нормального способа настроить три FTP-сервера за маршрутизатором и подключаться к ним всем через 21 порт; только одна система может находиться на порту 21, а остальные должны быть на других портах (например, порты 123 и 567).

Все правила переадресации портов имеют вид. К сожалению, iptables не позволяет использовать имена узлов при переадресации портов. При пересылке с внешнего порта на такой же порт внутренней машины можно опустить порт назначения. Смотрите iptables(8) man страницу для получения более подробной информации.

Проброс порта 2 на ssh порт внутреннего хоста:

Проброс FTP порта на внутренний хост:

Проброс HTTP порта на внутренний хост:

Проброс VNC порта на внутренний хост:

Переадресация SAMBA на внутренний хост (избыток портов для охвата Windows):

Проброс портов для Bittorrent:

Проброс портов для eDonkey/eMule:

Поддержка Game Cube Warp Pipe:

Поддержка Playstation 2 Online:

Xbox Live:

Identd (для IRC)
Internet Relay Chat использует ident довольно часто. Теперь, когда IRC-клиенты находятся за маршрутизатором, необходим способ связи с ним для маршрутизатора и клиентов. Для этой цели был создан сервер. Он называется.

Есть несколько других серверов ident в дереве Portage. Другими жизнеспособными вариантами являются и.

Сервер времени
Забота о точности системного времени необходима для поддержки работающей системы. Самый распространенный способ достигнуть этого — использовать Network Time Protocol (NTP), и пакет (который включает в себя как серверную, так и клиентскую реализацию).

У многих запущен ntp-клиент на компьютере. Очевидно, что чем больше пользователей, тем большую нагрузку должны выдерживать ntp-сервера. Однако в случаях, подобных домашней сети, NTP-сервер может быть настроен локально, что может снизить нагрузку на публичные сервера, продолжая при этом обеспечивать точным временем все локальные компьютеры. Тем самым получим еще один бонус: локальные клиенты будут быстрее обновлять время в локальной сети! Настройка проста — просто запустите NTP-сервер на маршрутизаторе, который синхронизирует сам себя с публичными серверами в интернете, при этом передавая время остальным компьютерам в сети. Начните с команды на маршрутизаторе, и отредактируйте файл  как необходимо.

Это позволит использовать NTP-сервер лишь тем NTP-клиентам, IP-адрес которых находится в пределах 192.168.0.xxx.

Теперь запустите и на клиентских компьютерах. На них мы просто запустим NTP-клиент, поэтому настройка будет намного проще.

В файле измените значение переменной   с   на.

Rsync сервер
Если в одной сети под управлением находится несколько ящиков с Gentoo, то не целесообразно каждой машине (синхронизироватся) с удаленными серверами. Создав локальный rsync, сохраните пропускную способность как личную, так и для Gentoo rsync серверов. Процесс настройки относительно прост.

Так как для каждой машины Gentoo требуется rsync, нет необходимости устанавливать его. Измените значения по умолчанию в конфигурационном файле, раскоментируйте раздел , и убедитесь что добавлена опция. Все остальные значения по умолчанию должны быть уже установлены правильно.

Затем сервис должен быть запущен (также добавьте на уровень запуска default).

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

Почтовый сервер
Иногда это приятно запустить Simple Mail Transfer Protocol (SMTP) сервер на маршрутизаторе. Каждый пользователь может иметь свои собственные причины для того, что-бы сделать это, однако плюсом для запуска SMTP на маршрутизаторе является то, что пользователи видят почту, которая отправляется мгновенно и работа по получении/маршрутизации остается на почтовом сервере. Некоторые интернет-провайдеры не разрешают трансляцию почты для учетных записей, которые не являются частью их сети (например, Verizon). Кроме того, может потребоваться дросселирование доставки почты, так что большие вложения не будут задерживать подключения к Интернету.

Убедитесь, что вывод команды правильный:

Отредактируйте и добавьте примерно такую запись в секцию allow:

Когда будете настраивать e-mail на компьютерах в сети, укажите, что сервер SMTP - это 192.168.0.1. Посетите домашнюю страницу netqmail для дополнительной документации об использовании netqmail.

Полнофукциональный сервер DHCP
Ранее был использован dnsmasq, который обеспечивал DHCP сервисом всех DHCP клиентов. Для большинства пользователей с небольшой сетью LAN это прекрасно, но тем не менее может понадобится что-то с более богатыми возможностями. Такой полнофункциональный DHCP сервер предоставляется людьми из ISC, он рассчитан на пользователей, которые жаждут максимума.

В установите значение   равным "eth0".

Это минимальная настройка, необходимая для замены функциональности DHCP, ранее предоставляемой dnsmasq. Функции DHCP в dnsmasq должны быть отключены? Если еще нет, то закоментируйте настройку  в  и перезапустите сервис.

Присоединение другой LAN (или двух, или трёх, или...)
Иногда необходимо соединить маршрутизатор с другой LAN. Может быть необходимо подключить нескольких друзей или отделить разные группы компьютеров. Какая бы ни была причина, добавить в маршрутизатор другие локальные сети довольно просто. В следующих примерах данной статьи предполагается, что новая сеть подключена к третьей сетевой карте.

Сперва настройте сетевой интерфейс. Примените инструкции из этого раздела, но замените  на.

Настройте dnsmasq для обслуживания нового интерфейса. Отредактируйте снова файл и добавьте   в  ; использовать -i несколько раз можно. Далее отредактируйте файл другую строку похожую на строку dhcp-range в этом разделе, заменив   на   и   на. Нет ничего плохого, если будет несколько строк с dhcp-range и interface.

Наконец, проверьте этот раздел и продублируйте правила в которых есть. Чтобы упростить это, создайте другую переменную, например.

Полезные инструменты
Когда возникают проблемы в работе сети, то попробуйте следующие утилиты (все они могут быть найдены в Portage категории net-analyzer):

DHCP не запускается
При первом запуске сценарий init.d для dhcp может завершиться с ошибкой, не предоставив никакой полезной информации.

Фокус в том, чтобы знать, куда dhcpd направляет вывод. Перейдите в и прочитайте файлы журналов. Если какой-то файл журнала зависит от пакета, который используется в качестве syslog, попробуйте запустить, чтобы сузить круг поиска. Скорее всего, была допущена опечатка в конфигурационном файле. Также можно запустить (сокращенно debug / foreground). Вывод программы может помочь в отладке ошибок.

Неправильное значение MTU
Если случаются странные ошибки (вроде невозможности доступа к некоторым веб-страницам, когда остальные прекрасно загружаются), возможно, проблема в Path MTU Discovery. Это можно быстро протестировать с помощью выполнения следующих команд iptables:

Это повлияет на все новые соединения; обновите проблемный сайт, чтобы проверить исправление. В случае, если это поможет, стандартное значение MTU для локальных сетей с соединением 100mbit ; это значение также относится и к PPPoA. Для соединений PPPoE это. Для получения дополнительной информации, прочитайте главу 15 раздела Linux Advanced Routing & Traffic Control HOWTO.

Если предыдущая команда не работает, то попробуйте добавить это правило в таблицу mangle. Просто добавьте  в команду.

Невозможно соединить два компьютера напрямую
Если (по какой-либо причине) нужно напрямую соединить два компьютера, без использования концентратора (хаба) или свитча, то скорее всего это не получится сделать обычным Ethernet-кабелем, если только нет сетевой платы с поддержкой Auto MDI/MDI-X (также известное как "автоопределение"). Также понадобится перекрёстный (crossover) кабель для подключения непосредственно сетевой карты к другой сетевой карте. На странице Wikipedia содержится подробная низкоуровневая информация.

Завершающие заметки
Здесь нет завершающих заметок. Если есть проблемы с этим руководством, то либо напишите правильную информацию в статью, либо оставте короткое сообщение на странице обсуждения этой статьи с кратким изложением что именно не верно (на английском языке, прим. перев.). В конце концов кто-то прочтет это сообщение и исправит эту проблему(ы). Также можно оформите баг на багтрекере Gentoo (опять же, на английском языке, прим. перев.). Если есть некоторая информация, которая может улучшить данную статью, то сразу же включите ее в статью! Самое худшее, что может случиться - она может быть удалена, если не корректна.