17

Я пытаюсь настроить мой Raspberry Pi в качестве моста, используя Debian wheezy. У меня есть hostapd.conf: (некоторые детали изменены для безопасности, и да, я знаю, что WEP не годится)...

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=MY_SSID
channel=11
wep_default_key=0
wep_key0=MY_KEY
wpa=0

И это в /etc/network/interfaces:

auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
auto br0
iface br0 inet dhcp
bridge-ports eth0 wlan0

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

Я где-то читал, что не все карты / устройства будут работать в режиме hostap - они не будут передавать пакеты в одном направлении: это правильно? (Информация была немного устаревшей)- это моя карта:

[    3.663245] usb 1-1.3.1: new high-speed USB device number 5 using dwc_otg
[    3.794187] usb 1-1.3.1: New USB device found, idVendor=0cf3, idProduct=9271
[    3.804321] usb 1-1.3.1: New USB device strings: Mfr=16, Product=32, SerialNumber=48
[    3.816994] usb 1-1.3.1: Product: USB2.0 WLAN
[    3.823790] usb 1-1.3.1: Manufacturer: ATHEROS
[    3.830645] usb 1-1.3.1: SerialNumber: 12345

Итак, что я здесь не так?

Обновление: Итак, я провел дальнейшие исследования и могу установить мост, но, по-видимому, это разрушает (проводное) соединение Ethernet, что странно. Например, на RPi:

Загрузите систему ...

ping 192.168.62.1 

(роутер) - это работает

Попытка связаться с беспроводной локальной сетью ... не удалась (или, скорее, "с ограниченной связью" на телефоне Android - не имеет смысла)

brctl showmacs br0

Это просто показывает Mac Wlan0 и Mac телефона на данный момент

brctl addif br0 eth0 wlan0

Теперь я могу связать телефон с беспроводной сетью, но ...

ping 192.168.62.1

... терпит неудачу

И так же я больше не могу пинговать RasPi с любой другой машины в сети

Бег

ifconfig br0

Предполагает, что мост сбрасывает пакеты ...

Есть идеи?

Дальнейшее обновление: файл /etc/network/interfaces сейчас (и для приведенной выше последовательности) выглядит так:

auto lo eth0

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

5 ответов5

10

Мосты сделаны легко:

Есть проект на sourceforge, созданный специально для вашей ситуации. http://sourceforge.net/projects/bridger/ Это даже входит в пакет deb.

Что касается «отбрасывания» пакетов:

  1. Вы проверили, установлен ли iptables по умолчанию drop? sudo iptables --list должен сказать «ПРИНЯТЬ, ПРИНЯТЬ, ПРИНЯТЬ» для поля этого типа. Если это проблема, выключите его.

  2. Вы даже пересылаете пакеты, брат? Убедитесь, что строка «net.ipv4.ip_forward = 1» НЕ закомментирована в /etc/sysctl.conf (это по умолчанию), затем перезапустите свою сеть.

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

Чистый мост против общего моста:

  1. iface br0 inet dhcp указывает общий мост, что означает, что сам мост получает ip и может быть конечной точкой для трафика.

  2. Чистый мост не получает IP-адрес, а только перенаправляет трафик между двумя интерфейсами

  3. Образец общего файла /etc /network /interfaces (Debian /Ubuntu)

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# Bridge between eth0 and wlan0
auto br0
iface br0 inet dhcp
  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 wlan0
  pre-up ip addr flush dev eth0
  pre-up ip addr flush dev wlan0
  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

Перезагрузите сеть: sudo /etc/init.d/networking restart После внесения сложных изменений в конфигурацию сети проще просто перезагрузиться, чем убедиться, что все перезагрузилось при перезагрузке.

