2 Беспроводных интерфейса на одном адаптере или WiFi репитер на RPIZv1.3

Тема в разделе "Raspberry Pi", создана пользователем XxOinvizioNxX, 23 июл 2019.

  1. XxOinvizioNxX

    XxOinvizioNxX Нерд

    Сразу скажу, что в сетях на raspberry я полный нуб.
    Передо мной встала задача обеспечить доступ к WiFi в дальнем углу отеля. К сожалению, стены тут, видимо со стальной сеткой, работают как клетка Фарадея, сжирая весь сигнал. По этой причине, WiFi от телефона не виден уже через 1 стену

    Единственное, что было с собой, это Raspberry pi Zero 1.3 и внешний USB WiFi-адаптер. Помню, как-то давно, я через этот один адаптер на Шиндовс уже делал репитер вафли.
    Погуглив нашёл массу статей как это организовать на RPI, но почти везде юзают 2 адаптера. Мне же, доступен только 1.
    И вот, спустя день активного гуглинга, наткнулся на эту статью (не реклама): https://blog.thewalr.us/2017/09/26/raspberry-pi-zero-w-simultaneous-ap-and-managed-mode-wifi/
    Тут хоть и для Raspberry pi zero W, но всё же, с лишь одним адаптером, то, что нужно!

    Сделал я всё по статье.

    Вдруг пригодится:
    • IP, который телефон присваивает raspberry: 192.168.43.135
    • Телефон раздаёт вафлю на 11 канале, hostapd.conf тоже настроен на 11 канал
    • Драйвер из lsusb -t моего адаптера: rt2800usb
    • С Raspberry, я общаюсь по UART, через Putty
    Ниже, содержание файлов, которые я редактировал по статье:

    Код (Bash):
    SUBSYSTEM=="ieee80211", ACTION=="add|change", ATTR{macaddress}=="<МАК АДРЕС wlan0>", KERNEL=="phy0", \
      RUN+="/sbin/iw phy phy0 interface add ap0 type __ap", \
      RUN+="/bin/ip link set ap0 address <МАК АДРЕС wlan0>"

    Код (Bash):
    phy#0
            Interface wlan0
                    ifindex 2
                    wdev 0x1
                    addr <МАК АДРЕС wlan0>
                    type managed
                    txpower 20.00 dBm
     

    Код (Bash):
    interface=lo,ap0
    no-dhcp-interface=lo,wlan0
    bind-interfaces
    server=8.8.8.8
    domain-needed
    bogus-priv
    dhcp-range=192.168.10.50,192.168.10.150,12h

    Код (Bash):
    ctrl_interface=/var/run/hostapd
    ctrl_interface_group=0
    interface=ap0
    driver=rt2800usb
    ssid=YourApNameHere
    hw_mode=g
    channel=11
    wmm_enabled=0
    macaddr_acl=0
    auth_algs=1
    wpa=2
    wpa_passphrase=YourPassPhraseHere
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=TKIP CCMP
    rsn_pairwise=CCMP

    Код (Bash):
    DAEMON_CONF="/etc/hostapd/hostapd.conf"

    Код (Bash):
    country=PA
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    update_config=1

    network={
        ssid="<SSID вафли телефона>"
        psk="<Пароль вафли телефона>"
        id_str="AP1"
    }

    Код (Bash):
    # interfaces(5) file used by ifup(8) and ifdown(8)

    # Please note that this file is written to be used with dhcpcd
    # For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

    # Include files from /etc/network/interfaces.d:
    source-directory /etc/network/interfaces.d

    auto lo
    auto ap0
    auto wlan0
    iface lo inet loopback

    allow-hotplug ap0
    iface ap0 inet static
        address 192.168.10.1
        netmask 255.255.255.0
        hostapd /etc/hostapd/hostapd.conf

    allow-hotplug wlan0
    iface wlan0 inet manual
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
    iface AP1 inet dhcp



    Но в результате, при попытке поднять wlan0:
    Код (Bash):
    sudo ifup wlan0
    Вылазит сея ошибка:
    Код (Text):
    wpa_supplicant: /sbin/wpa_supplicant daemon failed to start
    run-parts: /etc/network/if-pre-up.d/wpasupplicant exited with return code 1
    ifup: failed to bring up wlan0
     
    Вот, что пишут логи в этот момент:
    Jul 23 15:49:29 raspberrypi sudo[505]: pi : TTY=serial0 ; PWD=/home/pi ; USER=root ; COMMAND=/sbin/ifup wlan0
    Jul 23 15:49:29 raspberrypi sudo[505]: pam_unix(sudo:session): session opened for user root by (uid=0)
    Jul 23 15:49:29 raspberrypi wpa_supplicant[521]: Successfully initialized wpa_supplicant
    Jul 23 15:49:29 raspberrypi wpa_supplicant[521]: Could not set interface wlan0 flags (UP): Name not unique on network
    Jul 23 15:49:29 raspberrypi wpa_supplicant[521]: nl80211: Could not set interface 'wlan0' UP
    Jul 23 15:49:29 raspberrypi wpa_supplicant[521]: nl80211: deinit ifname=wlan0 disabled_11b_rates=0
    Jul 23 15:49:29 raspberrypi wpa_supplicant[521]: Could not set interface wlan0 flags (UP): Name not unique on network
    Jul 23 15:49:29 raspberrypi wpa_supplicant[521]: WEXT: Could not set interface 'wlan0' UP
    Jul 23 15:49:29 raspberrypi wpa_supplicant[521]: wlan0: Failed to initialize driver interface
    [/code]

    Код (Text):
    ap0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            inet 192.168.10.1  netmask 255.255.255.0  broadcast 192.168.10.255
            ether <МАК АДРЕС wlan0>  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 11680  bytes 782560 (764.2 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 11680  bytes 782560 (764.2 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
     

    Код (Text):
    /:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
        |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=rt2800usb, 480M
     

    Естественно, при перезагрузке wlan0 так же не поднимается, и raspberry к телефону не подключается.
    И самое интересное, что если удалить из /etc/udev/rules.d/70-persistent-net.rules интерфейс ap0, то, wlan0 появляется и raspberry подключается к тыртырнету, но тогда, невозможно поднять ap0.

    Не работает даже следующий вариант:
    Код (Bash):
    sudo ifdown --force wlan0
    sudo ifdown --force ap0
    sudo ifup ap0
    sudo ifup wlan0
    Как я понял, дело тут в том, что у них указаны одинаковые мак-адреса, и raspberry не может понять, какой именно интерфейс я хочу запустить, или же, дело в драйвере. Т.е., судя по lsusb, мой адаптер работает через otg устройство, а на raspberry pi zero w, возможно, напрямую.

    После всех изменений в iw dev уже 2 устройства, но опять же, с одинаковыми МАК:
    Код (Text):
    phy#0
            Interface ap0
                    ifindex 3
                    wdev 0x2
                    addr <МАК АДРЕС wlan0>
                    type AP
                    txpower 20.00 dBm
            Interface wlan0
                    ifindex 2
                    wdev 0x1
                    addr <МАК АДРЕС wlan0>
                    type managed
                    txpower 20.00 dBm
     
    Как видим, raspberry упорно не хочет жрать или 2 интерфейса с одинаковыми MAC, или драйвер моего адаптера, хотя винда прекрасно им и принимает, с него и раздаёт.

    Надеюсь на вашу помощь, товарищи!
     
  2. Igor68

    Igor68 Гуру

    Последнее редактирование: 24 июл 2019
  3. XxOinvizioNxX

    XxOinvizioNxX Нерд

    Задача: сделать репитер WiFi.
    Сама raspberry подключается к WiFi, который раздаёт телефон. Далее raspberry раздает уже свою точку доступа, перенаправляя всё и вся на телефон
     
  4. XxOinvizioNxX

    XxOinvizioNxX Нерд

    Суть в том, чтобы организовать это на 1 адаптере. В ваших ссылках используются 2 адаптера
     
  5. SergeiL

    SergeiL Оракул Модератор

    То есть телефон раздает Wi-Fi, к нему подключается Raspberry, а телефон к Raspberry?
    Круг замкнулся!? :)
     
  6. XxOinvizioNxX

    XxOinvizioNxX Нерд

    Где я писал что к raspberry подключается телефон?
    К raspberry подключаются другие устройства, включая телевизор, мак, и т.п.
     
  7. XxOinvizioNxX

    XxOinvizioNxX Нерд

    Вместо выяснения подобной ерунды можно было просто загуглить "WiFi репитор", о котором я писал в начале статьи
     
  8. SergeiL

    SergeiL Оракул Модератор

    Загуглить про "WiFi репитор"? Спасибо за совет! :) Как я не догадался???
    Вы почитайте себя! :)

    Загуглить можно, думаете узнаю что то новое? :)
    BGP сегодня я уже настроил :). Если это Вам что то говорит :)
    В Win10 это работает "из коробки", но у Вас Мак :), вопросов нет!
    У меня на работе тоже есть несколько человек с Мак, и мне кажется это для оправдания, когда нужно показать презентацию, но не получается, всегда слышу, "блин у меня же Мак..." :(
     
  9. XxOinvizioNxX

    XxOinvizioNxX Нерд

    Давайте прекратим идиотское выяснение непонятно чего. Спешу огорчить, мака у меня нет, а вот у родственников есть, что уж тут поделаешь. Взял бы свой ноутбук, этой темы бы не было, ибо на Винде это всё делается одной командой netsh... ;)
     
  10. SergeiL

    SergeiL Оракул Модератор

    Ну, нет так нет, не огорчаюсь :).
     
    Последнее редактирование: 25 июл 2019
  11. Igor68

    Igor68 Гуру

    Тут попадаются некие wifi адаптеры, которые без ухищрений вообще раздавать не умеют. Другие не могут работать как "мост" и т.п. А умеют только сами к другой сети подключаться. И если на ноуте с виндой установлен нормальный как в роутерах, и система уже заточена, то это не распальцовка для убогой винды. Которая еле еле (и то не всегда) может закрыть "мёртвые" подключения в режиме сервера (к серверу подключились и разорвали соединение... именно разорвали, а не закрыли). Насколько нередко надо перезапускать серверы на винде?
    А адаптер он и есть адаптер... плохой или хороший. Вот на малине к примеру кто думал, что надо впаять крутой? И то ухищряются делать что-то (ссылки приведены)
     
  12. XxOinvizioNxX

    XxOinvizioNxX Нерд

    Странно, очень странно!
    Ибо на ноутбуке я отключал встроенный WiFi адаптер, и точка доступа и само подключение организовывалось лишь внешним адаптером. Доказывалось это так же тем, что сам адаптер подключался через удлинитель, и в том месте, где он висел, встроенный ноутбучный адаптер ничего сделать не мог.

    Да и если подключить адаптер к raspberry, точку доступа она на нём делает, а вот подключиться как устройство уже не может.
    Как вы написали, именно мост у меня и не получается сделать. :mad:
    Либо адаптер сам к Wifi коннектится, либо раздаёт, как точка доступа. Одновременно никак не выходит. :(
    Никак не могу понять, почему на Винде это работало без любых ухищрений, а вот на малине нет!
     
  13. XxOinvizioNxX

    XxOinvizioNxX Нерд

    Сдаётся мне, что дело всё же на стороне малины. Ибо если глянуть логи [UP], при попытке поднять wlan0, она говорит: name not unique on network
     
  14. parovoZZ

    parovoZZ Гуру

    У меня на ноуте адаптер в режим репитера не встаёт, как не проси. Поэтому за все говорить не надо.
     
  15. Igor68

    Igor68 Гуру

    Мост, как я понимаю это два канала. Может я не прав???
    Про то и говорю, что организовать несколько IP на одном адаптере это нормально, только не всякий умеет два канала сразу. По очереди сколько угодно. Есть предположение, что WIFI адаптер на Вашем ноуте умеет и к двум сетям одновременно подключаться. Не уверен, что родной адаптер встроенный в малину способен на это.
    Кстати не все роутеры способны на это так же.
     
  16. Igor68

    Igor68 Гуру

    Кстати... попробуйте одной задницей сесть на два стула, которые находятся в разных помещениях одновременно. И если выйдет,то мы все не правы!
     
  17. XxOinvizioNxX

    XxOinvizioNxX Нерд

    Интересно получается, винда с физически отключенным встроенным адаптером, на одном лишь внешнем (USB) работает и как AP и как Managed, но по вашему такого быть просто не может! Ох-ох... :rolleyes: Что-то мне это напоминает....
     
  18. Igor68

    Igor68 Гуру

    Рад, что у Вас всё вышло!!! Покажите как.
     
  19. Igor68

    Igor68 Гуру

    https://toster.ru/q/402216
    https://www.linux.org.ru/forum/general/11847276
    https://forum.ixbt.com/topic.cgi?id=14:61058
    и даже невзирая на это (выше) и даже через яндекс ну если угодно и гугл....
    с этим: одновременная работа wifi на разных каналах


    Настоятельно рекомендую одновременно сесть одной своей задницей сразу на два стула стоящих в разных зданиях. Не по очереди как вы думаете и то, что имеете. А именно ОДНОВРЕМЕННО!!!!!:D:D:D:D:D:D:D:D:D


    В принципе можно использовать один приёмопердатчик для работы сразу на двух частотах одновременно... я не умею так. По очереди ради бога!:D
    Вопрос в том как часто переключаться на разные частоты.
     
    Последнее редактирование: 4 авг 2019