Гигабитный роутер своими руками

Гигабитный роутер своими руками

Не секрет, что энтузиастам достаточно часто не хватает возможностей серийных роутеров (они же маршрутизаторы): то скорость выделенной линии ограничивают, то не справляются с нагрузкой, создаваемой торрентами, а бывает, что и зависают регулярно. При этом, данные проблемы возникают не только у дешевых или безымянных роутеров, но и у множества навороченных роутеров от известных компаний. Вариантов решения данной проблемы масса: можно повозиться с настройками, установить альтернативную прошивку, посоветовавшись с форумами, купить другой роутер и т.д. Однако, самый крутой и радикальный вариант решения данной проблемы это, несомненно, сборка своего роутера ;), благо для этого существует немало специализированных операционных систем на основе Linux и BSD.

У шотландского энтузиаста Geofrancis его навороченный роутер NetGear WNDR3300 серьезно лагал даже на альтернативной прошивке. Попробовав использовать отдельный ПК в качестве роутера, Geofrancis понял, что самодельный роутер на основе ПК — это именно то, что ему нужно. Поскольку роутер предполагается использовать постоянно, то под него желательно взять энергоэффективное железо — Geofrancis выбрал промышленную материнскую плату с интегрированным процессором VIA V4 Eden 1 GHz и двумя сетевыми портами, купленную на аукционе всего за 30 у.е. В качестве основной операционной системы роутера Geofrancis планирует применить надежную и довольно навороченную PFsense, созданную на основе FreeBSD и специально предназначенную для использования в роутера и фаерволах.

Материнская плата, ставшая основой роутера

Глючный NetGear WNDR3300 энтузиаст Geofrancis решил не выбрасывать — так как данный роутер оснащен одновременным двухдиапазонным WiFi, то его было решено оставить для беспроводного подключения разнообразных нетребовательных устройств (вроде смартфонов, планшетов и ноутбуков), а заодно и модифицировать. Так, Geofrancis подрезал печатную плату NetGear’а, для того чтобы он влез в один корпус с материнской платой VIA, и заменил стандартные интегрированные антенны на внешние высокопроизводительные (две антенны для работы в диапазоне 2.4 ГГц и три — для 5 ГГц). Кроме этого, Geofrancis решил добавить к своему роутеру компактный ИБП на 12 вольт, чтобы тот не перезагружался от небольших перебоев в электропитании.

Итоговый внешний вид самодельного роутера

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

N!ck опубликовал заметку 15.04.2013 в категории Новости

Источник

Мощный домашний маршрутизатор своими руками

Хотя в интернет-магазинах есть любое сетевое оборудование, но всё равно найдутся любители сделать всё по-своему. Например, инженер Ник Пегг был очень недоволен ограничениями классического домашнего маршрутизатора WRT54GL с 4 МБ флэш-памяти и слабым ЦПУ. В то же время, будучи весьма стеснённым в средствах, он не мог позволить себе профессиональный маршрутизатор.

Выход нашёлся: собрать устройство своими руками из компьютерных комплектующих, которые найдутся в шкафу или б/у в интернете.

Материнская плата Intel D2500CCE Mini-ITX в стоечном корпусе

Нужно было нечто дешёвое, с низким энергопотреблением и несколькими сетевыми адаптерами.

Свой выбор Ник остановил на материнской плате Mini-ITX, которая идеально подходит для такой задачи. В его случае достаточно было платы с двумя сетевыми разъёмами, но несложно достать такую же плату с большим количеством NIC.

Для беспроводной связи инженер взял адаптер Intel 7260-ac Mini-PCIe, хотя позже сам понял ошибочность такого решения. Из-за специфичной прошивки и драйвера под Linux карта упорно отказывалась работать в диапазоне 5 ГГц.

Карта Intel 7260-ac Mini-PCIe

Задним умом он понял, что лучше использовать карту на чипсете Atheros и с нормальным драйвером. В любом случае, предварительно следует обязательно проверить в интернете, что другим хакерам успешно удалось решить проблему и накатить прошивку OpenWRT.

Читайте также:  Акриловые сумки своими руками

Так или иначе,инструкция Ника Пегга по сетевой настройке и конфигурации оборудования будет очень полезна при попытке реализовать подобный проект.

Источник

