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, то и вентилятор не обязателен.


Корпус просторный, с двумя подготовленными отверстиями для штепсельной вилки 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.

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

$ ip -br a | awk '{print $1}'
lo
enp1s0
enp2s0
wlp5s0

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

$ iw list
...
Supported interface modes:
                 * managed
                 * AP
                 * AP/VLAN
                 * monitor
                 * mesh point

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



Сеть


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

$ sudo apt-get install ifupdown bridge-utils
$ sudo systemctl stop networkd-dispatcher
$ sudo systemctl disable networkd-dispatcher
$ sudo systemctl mask networkd-dispatcher
$ sudo apt-get purge nplan netplan.io

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

$ sudo apt-get install dnsmasq

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

$ sudo sed -i "s/^ENABLED=1$/ENABLED=0/g" /etc/default/dnsmasq

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

$ cat /etc/network/interfaces
# Loopback
auto lo
iface lo inet loopback
# WAN interface
auto enp1s0
iface enp1s0 inet dhcp
# Bridge (LAN)
auto br0 
iface br0 inet static
    address 192.168.1.1
    network 192.168.1.0
    netmask 255.255.255.0
    broadcast 192.168.1.255 
    bridge_ports enp2s0
    post-up /usr/sbin/dnsmasq               --pid-file=/var/run/dnsmasq.$IFACE.pid               --dhcp-leasefile=/var/lib/misc/dnsmasq.$IFACE.leases               --conf-file=/dev/null               --interface=$IFACE --except-interface=lo \ 
              --bind-interfaces               --dhcp-range=192.168.1.10,192.168.1.150,24h               
    pre-down cat /var/run/dnsmasq.$IFACE.pid | xargs kill

Документация /etc/network/interfaces здесь

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

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

См. документацию по dnsmasq.

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

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

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


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

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

$ sudo sysctl -w net.ipv4.ip_forward=1
$ echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf

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

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

$ sudo apt-get install firehol

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

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

$ cat /etc/firehol/firehol.conf 
version 6
# Accept all client traffic on WAN
interface enp1s0 wan
    client all accept
# Accept all traffic on LAN
interface br0 lan
    server all accept
    client all accept
# Route packets between LAN and WAN
router lan2wan inface br0 outface enp1s0
    masquerade
    route all accept

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

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

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

$ sudo sed -i -E "s/^START_FIREHOL=.+$/START_FIREHOL=YES/g" /etc/default/firehol

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

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


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

$ sudo apt-get install hostapd

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

$ cat /etc/hostapd/hostapd-simple.conf 
#### Interface configuration ####
interface=wlp5s0
bridge=br0
driver=nl80211
##### IEEE 802.11 related configuration #####
ssid=iCanHearYouHavingSex
hw_mode=g
channel=1
auth_algs=1
wmm_enabled=1
##### IEEE 802.11n related configuration #####
ieee80211n=1
##### WPA/IEEE 802.11i configuration #####
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=YouCantGuess

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

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

$ sudo hostapd /etc/hostapd/hostapd-simple.conf

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

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

$ cat /etc/network/interfaces
# Loopback
auto lo
iface lo inet loopback
# WAN interface
auto enp1s0
iface enp1s0 inet dhcp
# Bridge (LAN)
auto br0 
iface br0 inet static
    address 192.168.1.1
    network 192.168.1.0
    netmask 255.255.255.0
    broadcast 192.168.1.255 
    bridge_ports enp2s0
    post-up /usr/sbin/hostapd               -P /var/run/hostapd.$IFACE.pid               -B /etc/hostapd/hostapd-simple.conf
    post-up /usr/sbin/dnsmasq               --pid-file=/var/run/dnsmasq.$IFACE.pid               --dhcp-leasefile=/var/lib/misc/dnsmasq.$IFACE.leases               --conf-file=/dev/null               --interface=$IFACE --except-interface=lo \ 
              --bind-interfaces               --dhcp-range=192.168.1.10,192.168.1.150,24h               
    pre-down cat /var/run/dnsmasq.$IFACE.pid | xargs kill
    pre-down cat /var/run/hostapd.$IFACE.pid | xargs kill

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


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


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

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

$ iw list
        ...
        Frequencies:
            * 2412 MHz [1] (20.0 dBm)
            * 2417 MHz [2] (20.0 dBm)
            * 2422 MHz [3] (20.0 dBm)
            * 2427 MHz [4] (20.0 dBm)
            * 2432 MHz [5] (20.0 dBm)
            * 2437 MHz [6] (20.0 dBm)
            * 2442 MHz [7] (20.0 dBm)
            * 2447 MHz [8] (20.0 dBm)
            * 2452 MHz [9] (20.0 dBm)
            * 2457 MHz [10] (20.0 dBm)
            * 2462 MHz [11] (20.0 dBm)
            * 2467 MHz [12] (disabled)
            * 2472 MHz [13] (disabled)
            * 2484 MHz [14] (disabled)
        ...
        Frequencies:
            * 5180 MHz [36] (17.0 dBm) (no IR)
            * 5200 MHz [40] (17.0 dBm) (no IR)
            * 5220 MHz [44] (17.0 dBm) (no IR)
            * 5240 MHz [48] (17.0 dBm) (no IR)
            * 5260 MHz [52] (23.0 dBm) (no IR, radar detection)
            * 5280 MHz [56] (23.0 dBm) (no IR, radar detection)
            * 5300 MHz [60] (23.0 dBm) (no IR, radar detection)
            * 5320 MHz [64] (23.0 dBm) (no IR, radar detection)
            * 5500 MHz [100] (23.0 dBm) (no IR, radar detection)
            * 5520 MHz [104] (23.0 dBm) (no IR, radar detection)
            * 5540 MHz [108] (23.0 dBm) (no IR, radar detection)
            * 5560 MHz [112] (23.0 dBm) (no IR, radar detection)
            * 5580 MHz [116] (23.0 dBm) (no IR, radar detection)
            * 5600 MHz [120] (23.0 dBm) (no IR, radar detection)
            * 5620 MHz [124] (23.0 dBm) (no IR, radar detection)
            * 5640 MHz [128] (23.0 dBm) (no IR, radar detection)
            * 5660 MHz [132] (23.0 dBm) (no IR, radar detection)
            * 5680 MHz [136] (23.0 dBm) (no IR, radar detection)
            * 5700 MHz [140] (23.0 dBm) (no IR, radar detection)
            * 5720 MHz [144] (23.0 dBm) (no IR, radar detection)
            * 5745 MHz [149] (30.0 dBm) (no IR)
            * 5765 MHz [153] (30.0 dBm) (no IR)
            * 5785 MHz [157] (30.0 dBm) (no IR)
            * 5805 MHz [161] (30.0 dBm) (no IR)
            * 5825 MHz [165] (30.0 dBm) (no IR)
       ...

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

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



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


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

Но погодите!

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

$ iw reg get
country 00: DFS-UNSET
        (2402 - 2472 @ 40), (N/A, 20), (N/A)
        (2457 - 2482 @ 40), (N/A, 20), (N/A), NO-IR
        (2474 - 2494 @ 20), (N/A, 20), (N/A), NO-OFDM, NO-IR
        (5170 - 5250 @ 80), (N/A, 20), (N/A), NO-IR
        (5250 - 5330 @ 80), (N/A, 20), (0 ms), DFS, NO-IR
        (5490 - 5730 @ 160), (N/A, 20), (0 ms), DFS, NO-IR
        (5735 - 5835 @ 80), (N/A, 20), (N/A), NO-IR
        (57240 - 63720 @ 2160), (N/A, 0), (N/A)

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

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