Вы думаете, что у вас есть проблемы с маршрутизацией:

  1. Устраните DNS как причину , протестировав с помощью ping 8.8.8.8 . Если это работает, возможно, у вас проблема с DNS в вашей сети.

  2. Проверьте ваш шлюз с помощью sudo ip route надеюсь, вы увидите default via 192.168.1.1 dev br0 proto dhcp (при условии, что ваш шлюз 192.168.1.1). Если он отсутствует или неправильный, исправьте его sudo ip route add default via 192.168.1.1 . Проверьте снова: ping 8.8.8.8

  3. Обновите ip вашего общего моста с помощью dhclient br0 и повторите проверку с помощью ping 8.8.8.8

  4. Проверьте ваши подчиненные интерфейсы с помощью ifconfig и убедитесь, что у eth0 и wlan0 нет IP-адресов. Теперь они часть моста. Если это так, убедитесь, что вы удалили их из всех файлов конфигурации, установите для них статический 0.0.0.0 или что-то еще.

Если НИЧЕГО из этого не работает, попробуйте это приложение для моста Debian, и если это не сработает, ваш беспроводной ключ не поддерживает беспорядочный режим. (см. выше)

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

6

У меня есть несколько беспроводных мостов, работающих на Debian Linux и Openwrt, поэтому я очень хорошо знаком с этой проблемой.

Вы пропустили одну важную команду: вы забыли сказать своему беспроводному драйверу передавать 4-адресные кадры (иногда неправильно / исторически называемые WDS), что требуется для 802.11 / беспроводного моста. Сделайте это с помощью команды "iw dev wlan0 set 4addr on". Используйте инструкцию «pre-up» в файле интерфейсов Debian на мосту, чтобы применить его перед тем, как запустить мост. Обратите внимание, что для 4-адресного фрейма требуется поддержка драйверов, а некоторые старые драйверы 802.11 или аппаратные средства могут не поддерживать его.

Я также сильно подозреваю, что ваши проблемы могли быть осложнены ошибкой в ядре Linux, которая конкретно затрагивает мостовые интерфейсы. Я сам столкнулся с этой ошибкой и должен был скомпилировать свой собственный wpa_supplicant из исходных кодов, потому что версия в Debian старая и уязвимая. wpa_supplicant и hostapd имеют общую базу кода, но я не совсем уверен, что это влияет на hostapd и wpa_supplicant.

Здесь есть обходное решение:

https://w1.fi/cgit/hostap/commit/?id=e6dd8196e5daf39e4204ef8ecd26dd50fdca6040

У меня сложилось впечатление, что это в версии 2.5, и я знаю, что это в текущей версии 2.6. Текущая версия Debian - 2.4, но она не работает. Пожалуйста, приставьте к проекту Debian, чтобы обновить их пакеты wpasupplicant и hostapd.

Вот пример конфигурации для клиента беспроводного моста, использующего WPA/WPA2 с беспроводным мостом между интерфейсами wlan0 и eth0, при этом хост получает DHCP-адрес на интерфейсе br0 (замените "dhcp" на "manual" для отсутствия IP-адреса). Для ситуации, когда вы хотите быть AP, включите команды interface = и bridge = в hostapd.conf и опустите команды wpa- * ниже.

В вашем файле /etc /network /interfaces:

allow-auto br0
iface br0 inet dhcp
    bridge_ports wlan0 eth0
    bridge_stp off
    bridge_waitport 5
    bridge_fd 0
    wpa-ssid mynetwork
    wpa-psk abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123
    wpa-iface wlan0
    wpa-bridge br0
    pre-up iw dev wlan0 set 4addr on
    post-down iw dev wlan0 set 4addr off

И убедитесь, что ваш wpa_supplicant версии 2.5 или новее. Он не будет работать с wpa_supplicant 2.4 и текущими версиями ядра.

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

3

Вы, кажется, нуждаетесь в пересылке ip.

попробуйте cat /proc/sys/net/ipv4/ip_forward

Если проблема 0 : echo 1 > /proc/sys/net/ipv4/ip_forward

0

настроить wlan0

vi /etc /network /interface

iface eth0 inet static
address 192.168.2.1
network 192.168.2.0
netmask 255.255.255.0
broadcast 192.168.2.255

vi /etc/sysctl.conf

net.ipv4.ip_forward=1

vi /etc/rc.local

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o wlan0 -j MASQUERADE
0

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

У eth0 и wlan0 не должно быть IP-адресов (то есть 0.0.0.0), и при желании вы всегда можете использовать IP-адрес для br0.

Вот также некоторая официальная документация: http://wiki.debian.org/BridgeNetworkConnections

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