Беспроводной машрутизатор своими руками

  1. Выбор комплектующих
  2. Запуск сетевых интерфейсов
  3. Установка точки доступа 802.11ac (5 ГГц)
  4. Настройка виртуального SSID с помощью hostapd

Последние десять лет я покупал дешёвое сетевое оборудование и ставил на него DD-WRT, чтобы вернуть «функции» ценой более $500, удалённые из ядра Linux, на котором основаны стоковые прошивки.

Несмотря на нестабильные сборки, неисправленные ошибки и споры, DD-WRT всё равно предпочтительнее стоковых прошивок. Но сейчас достойные комплектующие дешевле, чем когда-либо, а DIY-сообщество поголовно перешло на Linux (я смотрю на вас, м-р Raspberry), так почему бы не собрать собственный беспроводной маршрутизатор раз и навсегда?

Выбор комплектующих

Первым делом нужно определиться с платформой: x86 или ARM? Не буду подробно обсуждать ключевые различия, но вкратце: у первой лучше производительность, а вторая дешевле и энергоэффективнее. Платы Raspberry Pi (и аналоги) чрезвычайно дёшевы и, вероятно, мощнее большинства беспроводных коммерческих маршрутизаторов, но платформы x86 широко распространены и имеют преимущество за счёт стандартизированных форм-факторов и портов расширения.

Конечно, самая важная деталь — это чипсет. Сегодня стандартами де-факто являются 802.11n (2,4 ГГц) и 802.11ac (5 ГГц), но подобрать драйверы под Linux — та ещё задачка, тем более с поддержкой режима AP (точка доступа). Короче, если не хотите проблем, то выбирайте чипсеты Atheros. Драйверы ath9k и ath10k хорошо поддерживаются, вы легко найдёте их с интерфейсами USB и/или mini-PCIe.

Хотя бы один контроллер сетевого интерфейса (NIC) — необходимый минимум, а RAM и накопитель выбирайте на свой вкус.

Список материалов

Принеся в жертву цену и энергопотребление, я выбрал x86-платформу ради модульной, относительно мощной конфигурации, доступной для апгрейда.

Если вам не нужен ARM, то и вентилятор не обязателен.

  • Gigabyte GA-J1900N-D3V (J1900 четырёхъядерный 2 ГГц Celeron, два NIC)
  • Airetos AEX-QCA9880-NX (двухдиапазонный 802.11ac, MIMO)
  • 4 ГБ RAM (DDR3-LP, 1333 МГц, 1,35 В)
  • Удлинитель mPCIe
  • Корпус MX500 mini-ITX
  • Три двухдиапазонных антенны 6dBi RP-SMA + кабель RP-SMA
  • PicoPSU-90
  • Запасной HDD 2.5”

Корпус просторный, с двумя подготовленными отверстиями для штепсельной вилки AC/DC. Установка материнской платы, RAM и Pico-PSU прошла гладко:


Железячное порно

Самым сложным оказалась установка mini-PCIe WiFi, потому что плата поддерживает только карты половинного размера: здесь на помощь пришёл удлинитель mPCIe. Я взял кабель FFC на 20 см (входит в комплект) для подключения обеих сторон адаптера и закрепил mini-PCIe на шасси с помощью двустороннего скотча.


Расширитель mini-PCIe

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

Программное обеспечение

Понятно, что ставим Linux. В зависимости от оборудования, это может быть оптимизированный дистрибутив вроде Raspbian (для Raspberry Pi) или любой другой дистрибутив Linux, который вам нравится. Поскольку я много лет использую Ubuntu, то выбрал Ubuntu Server 18.04 LTS, с которым мне привычнее работать и которому обеспечена долгосрочная поддержки.

В дальнейшем статья предполагает, что вы используете дистрибутив на базе Debian.

Если установка прошла нормально и вы зашли в консоль, определим имена интерфейсов:

На материнской плате два встроенных NIC: это enp1s0 и enp2s0 . Беспроводная карта отображается как wlp5s0 и поддерживает режим AP, как и предполагалось:

Теперь можем обрисовать, что нам нужно: первый NIC поставим как WAN-порт, а второй соединим с беспроводным интерфейсом:

Если у вас Ubuntu 18.04, то немедленно избавимся от netplan , чтобы вернуться к поддержке /etc/network/interfaces:

В качестве DHCP/DNS-сервера выберем dnsmasq:

