5

Некоторое время назад я задал вопрос о настройке Raspberry Pi с мостовым сетевым подключением - проводной к беспроводному мосту в Linux - и ответ, который я получил, работал хорошо.

Теперь мне пришлось начать все заново с Raspberry Pi и использовать описанную настройку. Но это не будет включать устройство wlan0 в мост, заявив:

 can't add wlan0 to br0: Operation not supported

Но если я бегу

/usr/bin/hostapd /etc/hostapd/hostapd.conf

Затем устройство wlan0 успешно добавлено к мосту. Может кто-нибудь объяснить, что здесь происходит и как я могу полностью автоматизировать добавление wlan0 на мост?

Устройство USB использует драйвер ath9k_htc.

Согласно запросу: /etc /network /interfaces и /etc/hostapd/hostapd.conf были основаны на ответе, упомянутом выше (хотя я перешел на WPA и прекратил использовать WEP), теперь выглядим так (следуя ответу ниже ):

auto lo
iface lo inet loopback
iface eth0 inet static
address 0.0.0.0
iface wlan0 inet static
address 0.0.0.0

auto br0
iface br0 inet dhcp
    bridge_ports eth0
    pre-up ip link set eth0 down
    pre-up ip link set wlan0 down
    pre-up brctl addbr br0
    pre-up brctl addif br0 eth0
    pre-up ip addr flush dev eth0
    post-down ip link set eth0 down
    post-down ip link set wlan0 down
    post-down ip link set br0 down
    post-down brctl delif br0 eth0 wlan0
    post-down brctl delbr br0

а также

interface=wlan0
bridge=br0
driver=nl80211
auth_algs=1
macaddr_acl=0
ignore_broadcast_ssid=0
logger_syslog=-1
logger_syslog_level=0
hw_mode=g
ssid=SSID
channel=11
wpa=2
wpa_passphrase=PASSPHRASE
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
ctrl_interface=/var/run/hostapd
ieee80211n=1

2 ответа2

6

Это так просто: hostapd добавляет ваш интерфейс к мосту, указанному в bridge= после того, как он превратил wlan0 в режим AP. Добавление интерфейса в мост до запуска hostapd невозможно, поскольку ваш интерфейс все еще находится в управляемом режиме по умолчанию.

Не говорите ifupdown (через /etc/network/interfaces) добавить wlan0 к вашему мосту и позвольте hostapd сделать это вместо этого:

bridge-ports eth0 # no wlan0 here.

О, ваш /etc/network/interfaces так сильно раздут. Вам не нужно так много возиться с brctl.

auto lo
iface lo inet loopback

# If you don't need to configure eth0, don't add a stanza for eth0.

iface wlan0 inet manual
    # hostapd has ifupdown hooks in /etc/network/if-*.d/, just like bridge-utils
    hostapd /etc/hostapd/hostapd.conf

auto br0
iface br0 inet dhcp
    # This will run dhcp on eth0, then proceed to create an AP.

    # bridge-ports already handles creating the bridge, adding the ports and
    # upping them (with ifconfig and ioctls :-( )
    bridge_ports eth0

    # After the bridge is set up with only eth0, up the interface using
    # the previously defined stanza.  hostapd will add wlan0 to the bridge
    # using the modern rtnetlink API.
    post-up ifup wlan0

    # When preparing to down, destroy the AP (and remove it from the bridge)
    # before the bridge is downed.
    pre-down ifdown wlan0
-1

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

Я предполагаю, что hostapd переключает интерфейс в режим "4addr", в котором заголовки содержат все четыре адреса. Если у вас установлен iw , запустите:

iw dev wlan0 set 4addr on

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .