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


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

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

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

Это определенно актуально для Super User, так что не беспокойтесь. Удачи с щедростью, мне любопытно узнать, каков ответ.
Прорыв

Что iw dev wlan0 infoпоказывает? И поиск в Google по идентификатору вашего устройства показывает, что вам нужно новейшее ядро ​​или беспроводные модули для запуска этого устройства в режиме точки доступа. Смотрите это . Какое ядро ​​и ath9kдрайвер вы используете?
gertvdijk

Ответы:


10

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

Существует проект 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).

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

# Мост между eth0 и wlan0
авто br0
iface br0 inet dhcp
  Предварительная настройка ip-ссылки отключила eth0
  Предварительная настройка ip-ссылки на wlan0
  предварительная загрузка brbrl addbr br0
  предварительная подготовка brctl addif br0 eth0 wlan0
  предварительный ip addr flush dev eth0
  предварительный запуск ip addr flush dev wlan0
  IP-ссылка post-down установила eth0 вниз
  IP-ссылка post-down установила wlan0 вниз
  IP-ссылка post-down установила br0 вниз
  пост-вниз 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. Обновите свой общий мост внутрибрюшинно с dhclient br0и повторным тестированием сping 8.8.8.8

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

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

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


Пожалуйста, смотрите последнее обновление для файла интерфейсов и, да, все цепочки установлены на ACCEPT
adrianmcmenamin

Эти инструкции работают, по крайней мере, в том смысле, если я применяю dhclient br0 и указываю, что eth0 заблокирован до 0.0.0.0, теперь просто нужно разобраться, как сделать это автоматически :)
adrianmcmenamin

Ладно, у меня все работает, и я немного поиграю с помощью скриптов rc.local (по сути, я должен перезапустить hostapd) - так что вы получите награду. Но теперь мой squid-сервер на том же компьютере выходит из строя - но я не спрашивал вас об этом, поэтому это должен быть другой вопрос.
adrianmcmenamin

Вопрос о кальмарах сейчас на superuser.com/questions/522332/…
adrianmcmenamin

Какие eth0и wlan0настройки в этом примере? В частности, как вы устанавливаете SSID и любую аутентификацию для wlan0?
Ян

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


sys.net.ipv4.ip_forwardпредназначен для маршрутизации IPv4, NAT и т. д. Мосты работают на один уровень ниже в сетевом стеке.
Томас Гайот-Сионнест

0

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

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

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


1
Я знаю, что это старый пост, но так как я нашел его во время поиска чего-то другого, я подумал, что упомяну, что не имеет значения, если интерфейс моста имеет / не имеет IP-адрес, если речь идет о мостовом соединении. В Linux мостовой интерфейс также будет ретранслировать пакеты ARP (уровень OSI 2). Любой коммутатор отобразит несколько устройств, подключенных к другой стороне моста, как принимаемые через этот порт коммутатора. Мой пример - опыт развертывания серверов Linux в качестве маршрутизаторов, мостов, брандмауэров и т. Д. Для развертываний высокой доступности в центрах обработки данных высшего уровня, включая один основной NAP США для
Южной

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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.