Підключений до бездротового мосту в Linux


17

Я намагаюся встановити свій Raspberry Pi як міст, використовуючи дихання Debian. Я маю 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 

(router) - це працює

Спроба пов'язати з бездротовою локальною мережею ... не вдається (а точніше "з обмеженим доступом" на телефоні 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, так що не турбуйтеся. Удачи вам у вдячності, мені цікаво дізнатися, яка відповідь.
Breakthrough

Що робить iw dev wlan0 info показати? І Google за допомогою ідентифікатора вашого пристрою показує, що вам потрібен останні ядра або бездротові модулі для запуску цього пристрою в режимі AP. Подивитися це . Яке ядро ​​і ath9k драйвер працює?
gertvdijk

Дивіться також це відповідь .
Thomas Guyot-Sionnest

Відповіді:


10

Мости спрощені:

Є проект на sourceforge зроблений тільки для вашої ситуації. http://sourceforge.net/projects/bridger/ Він навіть поставляється як пакет deb.

Що стосується "падіння" пакетів:

  1. Ви перевірили, чи встановлено iptables за замовчуванням? sudo iptables --list Слід сказати "ACCEPT, ACCEPT, ACCEPT" для коробки такого типу. Якщо це питання, вимкніть його.

  2. Ви навіть пересилаєте пакети, брат? Переконайтеся, що рядок "net.ipv4.ip_forward = 1" НЕ коментується в /etc/sysctl.conf (він за замовчуванням), а потім перезавантажте мережу.

  3. Режим без змін не підтримується за допомогою бездротового ключа. (мається на увазі, що він не може приймати пакети, які не призначені для нього)

Міст чистий міст проти спільного:

  1. iface br0 inet dhcp позначає a спільно міст, що означає, що сам міст отримує 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 або щось інше.

Якщо це НЕ працює, спробуйте цю дебіан-мостову програму, і якщо це не спрацює, ваш бездротовий ключ не підтримує безладний режим. (Дивись вище)

Якщо він працює в будь-який час, перезавантажте комп'ютер і переконайтеся, що він все ще працює.


Будь ласка, ознайомтеся з останнім оновленням файлу інтерфейсів і, так, всі ланцюги встановлено на ACCEPT
adrianmcmenamin

Ці інструкції працюють, принаймні, в тому сенсі, якщо я застосовую dhclient br0 і вказую, що eth0 заблокований до 0.0.0.0, тепер треба тільки розібратися, як зробити його автоматичним :)
adrianmcmenamin

Добре, я маю це та бігаю з трохи jiggery pokery через rc.local сценарії (по суті я мушу перезапустити hostapd) - так ви отримуєте bounty. Але зараз мій squid сервер на тій же коробці зазнає невдачі - але я не попросив вас про що, так йому буде повинен бути інше питання.
adrianmcmenamin

Питання Кальмар зараз superuser.com/questions/522332/…
adrianmcmenamin

Що таке eth0 і wlan0 налаштування в цьому прикладі? Зокрема, як ви встановлюєте SSID і будь-яку аутентифікацію для wlan0?
Ian

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-адреси). Для ситуації, в якій ви хочете бути АР, включіть інтерфейс = і 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 і т.д. Мости працюють в одному шарі нижче в мережному стеку.
Thomas Guyot-Sionnest

0

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

eth0 і wlan0 не повинні мати IP-адрес (тобто 0.0.0.0), і при бажанні ви завжди можете використовувати IP-адресу для br0.

Ось також офіційна документація: http://wiki.debian.org/BridgeNetworkConnections


1
Я знаю, що це старий пост, але так як я знайшов його в пошуках чогось іншого, я думав, що я б згадав, що це не має значення, якщо мостовий інтерфейс робить / не має IP-адресу, наскільки мостовий. У Linux інтерфейс, що працює з мостом, також передає ARP-пакети (OSI-шар 2). Будь-який перемикач буде відображати кілька пристроїв, підключених до іншої сторони мосту, як прийнятий на цьому порт комутатора. Я маю на увазі досвід розгортання серверів Linux як маршрутизаторів, мостів, брандмауерів і т.д. для розгортання високої доступності в центрах обробки даних верхнього рівня, включаючи один первинний NAP для США
jetole

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.