Так как мы будем запускать и настраивать процесс dnsmasq через хук post-up , не забудьте отключить демон при загрузке:

Читайте также:  Зонтик сетка своими руками

Напишем предварительную конфигурацию сетевых интерфейсов в соответствии с диаграммой, включая минимальную настройку dnsmasq :

Как вы могли заметить по секции post-up , dnsmasq стартует, как только поднимается мост. Его настройка выполняется только аргументами командной строки ( —conf-file=/dev/null ), и процесс остановится при отключении интерфейса.

В поле bridge_ports специально не указан интерфейс wlp5s0 , потому что hostapd добавит его к мосту автоматически (brctl может отказаться делать это, прежде чем запущен hostapd для изменения режима интерфейса).

Теперь можно перезапустить сеть ( sudo service networking restart ) или просто перезагрузиться, чтобы проверить правильность настройки конфигурации сети.

Обратите внимание: хотя мы в данный момент можем получить DHCP от enp2s0 , но у нас не будет ни беспроводной связи (позже подробнее об этом), ни доступа в интернет (см. ниже).

Маршрутизация

На этом этапе нужно маршрутизировать пакеты между интерфейсами LAN ( enp2s0 ) и WAN ( enp1s0 ) и включить трансляцию сетевых адресов.

Включить переадресацию пакетов легко:

Последняя команда гарантирует, что конфигурация сохранится до следующей перезагрузки.

Трансляция сетевых адресов — другое дело, обычно придётся разбираться (или, скорее, бороться) с iptables . К счастью, каменный век давно закончился, и ребята из FireHol приложили немало усилий, добавив необходимый уровень абстракции:

FireHOL — это язык для защищённого файрвола с сохранением состояния, его конфигурация легко понятна и доступна. Больше не надо писать операторы iptables : конфигурационный файл сам транслируется в операторы iptables и применяется как надо. Никакого демона в фоновом режиме.

Включение трансляции сетевых адресов для интерфейсов локальной сети с добавлением минимальных правил файрвола делается элементарно:

FireHOL написан людьми для людей, документация здесь.

Можете проверить настройки, вручную запустив firehol ( sudo firehol start ) и подключив ноутбук к порту LAN: теперь вы сможете выйти интернет, если подключен порт WAN.

Перед перезагрузкой не забудьте отредактировать /etc/default/firehol , чтобы разрешить запуск FireHol при загрузке:

Не буду вдаваться в детали всего синтаксиса firehol , конфигурационный файл сам себя объясняет, рекомендую обратиться к документации в случае более сложной настройки. Если вам действительно интересно, что firehol сотворил с iptables , просто введите sudo firehol status в командной строке.

Беспроводная точка доступа

Очевидно, управлять точкой доступа будем с помощью hostapd:

Ниже вы найдёте минимальный и почти не требующий пояснений файл конфигурации 802.11 n/2.4 Ghz/WPA2-AES:

Документацию hostpad.conf см. в /usr/share/doc/hostapd/examples/hostapd.conf .

Описанную конфигурацию можно протестировать вручную:

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

Вот ваш окончательный /etc/network/interfaces:

Установка точки доступа 802.11ac (5 ГГц)

Пассивное сканирование

Согласно документации Airetos AEX-QCA9880-NX, чипсет поддерживает 802.11ac, так что мы можем уйти из переполненных каналов 2,4 ГГц в райские 5 ГГц.

Посмотрим, какие частоты поддерживаются:

В приведённом списке видим, что чипсет поддерживает каналы 1−14 (2,4 ГГц) и каналы 36−165 (5 ГГц), но вы заметили флаг no IR ?

Флаг no IR обозначает no-initiating-radiation (то есть пассивное сканирование). Это значит, что данный режим запрещён в случае, когда устройство первым инициирует излучение (включая маяки). Другими словами, нельзя запускать точку доступа на этих каналах!

Нормативные требования

Вышеописанная ситуация объясняется нормативными требованиями Linux, которые регулируют использование радиочастотного спектра в зависимости от страны.

Я живу в США, а по ссылке написано, что я имею право инициировать излучение на каналах 36-48, так в чём дело? Посмотрим, какой домен регулирования используется в данный момент:

Выдача показывает, что сейчас активен мировой домен (или не установлен), то есть минимальные значения, разрешённые в каждой стране.