$ dmesg | grep EEPROM
[   12.123068] ath: EEPROM regdomain: 0x6c



Патч!


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

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

$ cat /etc/apt/sources.list
...
deb-src http://us.archive.ubuntu.com/ubuntu/ bionic main restricted 
...

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

$ sudo apt-get install build-essential fakeroot
$ sudo apt-get build-dep linux

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

$ apt-get source linux

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

$ VERSION=$(uname -r)
$ cd linux-${VERSION%%-*}
$ wget -O - https://gist.github.com/renaudcerrato/02de8b2e8dc013bc71326defd2ef062c/raw/a2db325e520e6442c8c12f7599d64ac1b7596a3e/402-ath_regd_optional.patch | patch -p1 -b

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

$ fakeroot debian/rules clean
$ fakeroot debian/rules binary-generic

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

$ cd ..
$ sudo dpkg -i linux*.deb

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

$ sudo iw reg set US
$ iw list
...
      Frequencies:
          * 5180 MHz [36] (17.0 dBm)
          * 5200 MHz [40] (17.0 dBm)
          * 5220 MHz [44] (17.0 dBm)
          * 5240 MHz [48] (17.0 dBm)
          * 5260 MHz [52] (23.0 dBm) (radar detection)
          * 5280 MHz [56] (23.0 dBm) (radar detection)
          * 5300 MHz [60] (23.0 dBm) (radar detection)
          * 5320 MHz [64] (23.0 dBm) (radar detection)
          * 5500 MHz [100] (23.0 dBm) (radar detection)
          * 5520 MHz [104] (23.0 dBm) (radar detection)
          * 5540 MHz [108] (23.0 dBm) (radar detection)
          * 5560 MHz [112] (23.0 dBm) (radar detection)
          * 5580 MHz [116] (23.0 dBm) (radar detection)
          * 5600 MHz [120] (23.0 dBm) (radar detection)
          * 5620 MHz [124] (23.0 dBm) (radar detection)
          * 5640 MHz [128] (23.0 dBm) (radar detection)
          * 5660 MHz [132] (23.0 dBm) (radar detection)
          * 5680 MHz [136] (23.0 dBm) (radar detection)
          * 5700 MHz [140] (23.0 dBm) (radar detection)
          * 5720 MHz [144] (23.0 dBm) (radar detection)
          * 5745 MHz [149] (30.0 dBm)
          * 5765 MHz [153] (30.0 dBm)
          * 5785 MHz [157] (30.0 dBm)
          * 5805 MHz [161] (30.0 dBm)
          * 5825 MHz [165] (30.0 dBm)
...

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

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


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

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

$ iw list
...
    Band 1:
      Capabilities: 0x19e3
              RX LDPC
              HT20/HT40
              Static SM Power Save
              RX HT20 SGI
              RX HT40 SGI
              TX STBC
              RX STBC 1-stream
              Max AMSDU length: 7935 bytes
              DSSS/CCK HT40
...
    Band 2:
      VHT Capabilities (0x338001b2):
              Max MPDU length: 11454
              Supported Channel Width: neither 160 nor 80+80
              RX LDPC
              short GI (80 MHz)
              TX STBC
              RX antenna pattern consistency
              TX antenna pattern consistency

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

$ cat /etc/hostapd/hostapd.conf
#### Interface configuration ####
interface=wlp5s0
bridge=br0
driver=nl80211
##### IEEE 802.11 related configuration #####
ssid=iCanHearYouHavingSex
hw_mode=a
channel=0
auth_algs=1
wmm_enabled=1
country_code=US
ieee80211d=1
ieee80211h=0
##### IEEE 802.11n related configuration #####
ieee80211n=1
ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40][TX-STBC][RX-STBC1][DSSS_CK-40][LDPC][MAX-AMSDU-7935]
##### IEEE 802.11ac related configuration #####
ieee80211ac=1
vht_capab=[MAX-MPDU-11454][RXLDPC][SHORT-GI-80][TX-STBC-2BY1][RX-STBC-1][MAX-A-MPDU-LEN-EXP7][TX-ANTENNA-PATTERN][RX-ANTENNA-PATTERN]
vht_oper_chwidth=1
##### WPA/IEEE 802.11i configuration #####
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=YouCantGuess

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

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

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


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

Диаграмма


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



Подготовка


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

$ iw list
    ...
    valid interface combinations:
    * #{ AP, mesh point } <= 8,
    total <= 8, #channels <= 1, STA/AP BI must match
    ...

Как видим, чипсет поддерживает до восьми точек доступа на одном канале. Это означает, что можно настроить до семи виртуальных 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-адрес:

$ ip addr show wlp5s0 | grep link | awk '{print $2}'
44:c3:06:00:03:eb

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

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

$ cat /etc/network/interfaces
...
# Physical Wireless
auto wlp5s0
iface wlp5s0 inet manual
    pre-up ip link set dev wlp5s0 address 46:c3:06:00:03:e0
# Virtual Wireless
allow-hotplug wlan0
iface wlan0 inet static
    address 192.168.2.1
    network 192.168.2.0
    netmask 255.255.255.0
    broadcast 192.168.2.255
    post-up /usr/sbin/dnsmasq 		--pid-file=/var/run/dnsmasq-wlan0.pid 		--conf-file=/dev/null 		--interface=wlan0 --except-interface=lo 		--bind-interfaces 		--dhcp-range=192.168.2.10,192.168.2.150,24h
    post-down cat /var/run/dnsmasq-wlan0.pid | xargs kill
...

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

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


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

$ cat /etc/hostapd/hostapd.conf
...
### Virtual SSID(s) ###
bss=wlan0
ssid=MyVirtualSSID
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=you_cant_guess

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

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

$ ip addr show wlan0 | grep link | awk '{print $2}'
46:c3:06:00:03:e1

Вот и всё, ребята!

