Проводной к беспроводному мосту в Linux

Я пытаюсь настроить свой 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

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

Я где-то читал, что не все карты / устройства будут работать в режиме 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 ответов

Решение

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

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

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

  1. Вы проверили, установлен ли iptables в значение по умолчанию? 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 config (Debian / Ubuntu)

# Этот файл описывает сетевые интерфейсы, доступные в вашей системе # и как их активировать. Для получения дополнительной информации см. Interfaces(5).

# Петлевой сетевой интерфейс auto lo
iface lo inet loopback

# Мост между eth0 и wlan0 auto br0 iface br0 inet dhcp Предварительный набор ip-ссылок eth0 вниз pre-up ip-набор ссылок wlan0 down-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 набор IP-ссылок post-down eth0 вниз post-down набор ip-ссылок wlan0 вниз post-down набор ip-ссылок br0 вниз post-down brctl delif br0 eth0 wlan0 пост-вниз 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, а если это не сработает, ваш беспроводной ключ не поддерживает беспорядочный режим. (см. выше)

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

У меня есть несколько беспроводных мостов, работающих на 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 в настоящее время имеется ошибка, из-за которой интерфейсы моста могут не работать во время загрузки, но это совсем другая проблема.

Кажется, вам нужна переадресация IP

пытаться cat /proc/sys/net/ipv4/ip_forward

Если это 0 вопрос: echo 1 > /proc/sys/net/ipv4/ip_forward

настроить 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

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

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

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

Другие вопросы по тегам