К сожалению, вручную установить домен sudo iw reg set не получится, потому что домен зашит в EEPROM:

К счастью, нормативные требования обрабатываются на уровне драйвера, так что их можно легко изменить: находим патч в исходниках Open-WRT.

Читайте также:  Замена радиатора отопления лада гранта своими руками

Прежде всего, не забудьте подключить репозиторий исходного кода из /etc/apt/sources.list :

Затем подготовьте окружение, установив необходимые зависимости:

Скачайте источники своего ядра:

Поскольку оригинальный патч Open-WRT нельзя применить «как есть» к дереву ядра Ubuntu из-за тонких различий в системе сборки, пришлось его исправить:

Всё готово для сборки:

Если проблем нет, то теперь можно установить исправленное ядро поверх предыдущего:

Перезагрузка, и вуаля:

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

Конфигурация

Новый файл конфигурации hostapd будет довольно простым: hw_mode=a включает диапазоны 5 ГГц, а ieee80211ac=1 включает 802.11ac (VHT). Опция ieee80211d=1 с указанием country_code=US определяет нормативный домен, под которым мы работаем.

Чтобы максимально использовать пропускную способность, ht_capab и vht_capab должны отражать возможности оборудования:

С учётом этого вот окончательный hostapd.conf :

Документацию hostpad.conf см. в /usr/share/doc/hostapd/examples/hostapd.conf .

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

Настройка виртуального SSID с помощью hostapd

Независимо от того, хотите вы настроить гостевую точку доступа или выделенную беспроводную сеть для своего VPN, в какой-то момент придётся настроить виртуальный SSID.

Диаграмма

Исходя из текущей конфигурации, вот обновлённая диаграмма, что мы хотим получить. Предполагая, что wlp5s0 является физическим беспроводным интерфейсом, виртуальный SSID будет работать на виртуальном интерфейсе wlan0 , используя собственную подсеть 192.168.2.0/24 :

Подготовка

Прежде всего проверим, что ваше беспроводное устройство поддерживает несколько SSID:

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

Сетевой интерфейс

Согласно документации в hostapd.conf, существует строгая связь между MAC-адресом физического интерфейса и BSSID виртуальных интерфейсов:

hostapd will generate a BSSID mask based on the BSSIDs that are configured. hostapd will verify that dev_addr & MASK == dev_addr. If this is not the case, the MAC address of the radio must be changed before starting hostapd. If a BSSID is configured for every secondary BSS, this limitation is not applied at hostapd and other masks may be used if the driver supports them (e.g., swap the locally administered bit)

BSSIDs are assigned in order to each BSS, unless an explicit BSSID is specified using the ‘bssid’ parameter.

If an explicit BSSID is specified, it must be chosen such that it:
— results in a valid MASK that covers it and the dev_addr
— is not the same as the MAC address of the radio
— is not the same as any other explicitly specified BSSID

Чтобы выполнить эти требования и позволить hostapd автоматически назначать BSSID виртуального интерфейса(ов), обновим MAC-адрес физического беспроводного интерфейса, обнулив четыре наименее значимых бита. Этого хватит на 15 виртуальных BSSID — намного больше, чем необходимо.

Сначала определим текущий MAC-адрес:

Если очистить четыре последних бита и установить бит U/L, получится MAC-адрес 46:c3:06:00:03:e0 .

Теперь обновим конфигурацию, чтобы установить правильный MAC-адрес прямо перед загрузкой интерфейса, а также объявить виртуальный беспроводной интерфейс в соответствии с нашей диаграммой:

Отлично. Я использую dnsmasq как DHCP-сервер — не стесняйтесь заменить на то, что вам нравится. Обратите внимание, что для корректной работы виртуального интерфейса требуется allow-hotplug .

Конфигурация точки доступа

Теперь самое простое: добавим виртуальный SSID к текущей конфигурации hostapd . Просто добавьте это в конец существующего файла hostapd.conf :

В приведённом примере я применил шифрование WPA2, но тут доступно большинство опций радиоинтерфейса (например, channel ). Можно добавить больше виртуальных SSID, просто дописав строчки в конфигурационном файле, согласно объявленным и правильно настроенным виртуальным интерфейсам.

Теперь перезагрузимся — и видим свой новый SSID вместе с новым беспроводным интерфейсом (обратите внимание на MAC-адрес):

Источник

Оцените статью