Домашній маршрутизатор - gentoo wiki

Створення власного маршрутизатора зі старих компонентів має масу переваг в порівнянні з покупкою вже зібраного і запечатаного на заводі (Linksys, D-Link, Netgear і т.д.). Найбільша перевага, безумовно, є контроль над з'єднанням. Решта переваги можна залишити на призначене для користувача уяву. Можна зробити буквально все що завгодно; справа лише в тому, чи дійсно це потрібно.

Перед початком, ознайомтеся зі списком основних вимог:

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

У керівництві використовуються наступні застереження:

важливо
Задля вашої безпеки рекомендується зупинити всі непотрібні сервіси на маршрутизаторі, поки міжмережевий екран не запущений. Для відображення поточних запущених сервісів, просто виконайте rc-status.

Налаштування ядра (спочатку пізнай себе)

Ядру необхідні драйвери для обох мережевих плат, встановлених в комп'ютері. Можливо, мережеві плати вже налаштовані - щоб перевірити це, використовуйте ifconfig. Висновок може трохи відрізнятися прикладу нижче, нічого страшного. Найголовніше, чи присутній інтерфейс в списку.

root # ifconfig -a

eth0 Link encap: Ethernet HWaddr 00: 60: F5: 07: 07: B8

eth1 Link encap: Ethernet HWaddr 00: 60: F5: 07: 07: B9

Interrupt: 10 Base address: 0x9400

Якщо видно тільки одна (або жодної) з двох карт, то спробуйте запустити lspci | grep Ethernet.

замітка
Утиліта lspci частина пакета sys-apps / pciutils і може бути встановлена ​​запуском команди emerge sys-apps / pciutils.

Після того, як марка (і) / модель (і) NIC (ів) були отримані, налаштуйте ядро ​​з підтримкою відповідних драйверів. Для отримання додаткової інформації про налаштування ядра дивіться посібник з конфігурації ядра.

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

Ядро Включення необхідних мережевих параметрів

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

Ядро Мережеві опції

замітка
В інтерфейсі menuconfig дещо може трохи відрізнятися в новіших ядрах, однак не складно з'ясувати в чому відмінність. Успіхів!

Ближче до WAN (він же Інтернет)

Існує багато способів з'єднання з інтернетом, однак, як правило, лише кілька способів широко використовуються. ADSL (PPPoE) і кабельними модемами (статичними / динамічними) це два поширені методи надання інтернету, які використовують ISP. Якщо є інші способи, не соромтеся написати їх у цій вікі статті. Пропускайте будь-який з розділів цієї глави, який не відноситься до справи. Ця глава розглядається підключення маршрутизатора до Інтернету через плату eth1.

ADSL і PPPoE

замініть і в прикладі нижче за необхідне ім'ям користувача і паролем:

Файл /etc/conf.d/netІспользовать adsl через eth1 для ppp0

root # ln -s net.lo /etc/init.d/net.ppp0

root # rc-update add net.ppp0 default

root # service net.ppp0 start

попередження
Якщо користувачі переходять з пакета net-dialup / rp-pppoe. або пощастило зіткнутися з дивними обривами з'єднання, дивіться розділ MTU на чолі та усунення несправностей нижче.

Провідний динамічний / статичний IP

Користувачі з динамічним IP:

root # emerge --ask net-misc / dhcpcd

Користувачі зі статичним IP:

Файл /etc/resolv.confДобавляем інформацію про DNS

Як для динамічного, так і для статичного варіанту:

root # ln -s net.lo /etc/init.d/net.eth1

root # rc-update add net.eth1 default

root # service net.eth1 start

Після змін вище система повинна бути готова до продовження.

Налаштування LAN (наведемо своїх друзів)

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

Коли створюєте Wi-Fi точку доступу, переконайтеся що Wi-Fi карта підтримує master mode і налаштуйте Hostapd.

root # rc-update add net.eth0 default

root # service net.eth0 start

Сервіси LAN (ми ж хороші хлопці)

DHCP-сервер

Було б чудово, якщо будь-хто в домі просто б міг підключити свої комп'ютери до мережі, після чого все відразу б запрацювало. Без необхідності пам'ятати збивають з пантелику дані, або змушувати витріщатися на заплутані вікна настройки. Життя було б прекрасна, чи не так? Зустрітися з протоколом динамічної настройки вузла (DHCP), і з тим, чому про нього дійсно варто подбати.

DHCP - річ, відповідна своїй назві. Це протокол, який дозволяє настроїти інші вузли автоматично, прямо під час роботи. Запустіть DHCP-сервер на маршрутизаторі, забезпечивши його даними про мережі (правильні IP, DNS-сервера, шлюзи і т. П.), І як тільки інші комп'ютери включаються, вони запускають DHCP-клиен. щоб автоматично налаштуватися. Ні турбот, ні клопоту! Щоб отримати додаткові відомості про DHCP завжди можна звернутися до статті про DHCP на Вікіпедії.

root # emerge --ask net-dns / dnsmasq

root # rc-update add dnsmasq default

root # service dnsmasq start

Налаштувати інтерфейс дуже важлива. Використання параметрів за замовчуванням в dnsmasq відкриє маршрутизатор для DNS amplification атак, які можуть привести до того що провайдер надішле вам страшне електронного листа. Переконайтеся, що маршрутизатор не схильний до DNS amplification атакам за допомогою [1].