Комментарии (111)


  1. rozhik
    26.01.2019 22:29

    Как wifi карточку выбирали? Столкнулся с тем, что включенный режим ac вешал систему (хоть в списке поддерживаемого dd-wrt карта была).


    1. achekalin
      26.01.2019 22:42
      +2

      Этот перевод, да ещё на самый искусный, так что спрашивать "как выбирали" лучше у авторов оригинала.


      Цена вопроса отдельно доставляет. И по железу, и по расходу энергии.


      1. loltrol
        27.01.2019 03:43

        Но это наиболее дешевый вариант получить чесный, безкомпромисный 1 гигабит с nat(+ всякие плюшки).


        1. MinamotoSoft
          27.01.2019 19:36
          +1

          1. yetanotherman
            27.01.2019 20:16

            Там на деле когда эти железки начинаешь покупать — цена выходит не такая уж и вкусная. Потом, когда прикинишь реальную стоимость железки после всех маркетинговых уловок — купить локально выходит в те же деньги, причем, уже не из нонейм-компонент и не из железа четырехлетней давности (я пробовал оба варианта, самосбор получился на голову шустрее/холоднее за те же деньги)

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


          1. konchok
            27.01.2019 22:40

            Железки с Али рулят, честный гигабит там вполне имеется, надо просто брать с интеловскими сетевухами.


            1. Master_List
              28.01.2019 14:43

              Наткнулся на оригинальную статью, но к сожалению уже после покупки интеловой вифи карточки. Попробовал поразбираться с модулем ядра для них, по подобию патча из статьи, но ничего не получилось. Сложилось у меня впечатление о том, что в ROM там зашит не только глобальный coutry-code, но и вся табличка разрешенных частот. А при попытке что-то из запрещенного разрешить, сама железка отказывалась заводиться. Так что лучше уж атерос.


              1. konchok
                28.01.2019 14:53

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


          1. irnis
            28.01.2019 16:56

            более интересная, на мой взгляд железка — www.hardkernel.com/shop/odroid-h2


        1. BaLaMuTt
          28.01.2019 15:46

          Чем вариант Mi router 3G за 2.5 килорубля с прошивкой от Padavan не устраивает? По локалке то же самое выдаёт.


      1. rozhik
        28.01.2019 13:30

        Простите, не заметил.


  1. BOOTor
    26.01.2019 22:56
    -2

    Xiaomi router 3G + padavan: цена вопроса 40 у.е.


    1. megapro17
      26.01.2019 23:19

      и никакого геморроя в настройке через конфиги


    1. dartraiden
      26.01.2019 23:20

      + padavan
      Стало быть, «прощай, WireGuard». А стабильная версия OpenWrt (первая, которой на этом роутере можно пользоваться без боли) выйдет только на днях (при самом оптимистичном раскладе).


  1. iliasam
    27.01.2019 00:02

    Почему-то, прочитав название, решил, что речь пойдет про проектирование роутера «с нуля», из отдельных электронных компонентов.


    1. MMik
      29.01.2019 12:48

      Это есть, например, тут: Turris open source router.


  1. Bonio
    27.01.2019 00:13
    +1

    Тоже пользуюсь самодельным маршрутизатором на x86. Сделал, когда стало нужно держать на нем несколько vpn соединений. Так вот в качестве ОС лучше pfSense просто нету, это идеальная ОС для маршрутизатора, куча настроек и очень грамотный web интерфейс, настолько, что за несколько лет я ни разу не лазил в консоль.
    Кстати, я тоже сперва с pci-e wifi карточками заморачивался, а потом пришел к выводу, что внешняя точка доступа проще и надежнее.


    1. kolu4iy
      27.01.2019 00:19

      Я, знаете, тоже сразу подумал, что специализированный дистр типа pfSense/mikrotik/OpenWRT (в зависимости от требований) справится с задачей ничуть не хуже, чем монстрик-ubuntu...


    1. borisxm
      27.01.2019 07:36
      +1

      потом пришел к выводу, что внешняя точка доступа проще и надежнее

      Поддержу. У меня различные инкарнации домашнего маршрутизатора/сервера/NASa живут уже лет двадцать, и за это время пришел к выводу, что делать WIFI точку лучше на внешней точке доступа. Кроме всего прочего, нет проблем с заменой или обменом.


    1. irnis
      28.01.2019 17:05

      когда-то, в 90-х, сделал одной конторе «роутер» на базе 486 и OpenBSD, эксплутировался он в нечеловеческих условиях — никто его специально не шатдаунил, просто вечером вырубали электричество с щитка, утром включали… через несколько лет они мне позвонили и спросили не помню ли я пароль, т.к. что-то инет работает с перебоями… оказалось — древний винт начал сыпаться… посоветовал им купить 500-й асус, как раз тогда он был в тренде с «прошивкой от Олега»…


  1. rub_ak
    27.01.2019 00:23
    +1

    Очень расточительно использовать такое железо, только как домашний роутер.
    На очень похожее железо (GA-C1037UN-EU + 128 ssd 2.5 + 5Tb hdd + 2x4ddr3 в MOREX T3500-60, под 3,5 пришлось допилить корпус.)
    Поставил ESXI, постоянно работает 1 win + 2 ubuntu server, а пару раз доходило до 2win + 3 linux виртуалок.
    Кому интересно вот:

    мои фото








    Последние фото из далёкого 2010(11)года, там ещё атом 525 стоял


  1. kuza2000
    27.01.2019 00:47
    +1

    А смысл всего этого действа?
    Посмотрел цену вай-фай адаптера — $49.
    И это только вай-фай адаптер… Сколько остальное железо стоит?
    К примеру, у меня стоит ASUS RT-AC58U, перешитый на OpenWRT. 5500 руб, это намного меньше $100. Поддерживает 2.4 ГГц, 5 ГГц, все порты (1 LAN + 4 WAN) гигабитные. Четыре антенны, по две на диапазон. Похоже, по всем основным параметрам превосходит данный девайс. Кроме, конечно, процессорной мощи и памяти, но зачем она, если ее некуда применить?
    Похоже, тут интерес может быть только спортивный… за него и плюсанул статью :)))
    Ну или вешать какие-то задачи еще… но мне бы не хватило проводных интерфейсов, как минимум.


    1. loltrol
      27.01.2019 04:36

      Подключите гигабитный wan, запустите 10 торрентов, и ваш роутер подохнет, выдавая по 1 пакету в час(тру гигабитный роуеров, без хаков в виде hardware-nat, которые сильно ограничены, наверное ниже 200 баксов не найти). + сабж в топике может много чего, а именно — абсолютно любую вещь «взрослого» пк-умные впнки для обхода блокировок, сервер БД, файловые шары всех мастей.

      Так что ваш роутер и эта железка — устройства немного разного применения.


      1. kuza2000
        27.01.2019 06:46

        Торрентов нет, а по wan подключение гигабитное. Скорость на ноутбуке (по speedtest.net) 300+ по проводу (ограничение провайдера), 200+ по вай-фаю 802.11ac (тут уже ограничевает вай-фай).
        Всего нагрузка одно-три устройства на проводе, на вайфае ноут, планшет, пара телефонов.
        Ну, если по всем портам на гигабит загрузить, наверное, будет тормозить, только откуда в домашней сети такая загрузка :)
        Вот клиента VPN поставить хочу, только не нашел готового для SoftEtherVPN.
        Кстати, у меня под сомнением, что и целерон в той конфигурации потянет 5 гигабитных карт без тормозов на полную. А что возможностей применения больше — это без сомнения :)


      1. NoOne
        27.01.2019 11:25
        +1

        Mikrotik за 60$, жует гигабит весьма неплохо, торрентами 700-800, спидтест под 1000


        1. Hissing_Bridge
          27.01.2019 14:23

          только этот микротик не умеет VPN по UDP


          1. NoOne
            27.01.2019 15:30
            +1

            Так вы говорите правильно, «не умеет OpenVPN по UDP».
            Но в новом RouterOS обещают (уже пару лет?)


          1. vviz
            27.01.2019 17:12

            Осмелюсь спросить, а зачем для VPN connectionless соединение? Да еще если через WiFi?


            1. Hissing_Bridge
              27.01.2019 19:10

              Микротик поднимает соединение с удаленным сервером OpenVPN. На стороне микротика настраивается машрутизация для определенных ресурсов через VPN соединение. Прозрачно для клиентов, подсоединенных к точке. Микротик не умеет OpenVPN через UDP. не умеет осуществлять безпарольную аутентификацию, tls — wat? lzo...?
              OpenVPN стандарт де-факто. Зачем UDP? Надо. А TCP не надо. Конкретно для меня. Почему до сих пор настолько базовые и примитивные вещи не реализованы в routerfs? Мне не понятно. Реквест висит с 2013 года.
              Вообще у микротиков, любых, даже что-то типа Mikrotik RB1100AHx4 очень большие проблемы с шифрованными соединениями. Они деградируют. Если через соединения гоняются большие объемы шифрованного трафика, то раз в несколько дней микротик начинает деградировать. Сначала это проявляется в увеличении пинга, проскакивают задержки. Со временем все становится хуже и он виснет. Как решить проблему? В интернете тишина, много кто пишет — ответа нет. Лечит перезагрузка.
              Несомненно, для многих обычных пользователей микротик это отличный выбор, но с другой, для обычных пользователей и стоковых прошивок роутеров, ну как максимум какой-нибудь ddwrt или open-wrt за глаза


              1. gecube
                27.01.2019 20:14

                Вообще у микротиков, любых, даже что-то типа Mikrotik RB1100AHx4 очень большие проблемы с шифрованными соединениями. Они деградируют. Если через соединения гоняются большие объемы шифрованного трафика, то раз в несколько дней микротик начинает деградировать. Сначала это проявляется в увеличении пинга, проскакивают задержки. Со временем все становится хуже и он виснет. Как решить проблему? В интернете тишина, много кто пишет — ответа нет. Лечит перезагрузка.

                wat? никогда не имел таких проблем. Что делаю не так? Да, ес-но openvpn не для микротика. Но вот IPsec (туннельный и транспортный), l2tp, sstp, IPIP прекрасно там работают.


                1. ivn86
                  28.01.2019 08:02

                  IPsec/l2tp стабильно работает? Два раза на двух различных устройствах пробовал настроить по официальной доке — сперва всё чудесно работает, но примерно через сутки падает PPPoE соединение с провайдером.


                  1. gecube
                    28.01.2019 08:16

                    эм… Ну, как сказать. Были разные конфигурации.
                    Обычно: mikrotik в роли L2TP/IPsec сервера, клиенты — рабочие машинки, телефоны и пр. Полет отличный.
                    Далее была конфигурация — mikrotik'и в качестве L2TP/IPsec клиентов, в центре — либо Mikrotik CHR на VPS, либо Ubuntu/Centos с соответствующими демонами. То же проблем не было. Пока провайдер не начал изголяться. Тогда переключились на SSTP.

                    Два раза на двух различных устройствах пробовал настроить по официальной доке — сперва всё чудесно работает, но примерно через сутки падает PPPoE соединение с провайдером.

                    может быть проблема в том, что соединение с провайдером переподключается? Как бы к самому L2TP это отношения не имеет, но чисто гипотетически возможна проблема, связанная с тем, что я в микротике не нашел опции для очередности поднятия туннелей. Запросто может случиться так, что там как-то по-хитрому переплющило таблицу роутинга, назначились пересекающиеся IP-адреса и в результате туннель как бы есть, и в нем пытается подняться другой туннель, хотя должно быть ровно наоборот. Сам микротик в таких случаях, видимо, предлагает писать скрипты на их диалекте bash'а (?)


              1. khim
                27.01.2019 20:14

                Почему до сих пор настолько базовые и примитивные вещи не реализованы в routerfs? Мне не понятно. Реквест висит с 2013 года.
                Вы тут сами себе противоречите — если они «базовые и примитивные», то что вам мешало пять лет написать patch.

                А если они «сложные и никому, кроме трёх с половиной гиков, не нужные»… ну так это само по себе ответ на вопрос…


                1. gecube
                  27.01.2019 20:19

                  эм. а разве routerOS опенсурс? Это как бы закрытая разработка Микротик на базе Линукс-ядра. И сурсов я не видел. Если у Вас другая информация, то прошу поделиться, т.к. очень интересно.


            1. gecube
              27.01.2019 20:23

              На самом деле это очевидно. Потому что паковать TCP в TCP — это гениально, очень большой оверхед и плохо работает в условиях плохого соединения.
              В результате легко можно получить кейсы, описанный по ссылкам
              openvpn.net/faq/what-is-tcp-meltdown
              sites.inka.de/bigred/devel/tcp-tcp.html
              serverfault.com/questions/630837/under-what-circumstances-is-tcp-over-tcp-performing-significantly-worse-than-tcp

              Я уж не говорю, что энтерпрайз никогда не позволит себе опенвпн. А поддержка IPsec + IPIP туннели в микротиках не отличная, но хотя бы нормальная.


              1. vviz
                27.01.2019 21:33

                Понятие «очевидность» довольно сильно субъективное. И как то не вижу в своем вопросе сочетания «Mikrotik» и VPN. Есть сочетание UDP и VPN. Аргументированного ответа не увидел, жаль.
                Что касается «деградации», на мой взгляд она сушествует в каком либо виде везде, что у Микротиков, что у Цисок, что у Виндовс, что у Линукс. С древних времен придерживаюсь правила — переодически железку нужно перегружать. Любую.


                1. gecube
                  27.01.2019 21:39

                  А, прошу прощения )
                  Еще раз повторюсь, что у меня стойкое подозрение, что Mikrotik не реализуют OVPN с UDP, т.к. не считают это нужным с т.з. целевой аудитории. Все необходимое для жизни в Mikrotik есть и без OVPN — L2tp, sstp, ipsec etc.

                  Что касается «деградации», на мой взгляд она сушествует в каком либо виде везде, что у Микротиков, что у Цисок, что у Виндовс, что у Линукс. С древних времен придерживаюсь правила — переодически железку нужно перегружать. Любую.

                  Логично предположить, что в любом ПО, кроме совсем уж mission critical, есть баги и утечки памяти, что действительно приводит к тому, что нужны перезагрузки (обнуление). Вопрос только в частоте такого события )


                  1. NoOne
                    27.01.2019 22:07

                    у меня стойкое подозрение, что Mikrotik не реализуют OVPN с UDP


                    Они его уже реализовали в RouterOS 7, в ченджлоге пролетало. Но вот вопрос, когда он выйдет в релиз…


              1. kolu4iy
                28.01.2019 09:14

                Ох вы тут неправы… Вот прям на прошлой неделе — апсолютли кровавый энтерпрайз выступает в роли нашего клиента. И знаете что он подсовывает в качестве VPN до того сервера, который мне надо настроить? OpenVPN. Увидев TCP в предложенном конфиге — я немного насторожился. А почитав логи внезапно нашёл, что на той стороне еще и микротик стоит… Конкретно не буду называть клиента, извините, но он действительно из Российского топ-10…


                1. gecube
                  28.01.2019 09:44

                  Знаете, что было бы смешно — если б это был именно тот ВПН, который я поднимал для тестовых целей.
                  Хотя нет, проверил — у меня все четенько — по UDP. Поэтому это не про меня )


                  1. kolu4iy
                    28.01.2019 11:41

                    Не про вас. У вас и не микротик в качестве сервера, я подозреваю.


            1. mayorovp
              28.01.2019 09:37

              Для VPN именно connectionless соединения и нужны! Потому что инкапсуляция TCP внутри TCP отвратительно реагирует на потери пакетов: по истечении тайм-аута одновременно происходит повторная отправка как пакета по внутреннему соединению, так и по внешнему. В итоге «мусорные» пакеты воруют пропускную способность как раз в те моменты, когда её не хватает.


              1. vviz
                28.01.2019 10:18

                Хмм, а я как-то всегда придерживался мысли, что для «приватной» сети важнее «непрерывность» связи, чем пропускная способность. Каково «домашнему» сотруднику, сидящему через WiFi на «удаленном рабочем столе» сервера при постоянных «фризах»? И почему пакеты, поддерживающие работоспособность соединения, считаются «мусорными»? Ведь в них данные, которые уже однозначно потеряны в канале… На практике TCP стабильнее в ситуации передачи «важных» данных, но все пытаюсь найти ошибку в своих рассуждениях.


                1. gecube
                  28.01.2019 10:28

                  Почитайте по ссылкам, которые я выше приводил.
                  Кратко — если пакет потерян, то возможно, что его и не нужно передавать уже. В частности — это очень хорошо видно на стриминговых вещах (ну, там телефония etc.). Дополнительно — внутри туннеля у Вас тот же TCP stream (например, ssh), который даже 5-секундный обрыв может пережить (за это время можете переподключиться по ВПН как раз — главное — на тот же самый IP)


                1. mayorovp
                  28.01.2019 10:30

                  Так TCP внутри TCP именно к фризам и приводит. Мусорными пакеты становятся потому что были повторно переданы несколько раз в ситуации, когда хватило бы лишь одного.

                  Для того, чтобы гарантированно доставить данные, достаточно одного слоя TCP, второй слой лишь мешает.


        1. Hissing_Bridge
          27.01.2019 15:26

          И не только


          Currently unsupported OpenVPN features:


          UDP mode
          LZO compression
          TLS authentication
          authentication without username/password


      1. VitohA
        27.01.2019 14:17

        До 200$ уже есть железки на том же IPQ-4018 или MT7621 со 128-256 МБ RAM на борту, которые потянут эту нагрузку.
        Но вот зачем там функционал «взрослого» пк, на роутере то? Это просто разные устройства.


        1. bugdesigner
          27.01.2019 17:51

          Да всегда можно "дополнительное домашнее задание" на роутер повесить. Медиасервер, торрент-качалку, итд. Хотя, как по мне, слишком жирно для роутера.


          1. DGN
            27.01.2019 19:25

            Медиасервер, торренты и видеонаблюдение — уже открывается неплохой кейс. До кучи, элементы умного дома.

            p.s. в конструкцию я бы добавил вотчдог.


            1. mishutka_ua
              28.01.2019 06:30
              +2

              Вы, вот это все на роутер повесили бы, серьезно?? Элементы умного дома и видеонаблюдение и вотчдог?? На роутер?? И я не про мощность железа.


    1. Dioxin
      28.01.2019 07:39
      +1

      Посмотрел цену вай-фай адаптера — $49.
      Столько стоит мой роутер тп-линк.
      в нем есть:
      гигабит езернет (работает)
      5 Ггц
      2 USB с поддержкой принтера и накопителей.
      В общем все что мне дома нужно.


  1. id_potassium_chloride
    27.01.2019 01:24

    Создаётся ощущение, что конечный продукт — полноценный ПК с прокаченной функцией маршрутизатора. Обычно наоборот: сетью заведует какая-то мелкая железка с дополнительным функционалом слабого ПК в виде побочного эффекта. Кстати, я правильно понял, что автор статьи собирал ядро Линукса из исходников непосредственно на маршрутизаторе?


    1. achekalin
      27.01.2019 10:51
      +2

      Конечный продукт напоминает подход «because I can». Поиграться, даже потратив в разы против оптимальной только сетевой железки, можно было и попроще/дешевле, но не так наглядно. Уже корпус от компа с кучкой антенн внушает, что и говорить.

      Для меня точка доступа — это что-то такое, небольшое. И, наверное, недорогое, хотя тут от задачи зависит. Потому что я привык радио прятать с глаз, и привык на точку доступа не вешать доп. функций, ибо ТД — в некотором смысле все же stateless штука, которую можно (и нужно) менять цельным блоком, и конфигурить именно так, без привязки к экземпляру.

      А вот с какой целью на домашней ТД иметь реальный гигабит везде-везде, с запасом (по процу судя — там и несколько гигабит без проблем)? Это как с тем тролейбусом и буханкой: можно, но зачем? По себе сужу: не так часто крупные файлы или потоки на гигабит возникают, в сумме, имея именно чистый 1Гб в каждую сторону против реальных 200-300 Мбит (как, чаще всего, и получается с учетом канала, эфира, железа) — я себе сэкономил секунд 10 в месяц. Не стоит оно того, как по мне, хотя это, конечно, индивидуально.


      1. gecube
        27.01.2019 20:12

        Я просто хочу обратить внимание, что уже крупные провайдеры (РТ, SkyNet) дают в дом 200МБит. Региональные маленькие — могут до 1ГБит.

        Поэтому — да, честный гигабит карман не тянет.


        1. khim
          27.01.2019 20:16

          Поэтому — да, честный гигабит карман не тянет.
          Именно что тянет. И хорошо так тянет. Сравните цену китайского роутера… вот с этим.


          1. gecube
            27.01.2019 20:20

            Давайте конкретные аргументы. А то я сравню и сравнение будет не такое, как Вы имели в виду.


            1. achekalin
              27.01.2019 22:27

              Начнем с того, что гигабит вживую доступен (кое-где), но не нужен (почти нигде). Точнее, кому-то нужен, кому-то нет, но в массе юзеры «не парятся». Это не отменяет желания получить таковой канал у «всех остальных», равно как и делания самого оператора не покупать канал реально многогигабитной толщины, а продать некую виртуальную скорость «до узла», но не будет сейчас об этом.

              Скажу за себя: провайдер мой, даже не знаю почему, потихоньку повышая мне скорость инета (за те же деньги; присылал только сообщение, что с нового месяца мы вас решили порадовать, и все, скорость прыгала обычно в два раза, а счет не менялся), показал мне, что после некой границы (мегабит, наверное, 50), я уже перестал замечать разницу в толщина канала, потому что чаще стал упираться в скорость отдачи «на том конце». Грубо говоря, как Windows Update отдается небыстро, так оно одинаково небыстро, хоть 50 Мб, хоть гигабит у меня в доме.

              Нет, конечно, есть и примеры обратного: очень редко я вижу, что файл прилетает за 20 секунд, а не за 2 минуты (условно говоря), но — погоды эта разница мне в жизни не делает.

              Так что покупать, условно, роутер с ТД за 20 тыс, вместо роутера за 2 тыс. (повторюсь — именно роутер, а не комбайн «чтобы все боялись»), мне психологически не нравится. Плюс, я понимаю, что роутер за 2 тыс. при сгорании я просто отложу в сторону, куплю новый, и инет у меня появится через час-два (хождение до магаза + настройка), а с комбайном я пропрыгаю больше, ибо он кастомный. Получается, и с точки зрения времени облом.

              Я отлично отношусь к идее купить роутер + ТД, а к ним в довесок (отдельно) серверок, который будет в виртуалках (или «просто») крутить мою качалку, NAS, бекапер — но идея вешать на него еще и функцию ТД… Плюс, покупая отдельный сервер, я буду выбирать серверное, а не роутерное железо, что скажется положительно на выполнении им его функций. И каждая железка будет делать то, для чего предназначена, что тоже архитектурно симпатично.

              Ну а поиметься изучить прямоту рук можно, купив тот же Mi Router 3G, и повозившись с кастомом для него. Он мощный, недорогой, «в среднем» качественный. Да, и гигабит тянет, собственно, если что. Даже если гигабит в реальности и не нужен. *смайлик*


              1. mishutka_ua
                28.01.2019 06:45

                Ну ОК, а если не извращаться и поставить сюда не ubuntu, а pfsense/opnsense и назвать не роутер, а шлюз для SOHO. Вам, я думаю, и кран мостовой литейный не нужен, но это не значит, что он не нужен совсем.


                1. khim
                  28.01.2019 12:50

                  Кран мостовой литейный дома — не нужен совсем. А там где он нужен — там люди понимают, зачем он им нужен.

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

                  А мотивация «честный гигабит карман не тянет» подходила бы к выбору между китайским роутером за две тысячи рублей и «хорошим» за две с половиной… ну три — от силы. Но никак не к тому чуду, что в статье описано.


                  1. mishutka_ua
                    28.01.2019 13:08

                    Кран мостовой литейный дома — не нужен совсем. А там где он нужен — там люди понимают, зачем он им нужен.

                    А я про дом и не говорил, я апеллировал, к тому, что —
                    Скажу за себя: провайдер мой

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

                    Я рад, что люди должны понимать зачем. Я не понимаю как и зачем, Вы, прилинковали это к моему комментарию??
                    Если быть внимательнее и читать не по диагонали, то станет очевидным, что я прокомментировал не, Вас, а другого человека. Не?
                    И смысл самого комментария был именно в том, что —
                    надо нужно всегда понимать зачем.


                    1. khim
                      28.01.2019 14:04
                      +1

                      Вся подведка — это отсюда:
                      честный гигабит карман не тянет
                      сравните цену китайского роутера… вот с этим.
                      Давайте конкретные аргументы.

                      Примерно так десятикратная разница в цене — это «неконкретный агрумент»?

                      Назвать можно как угодно, хоть «шлюз для SOHO», хоть «жопа с ручкой» — это не изменит того, что для 99% и 100 мбит/с не нужно.


                      1. mishutka_ua
                        28.01.2019 23:57

                        Наверное я повторюсь, но мне таки интересно, ЗАЧЕМ вы шлете мне НЕ МОИ аргументы в этой дискуссии?


        1. Borz
          27.01.2019 22:18

          убираем торренты. Куда вам входящий (не локалка) гигабит дома? и "честный" он ровно до провайдера, а дальше… суровый интернет, бездорожье и леса


          1. gecube
            27.01.2019 22:22

            я люблю стриминговые сервисы в хорошем качестве.
            Еще большое желание телевизор подключить к интернетам.

            Куда вам входящий (не локалка) гигабит дома?

            честно — мне бы 200МБит хватило, но есть нюанс… что это уже или оптика, либо все-таки зашейпенный гигабит (т.е. сетевуха должна быть нормальная).
            Гигабит по проводу в локалке — это уже must. Постоянно гоняю большие файлы между хранилкой, компом и ноутом.
            Но, к сожалению, все свитчи/роутеры с гигабитными все еще стоят существенно дороже, чем обычные с 100Мбит.


  1. Hissing_Bridge
    27.01.2019 06:04

    Хотел сначала собрать на RaspberryPI 3B+, но опыт работы с сетью более чем 200 подобными малинами в качестве роутера (выступают в роли маршрутизаторов с VPN каналами), оставило очень негативные впечатления. В не зависимости от использования usb сетевых карт, со временем малины начинают деградировать, снижается скорость передачи данных. Если не решать это регулярной перезагрузкой — зависает. Долго пытаюсь найти причину. С виду все нормально. Также часто начинает беспричинно тротлится. Но это можно победить, указав в boot/config.txt так называемый turbo режим (avoid_warnings=2). В общем почитал отзывы и взял себе Asus RT-AC87U. Накатил прошивку Merlin. В целом все отлично. Есть проблемы с температурой. Еще очень плохо работает с провайдерской DHCP Option82. Капризный. Часто ложится линк, с сообщением, что ISP провайдер не правильно настроил свой DHCP. На стоковой прошивке с этим все нормально, но там проблемы с 5Ггц. Короче, честно, пожалел. Стоит он дохрена, хотя достался в 70% стоимости. Лучше бы собрал собственноручно что-нибудь в форм-факторе mini-itx и кинул в чулан.


    1. gecube
      27.01.2019 20:11

      Вы говорите, как будто тп-линки не нуждаются в перезагрузке каждую неделю.
      У меня именно такие симптомы. Вай-фай начинает резко тупить и не подключаться. Подходишь к роутеру вплотную — все ОК. Ребутаешь — все нормализуется.
      Давайте примем за аксиому, что перезагрузка домашнего роутера раз в неделю допустима.
      Кстати, ни с одним микротиком таких проблем не наблюдал…


      1. ivlis
        27.01.2019 20:40

        У меня Google OnHub от того же TP-link, работает месяцами без каких либо проблем.


        1. gecube
          27.01.2019 20:57

          И что это доказывает? Повторюсь, что в моем опыте присутствовали не один ТП-ЛИНК или Д-ЛИНК. И зачастую с ними так или иначе были проблемы. Возможно, это «ошибка выжившего» в том плане, что роутеры были уже со стажем, а тогда уже начинаются проблемы из серии «высохших конденсаторов в блоках питания», но после замены на микротики все клиенты становились счастливыми.


        1. Borz
          27.01.2019 22:19

          а он "втихую" не перезагружается просто сам?


          ЗЫ: в некоторых роутерах позаботились и вынесли в визуальные настройки планировщик перезагрузок...


          1. gecube
            27.01.2019 22:23

            Да, и пофиг, лишь бы пакеты не терял (или не сильно терял) — тогда это незаметно.


        1. mystique_man
          29.01.2019 12:05

          тплинк сделал железку, а гугл софт) вот и вся разница и ответ почему «одни» «тплинки» виснут, а другие не виснут.


      1. irnis
        28.01.2019 17:11

        Model: TP-Link TL-WR1043N/ND v1
        Architecture: Atheros AR9132 rev 2
        Firmware Version: OpenWrt 18.06.1 r7258-5eb055306f / LuCI openwrt-18.06 branch (git-18.228.31946-f64b152)
        Kernel Version: 4.9.120
        Local Time: Mon Jan 28 19:08:37 2019
        Uptime: 35d 11h 40m 0s
        Load Average: 0.00, 0.01, 0.00


        1. gecube
          29.01.2019 12:07

          Я за Вас очень рад, но речь шла про тп-линки и д-линки в первую очередь с «родными» прошивками (пускай, и последней версии).


          1. LESHIY_ODESSA
            29.01.2019 16:15

            Вот вам и родная прошивка, но в целом вы правы.

            Firmware Version:
            0.9.1 3.2 v003a.0 Build 170221 Rel.55462n

            Hardware Version:
            Archer C20i v1 00000000

            System Up Time:
            40 day(s) 01:45:41


        1. LESHIY_ODESSA
          29.01.2019 16:14

          Это не самый удачный ответ, учитывая то, что в этой модели «стандартный» отвал Wi-Fi чипа (ath: phy0: DMA failed to stop...) и приходится делать Wi-Fi watchdog.


  1. bzzz00
    27.01.2019 10:07

    > DD-WRT всё равно предпочтительнее стоковых прошивок.
    очень сильно утверждение. чем обосновано? вот у меня несколько точек на кинетиках — работает как часы, в целом.


  1. fedorro
    27.01.2019 11:15

    Воспользуюсь подходящей статьей и спрошу — может кто решал: RaspberryPI 3B+ @ Raspbian, нормативные ограничения запрещают 5GHz в домене RU. Можно, конечно, поставить US или другой, и не парится по этому поводу. Но хотелось бы понять — 5GHz в домене RU уже разрешены, и вроде я что-то находил, что уже всё должно работать из коробки. У меня так и не получилось, может кто сталкивался — подскажет. Спасибо.


    1. megasuperlexa
      28.01.2019 14:43

      как запрещают — вообще? вроде это не так


      1. fedorro
        28.01.2019 15:01

        Ну когда я выбираю домен RU пропадают все 5G сети. В качестве решения предлагается выбрать регион US. Я вот и интересуюсь более правильным решением.


        1. megasuperlexa
          28.01.2019 15:19

          думаю, речь идёт о каком-то баге конкретной прошивки. у меня 5ГГц всегда работало.

          Нарыл в гугле:
          Решением от 15 июля 2010 г., ГКРЧ России отменяет выдачу обязательных частных Решений ГКРЧ для использования систем фиксированного беспроводного доступа в диапазонах 5150-5350 МГц и 5650-6425 МГц. Ограничение на данные диапазоны частот снято для всей территории России.


          1. fedorro
            28.01.2019 15:30

            Самая стандартная прошивка у меня — последний Rspbian со всеми обновлениями. Что 5Ггц в России разрешены я в изначальном комментарии написал. Какая страна у Вас установлена для Wi-Fi?


  1. yetanotherman
    27.01.2019 16:52

    J1900 не лучший выбор для роутера. Не сильно лучше Raspberry PI 3.

    За эти же деньги или чуть-чуть дороже можно взять что-то более энергоэффективное и с поддержкой AES-NI. Посмотрите на J3455. Или, если религия позволяет поставить дополнительный сетевой адаптер — есть интересные материнки на J4105 (лучше производительность) или Z8350 (лучше потребление).


  1. KivApple
    27.01.2019 18:49

    Я бы хотел предостеречь от использования именно Малины в качестве Wi-Fi роутера (автор статьи её и не использовал, но упомянул). Причина проста — под капотом там 1 USB порт и почти вся периферия (кроме GPIO, HDMI и интерфейса камеры и всяких мелочей типа разъёма для наушников) висит на нём через хаб. То есть и Ethernet, и Wi-Fi (в моделях, где он есть), и 4 USB разъёма. И USB там самый обычный 2.0, а не 3.0. Что это значит? Что одновременное активное использование >1 сетевого интерфейса будет приводить к глюкам, тормозам и потерям пакетов. А в случае роутера сетевых интерфейсов как раз таки 2 — Wi-Fi и Ethernet. В общем, несмотря на достаточно мощный процессор и большой объём ОЗУ в стресс-тестах Малина проиграет практически любому Wi-Fi роутеру. И ладно если просто будет тупить, а не дропать пакеты или вообще зависать.

    Я работал с немного другой задачей — передаче видео с вебкамеры по Wi-Fi. При использовании специальной камеры для Raspberry (которая является одной из немногих вещей, которая подключается не к бедному единственному USB порту) всё было хорошо, но стоило заменить её на USB-вебкамеру — V4L2 начинал выдавать битые кадры с вебки, а Wi-Fi сеть начинала работать нестабильно. На других одноплатниках (разные вариации Orange Pi) всё работало стабильно.

    В общем, список вещей, которые на Малине лучше не делать:

    • Wi-Fi роутер
    • Сетевое хранилище (флешка/USB HDD + Wi-Fi/Ethernet)
    • Видеонаблюдение/видеотрансляция (если источник подключен по USB, а не через интерфейс камеры)


    Если хочется экономии можно рассмотреть различные решения от Banana Pi, Orange Pi и т. д. У них на mainline kernel обычно не работает видеоускорение (что их главный недостаток по сравнению с Малиной, у которой поддержка всего вылизана), но оно нафиг не нужно Wi-Fi-роутеру/мини-серверу, а сеть и USB работают замечательно.


    1. gecube
      27.01.2019 20:09

      Действительно лучший комментарий ) Аналогичные проблемы то же замечал на «малинке»


    1. Pulse
      28.01.2019 19:20

      вот жеж есть вкусняшка Orange Pi 3
      habr.com/ru/post/437238


    1. catharsis
      28.01.2019 21:37

      Стоит уточнить, что скорость "обычного USB 2.0" все же 480 Мбит/с, и использовать два устройства на одном хост-контроллере можно (иначе бы не было хабов).
      На практике где-то кому-то не хватает буфера, сетевые пакеты теряются и v4l2 лагает.
      Как-то вешали USB камеры к платам odroid, и v4l2 иногда давало битые картинки. Найти проблему тогда не удалось, с загрузкой другой периферии видимой корреляции не было, картинки не стримили и на флешку не писали, плат протестировали значительное количество


      1. KivApple
        28.01.2019 21:47

        Скорость 480 МБит/с — да, но вот беда — канал полудуплексный. К тому же производители многих железок экономят на буферах — камера может банально не уметь держать в памяти сразу 2 кадра — если не забрали предыдущий, когда уже закончил считываться с матрицы следующий — получаем тыкву (а при применении MJPEG не просто битую картинку, а вовсе невалидный JPEG, на котором некоторые либы декодирования могут и сегфолтнуться, если специально не озаботится этим вопросом). Ещё производители железок любят делать их максимально тупыми и зашивать большое количество логики в драйвера (этим могут страдать те же Wi-Fi-адаптеры). В обоих случаях требуется фактически связь с железкой в мягком реальном времени, а один USB с хабами (и что важно — несколькими активными в один момент устройствами) его дать никак не может.

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


      1. Aleho
        29.01.2019 11:35
        +1

        Уже почти 20 лет USB 2.0, а до сих пор теоретическую пропускную способность протокола принимают за рабочую скорость передачи данных по нему. Распространенные ошибки при проектировании.


        1. catharsis
          29.01.2019 17:19

          Так намного лучше, чем говорить "USB не может". Спасибо.


  1. wikipro
    27.01.2019 18:53

    В КНР после такой статьи наплодили бы клонов и наводнили ими АлиЭкспресс. А у нас кто нибудь пробовал коммерциализировать такие устройства? Продовать через Авито, Беру, на B2B — рынке как WiFi роутер для кофеен/ Аэропортов, Корпоративный роутер для банков, "роутер с доступом к Рутрекеру", "роутер с торрентами и видеоплеером для подключения к ТВ для бабушки админа" и т.п.


    Любопытно было бы почитать историю успеха/неуспеха. Просто общие соображения.


    Особенно если Яндекс со Сбером всё таки сделают аналог АлиЭкспрес чтобы можно было из каждого если не деревни то ПГТ торговать своими поделками по почте.


    1. DGN
      27.01.2019 19:28

      Дорого ведь выходит. Роутер для аэропортов и банков — душит смех (с).


    1. miuz
      27.01.2019 22:46

      Я сталкивался с двумя весьма стрёмными кейсами (сам не делал, но прикидывал, что к чему).
      1. Несколько «аудиторий» на 30-50 слушателей (строителей пирамид).
      В каждой аудитории свой «курс» со своими материалами, передаваемыми на ноутбуки слушателей, подключенными по WiFi.
      Не знаю, чем дело закончилось. Бюджет около_нулевой.
      2. Обеспечение подключения по WiFi всех желающих зрителей на одном недавно достроенном стадионе в Питере (+ ещё много чего).
      Дело шло к нано-сотам. Бюджет всей ИТ-инфраструктуры был почти не ограничен.


  1. Bsplesk
    27.01.2019 19:04
    +1

    У меня в качестве mini-NAS выступает китайская железка, размером с mikrotik (951ui-2hnd). Kingdel NUC Mini PC Celeron J3160 Quad Core 4 Intel i210 Nic X86/Support Pfsense AES-NI. Есть правда в ней очень неприятный момент — неполноценный слот mini pci-e (только USB), но у меня там 4g modem, а wifi по USB 3.0. Будет время напишу обзор.


  1. gecube
    27.01.2019 20:01

    Никакого демона в фоновом режиме.

    Очень жду комментариев на этот счет. Что за демон?


    1. mishutka_ua
      28.01.2019 07:05
      +1

      FireHOL. Оболочка для iptables. Скрипт на BASH, запускается при загрузке и/или при настройке iptables. Упор на — «понятнее настраивать» этот iptables. Если короче, то близко по синтаксису к firewallD.


      1. gecube
        28.01.2019 07:46

        Все равно — как это соотносится с «никакого демона в фоновом режиме» — по сравнению с чем?
        Возмущение у меня вызвала эта фраза, потому что ufw/firewalld я всегда отключаю (можете сказать, что я «неосилятор» — пускай будет так), а iptables в строгом смысле этого слова демоном не является (хотя и есть соответствующий «service» в linux).
        И если уж на то пошло, то по мне синтаксис iptables более понятен, чем какой-то очередной язык, применяемый в FireHOL.


        1. mishutka_ua
          28.01.2019 08:02

          Все равно — как это соотносится с «никакого демона в фоновом режиме» — по сравнению с чем?

          Ни с чем, в статье указывается, что FireHOL просто оболочка для управления iptables не более.
          синтаксис iptables более понятен, чем какой-то очередной язык, применяемый в FireHOL.

          Скорее более привычен и более гибок. Для того, кто не знаком с iptables, и начинает с ним знакомство, возможно будет проще firehol/firewalld. Возможно, я не утверждаю.


  1. WinLin2
    27.01.2019 20:49

    Домашний сервер из GA-C1037UN-EU, 8Гб, 2 HDD / Ubuntu 18.04 / KVM
    + TP-Link-1043 v1 / OpenWRT. Реальный сервер для разработки и торрентов.
    На процессоры обоих устройств установлено дополнительное охлаждение.


  1. maikus
    27.01.2019 21:20

    Только для роутера собирать такую штуку нерационально, мне кажется. Но если уж очень захотелось, то материнку для такого применения надо выбирать с аппаратным watchdog timer. Я делал такого типа устройство для дачи, в начале оно было только роутером вроде описанного в статье, сейчас отвечает и за домашнюю автоматику, и за видеонаблюдение, и за торренты. Использовал атомную плату от Jetway. Заказывать в Штатах пришлось, но оказалась очень удобна тем, что watchdog на плате, питание от 12 вольт, и RS485. Кстати, автор не написал об этом, но всяческие логи Линукса неплохо бы отключить совсем или перевести на RAM-диск, чтобы всё это работало подольше.


    1. gecube
      27.01.2019 21:41

      Вообще идеально, если на материнке такого продЮкта имеется удаленный интерфейс типа IPMI (iLO, DRAC или любой аналог), т.к. если софт зависнет, то возникнет стойкое желание удаленно настроить. Вотчдог отчасти эту проблему закрывает, но только отчасти.
      Либо — опция «safe settings», когда при применении несовместимых с нормальной работой опций, роутер их через некоторое время сбрасывает на дефолту. В микротиках, кстати, такой сценарий реализован. Чтобы админу не пришлось ехать через пол-города, чтобы сделать аппаратный сброс настроек…


      1. maikus
        27.01.2019 22:09

        Скрипт для восстановления Safe Settings — хорошая штука, спасибо. И, как мне кажется, можно будет реализовать.


  1. werter78
    27.01.2019 22:45

    Доброго.
    Товарищ rub_ak выше писал про ESXI.
    Оставлю тут forum.netgate.com/topic/120102/proxmox-ceph-zfs-pfsense
    Может кого-то заинтересует.


  1. lostmsu
    28.01.2019 05:41

    Вы будете смеяться, но на Windows сделать такой же роутер — цена одной-двух команд в консоли.
    А главное — никаких проблем с драйверами. Можно брать любую железку с x86/ARM64.

    UPD. в последней версии консоль вообще не нужна: www.howtogeek.com/214080/how-to-turn-your-windows-pc-into-a-wi-fi-hotspot


    1. mishutka_ua
      28.01.2019 07:19

      Вы будете смеяться, но на Windows сделать такой же роутер — цена одной-двух команд в консоли.

      Эээээээ, proof of concept, будьте любезны.

      А главное — никаких проблем с драйверами. Можно брать любую железку с x86/ARM64.

      С ARM64 давно проблем нет с драйверами?


      1. lostmsu
        28.01.2019 07:20

        Есть же ссылка в UPD


        1. mishutka_ua
          28.01.2019 07:26

          такой же роутер

          и hotspot, как по мне, немного разные вещи.


          1. lostmsu
            28.01.2019 07:55

            В чём разница? Windows поднимает DNS и DHCP для клиентов.


            1. maikus
              28.01.2019 08:50

              Windows поднимает DNS и DHCP за сотку Евро.


            1. mishutka_ua
              29.01.2019 00:42

              DNS и DHCP, да. ОК.


    1. arabesc
      28.01.2019 14:51

      А главное — никаких проблем с драйверами.
      Попробуйте найти Windows драйвера для QCA99xx, это практически единственные 802.11ас Wave2 железки с работающим MU-MIMO.
      Ну и про пропатчить Windows драйвер для смены региона отдельно интересно.


    1. irnis
      28.01.2019 17:26

      ещё есть вот такая утилитка — www.nirsoft.net/utils/wifi_hotspot_starter.html

      ЗЫ: в деревне комп на таком же проце, но другой материнке работает печатной машинкой и для одноклассников, заодно и интернет раздает.

      материнка — www.onlinetrade.ru/catalogue/materinskie_platy-c340/asus/materinskaya_plata_asus_j1800i_c_celeron_miniitx-189187.html

      корпус — www.onlinetrade.ru/catalogue/kompyuternye_korpusa-c1323/3cott/korpus_3cott_m05_mini_itx-938053.html

      набортного вайфая у этой материнки нет, пришлось USB-затычку ставить… Кстати, чтобы получить стабильную работу сети пришлось наглухо вырубить энергосбережение как у вайфай-затычки, так и у ADSL-модема (он тоже по USB), да и вообще у всего USB :)