DNS-сервер

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

Завжди можна вибрати інші DNS-сервера, якщо вони більш зручні в настройки. dnsmasq використовується в цій статті, тому що він був розроблений щоб робити саме те, що потрібно в цій статті. Це маленький кешуючий / перенаправляє DNS-сервер для локальних мереж. Керівництво не містить пояснень як підняти DNS на власному домені; а просто надає простий DNS-сервіс для кожного користувача в домашньої локальної мережі.

NAT (або IP-маськарадінг)

На даному етапі люди в мережі можуть спілкуватися один з одним, і можуть переглядати імена вузлів через DNS, але до сих пір не в змозі з'єднатися з інтернетом. Поки мережевий адміністратор (людина, що читає це) думає, що все круто (побільше пропускної здатності для Адміністратора!), Інші користувачі, ймовірно, не дуже щасливі без інтернету.

замітка
Перед тим як почати, переконайтеся, що iptables був встановлений в системі. Якщо він не встановлений, то встановіть його: emerge iptables.

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

root # iptables -F

root # iptables -t nat -F

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

Прикольні речі (для дощового дня)

Чи вірите, чи ні, але все зроблено! У цьому розділі будуть розглянуті деякі інші загальні теми, які можуть зацікавити. Читання за все, що міститься в цьому розділі, не обов'язково.

Іноді користувачам необхідно розмістити деякі сервіси на комп'ютерах за маршрутизатором, або необхідна можливість віддалено підключатися до комп'ютера за маршрутизатором. Можливо, FTP, HTTP, SSH, або сервер VNC потрібно на одному або декількох комп'ютерах за маршрутизатором і аутсайдерами потрібно підключаться до них всім. Єдине обмеження Port Forwarding - тільки одна послуга / машина може бути встановлена ​​для кожного порту. Наприклад, немає ніякого нормального способу налаштувати три FTP-сервера за маршрутизатором і підключатися до них всім через 21 порт; тільки одна система може перебувати на порту 21, а решта повинні бути на інших портах (наприклад, порти 123 і 567).

root # export LAN = eth0

root # export WAN = eth1

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

root # iptables -t nat -A PREROUTING -p tcp --dport 2 -i $ -j DNAT --to 192.168.0.2:22

DHCP не починається

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

root # service dhcp start

Фокус в тому, щоб знати, куди dhcpd направляє висновок. Перейдіть в / var / log і прочитайте файли журналів. Якщо якийсь файл журналу залежить від пакета, який використовується в якості syslog, спробуйте запустити grep -Rl dhcpd / var / log. щоб звузити коло пошуку. Швидше за все, була допущена помилка в файлі конфігурації. Також можна запустити dhcpd -d -f (скорочено debug / foreground). Висновок програми може допомогти в налагодженні помилок.

Неправильне значення MTU

Якщо трапляються дивні помилки (на кшталт неможливості доступу до деяких веб-сторінок, коли інші прекрасно завантажуються), можливо, проблема в Path MTU Discovery. Це можна швидко протестувати за допомогою виконання наступних команд iptables:

root # iptables -A FORWARD -p tcp --tcp-flags SYN, RST SYN -j TCPMSS --clamp-mss-to-pmtu

Це вплине на всі нові з'єднання; поновіть проблемний сайт, щоб перевірити виправлення. У разі, якщо це допоможе, стандартне значення MTU для локальних мереж з з'єднанням 100mbit 1500; це значення також відноситься і до PPPoA. Для з'єднань PPPoE це 1492. Для отримання додаткової інформації, прочитайте главу 15 розділу Linux Advanced Routing Traffic Control HOWTO.

Якщо попередня команда не працює, то спробуйте додати це правило в таблицю mangle. Просто додайте -t mangle в команду.

Неможливо з'єднати два комп'ютери безпосередньо

Якщо (з якої-небудь причини) потрібно безпосередньо з'єднати два комп'ютери, без використання концентратора (хаба) або світча, то швидше за все це не вийде зробити звичайним Ethernet-кабелем, якщо тільки немає мережевої плати з підтримкою Auto MDI / MDI-X (також відоме як "автоопределение"). Також знадобиться перехресний (crossover) кабель для підключення безпосередньо мережевої карти до іншої мережевої карти. На сторінці Wikipedia міститься докладна низкоуровневая інформація.

завершальні замітки

Тут немає завершальних заміток. Якщо є проблеми з цим керівництвом, то або напишіть правильну інформацію до статті, або залиште коротке повідомлення на сторінці обговорення цієї статті з коротким викладом що саме не вірно (англійською мовою, прим. Перекл.). Зрештою хтось прочитає це повідомлення і виправить цю проблему (и). Також можна оформите баг на багтрекер Gentoo (знову ж, англійською мовою, прим. Перекл.). Якщо є деяка інформація, яка може поліпшити цю статтю, то відразу ж включите її до статті! Найгірше, що може статися - вона може бути видалена, якщо не коректна. This article is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Mike Frysinger (vapier)
They are listed here as the Wiki history does not allow for any external attribution. If you edit the Wiki article, please do not add yourself here; your contributions are recorded on the history page.