Przewodowy do mostka bezprzewodowego w systemie Linux

17

Próbuję skonfigurować mój Raspberry Pi jako pomost, używając wheezy Debiana. Mam hostapd.conf: (niektóre szczegóły zmieniono dla bezpieczeństwa i tak, wiem, że WEP nie jest dobra) ...

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

A to w /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

Wygląda na to, że wszystko idzie dobrze, ale nie mogę skojarzyć się z połączonym mostem połączeniem bezprzewodowym - nawet jeśli migające lampki na pamięci USB sugerują wymianę pakietów.

Czytałem gdzieś, że nie wszystkie karty / urządzenia będą działały w trybie Hostap - nie przepuszczą pakietów w jednym kierunku: prawda? (Informacje były trochę stare) - to moja karta:

[    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

Więc co się tutaj pomyliłem?

Aktualizacja : Przeprowadziłem więc dalsze dochodzenia i mogę podnieść most, ale najwyraźniej niszczy to (przewodowe) połączenie Ethernet, co jest dziwne. Np. Na RPi:

Uruchom system ...

ping 192.168.62.1 

(router) - to działa

Próba skojarzenia się z bezprzewodową siecią LAN ... kończy się niepowodzeniem (a raczej „z ograniczoną łącznością” na telefonie z Androidem - to niedobrze)

brctl showmacs br0

To po prostu pokazuje mac wlan0 i mac telefonu w tym momencie

brctl addif br0 eth0 wlan0

W tym momencie mogę teraz powiązać telefon z siecią bezprzewodową, ale ...

ping 192.168.62.1

... zawodzi

I podobnie nie mogę już pingować RasPi z żadnej innej maszyny w sieci

Bieganie

ifconfig br0

Sugeruje, że most upuszcza pakiety ...

Jakieś pomysły?

Dalsza aktualizacja : /etc/network/interfacesplik teraz (i dla powyższej sekwencji) brzmi:

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
adrianmcmenamin
źródło
Jest to zdecydowanie temat na temat Super User, więc nie martw się. Powodzenia z nagrodą, jestem ciekawy, jaka jest odpowiedź.
Przełom
Co iw dev wlan0 infopokazuje A Google na swoim identyfikatorze urządzenia pokazuje, że potrzebujesz najnowszego jądra lub modułów bezprzewodowych do uruchomienia tego urządzenia w trybie AP. Zobacz to . Z jakiego jądra i ath9ksterownika korzystasz?
gertvdijk
Zobacz także tę odpowiedź .
Thomas Guyot-Sionnest,

Odpowiedzi:

10

Łatwe mosty:

Jest projekt na sourceforge stworzony specjalnie dla twojej sytuacji. http://sourceforge.net/projects/bridger/ Jest nawet dostępny jako pakiet deb.

W odniesieniu do „upuszczania” pakietów:

  1. Czy sprawdziłeś, czy iptables jest ustawiony na domyślny upuszczanie? sudo iptables --list powinien powiedzieć „AKCEPTUJ, AKCEPTUJ, AKCEPTUJ” w polu tego typu. Jeśli to jest problem, wyłącz go.

  2. Przesyłasz nawet pakiety, stary? Upewnij się, że wiersz „net.ipv4.ip_forward = 1” NIE jest komentowany w /etc/sysctl.conf (jest to domyślnie), a następnie uruchom ponownie sieć.

  3. Tryb promiscuous nie jest obsługiwany przez klucz bezprzewodowy. (co oznacza, że ​​nie może zaakceptować pakietów, które nie są do tego przeznaczone)

Pure Bridge vs. Shared Bridge:

  1. iface br0 inet dhcp wskazuje współużytkowany most, co oznacza, że ​​sam most otrzymuje adres IP i może być punktem końcowym dla ruchu.

  2. Czysty most nie otrzymuje adresu IP i przesyła dalej ruch między dwoma interfejsami

  3. Przykładowy plik konfiguracji współdzielonego mostu / etc / network / interfaces (Debian / Ubuntu)

# Ten plik opisuje interfejsy sieciowe dostępne w twoim systemie
# i jak je aktywować. Aby uzyskać więcej informacji, zobacz interfejsy (5).

# Interfejs sieciowy sprzężenia zwrotnego
auto lo
iface lo inet loopback

# Most pomiędzy eth0 i wlan0
auto br0
iface br0 inet dhcp
  wstępne łącze ip ustawić et0 w dół
  pre-up ip link set wlan0 down
  pre-up brctl addbr br0
  wstępne 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

Uruchom ponownie sieć: sudo /etc/init.d/networking restartpo dokonaniu skomplikowanych zmian konfiguracji sieci łatwiej jest po prostu zrestartować komputer niż upewnić się, że wszystko zrestartowało się poprawnie przy ponownym uruchomieniu.

Myślisz, że masz problemy z routingiem:

  1. Wyeliminuj DNS jako przyczynę , testując ping 8.8.8.8. Jeśli to zadziała, prawdopodobnie masz problem z DNS w swojej sieci.

  2. Sprawdź swoją bramę z sudo ip routenadzieją, że ją widzisz default via 192.168.1.1 dev br0 proto dhcp(zakładając, że twoja brama to 192.168.1.1). Jeśli brakuje lub jest źle, napraw to sudo ip route add default via 192.168.1.1. Przetestuj jeszcze raz:ping 8.8.8.8

  3. Odnowić wspólny mostu IP z dhclient br0i ponowny test zping 8.8.8.8

  4. Sprawdź swoje interfejsy „slave” z ifconfigi upewnij się, eth0 i wlan0 NIE mają adresy IP. Są teraz częścią mostu. Jeśli tak, upewnij się, że usunąłeś je ze wszystkich plików konfiguracyjnych, ustaw je na static 0.0.0.0 lub coś takiego.

Jeśli ŻADNA z tych funkcji nie działa, wypróbuj tę aplikację mostkującą Debiana, a jeśli to nie zadziała, twój bezprzewodowy klucz sprzętowy nie obsługuje trybu rozwiązanego. (patrz wyżej)

Jeśli tutaj działa, zrestartuj komputer i upewnij się, że nadal działa.

MattPark
źródło
Proszę zobaczyć najnowszą aktualizację pliku interfejsów i tak, wszystkie łańcuchy są ustawione na AKCEPTUJĘ
adrianmcmenamin 18.12.12
Te instrukcje działają, przynajmniej w tym sensie, że jeśli zastosuję dhclient br0 i podam, że eth0 jest zablokowany do 0.0.0.0, teraz muszę tylko dowiedzieć się, jak to zrobić automatycznie :)
adrianmcmenamin
OK, mam to uruchomione z odrobiną jiggery pokery poprzez skrypty rc.local (zasadniczo muszę zrestartować hostapd) - więc dostaniesz nagrodę. Ale teraz mój serwer kałamarnic na tym samym urządzeniu zawodzi - ale nie pytałem cię o to, więc będzie to kolejne pytanie.
adrianmcmenamin
Pytanie Squid teraz na superuser.com/questions/522332/…
adrianmcmenamin
Jakie są eth0i wlan0ustawienia w tym przykładzie? W szczególności, w jaki sposób ustawić identyfikator SSID i jakiekolwiek uwierzytelnianie wlan0?
Ian
6

Mam kilka mostków bezprzewodowych pracujących w systemie Debian Linux i Openwrt, więc doskonale znam ten problem.

Pominięto jedno ważne polecenie: Zapomniałeś powiedzieć sterownikowi bezprzewodowemu, aby transmitował ramki 4-adresowe (czasami niepoprawnie / historycznie nazywane WDS), które są wymagane do mostkowania bezprzewodowego 802.11 /. Zrób to za pomocą polecenia „iw dev wlan0 set 4addr on”. Użyj instrukcji „wstępnej” w pliku interfejsów Debiana na moście, aby zastosować ją przed uruchomieniem mostu. Należy pamiętać, że tryb ramki z czterema adresami wymaga obsługi sterowników, a niektóre stare, kiepskie sterowniki lub sprzęt 802.11 mogą go nie obsługiwać.

Podejrzewam również, że twoje problemy mogły być skomplikowane przez błąd w jądrze Linuksa, który konkretnie wpływa na mostkowane interfejsy. Sam napotkałem ten błąd i musiałem skompilować własny wpa_supplicant ze źródeł, ponieważ wersja w Debianie jest stara i dotyczy jej. wpa_supplicant i hostapd współużytkują wspólną bazę kodu, ale nie jestem całkowicie pewien, czy to wpłynęło na hostapd, a także wpa_supplicant.

W tym przypadku istnieje obejście tego problemu:

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

Mam wrażenie, że jest to wersja 2.5 i wiem, że jest w bieżącym źródle wersji 2.6. Obecna wersja Debiana to 2.4, która jest zepsuta. Proszę prześladować projekt Debian, aby zaktualizować ich pakiety wpasupplicant i hostapd.

Oto przykładowa konfiguracja klienta mostu bezprzewodowego korzystającego z WPA / WPA2 z mostkiem bezprzewodowym między interfejsami wlan0 i eth0, z hostem otrzymującym adres DHCP na interfejsie br0 („dhcp” na „manual” dla braku adresu IP). W sytuacji, gdy chcesz być AP, dołącz do interfejsu hostapd.conf polecenia interface = i bridge = i pomiń poniższe polecenia wpa- *.

W twoim pliku / 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

I upewnij się, że Twój wpa_supplicant ma wersję 2.5 lub nowszą. Nie będzie działać z wpa_supplicant 2.4 i aktualnymi wersjami jądra.

Powinienem również zauważyć, że obecnie występuje błąd wyścigu w ifup, w którym interfejsy mostkowe mogą nie pojawić się w czasie rozruchu, ale to zupełnie inna kwestia.

turnip_turnip_turnip
źródło
3

Wydaje się, że potrzebujesz przekazywania IP.

próbować cat /proc/sys/net/ipv4/ip_forward

Jeśli to 0problem:echo 1 > /proc/sys/net/ipv4/ip_forward

CSᵠ
źródło
sys.net.ipv4.ip_forwarddotyczy routingu IPv4, NAT itp. Mosty działają jedną warstwę poniżej w stosie sieciowym.
Thomas Guyot-Sionnest
0

Mostkowanie może działać tylko wtedy, gdy interfejs odbierze wszystkie pakiety, w przeciwnym razie otrzymają pakiety skierowane tylko do nich. Obecna konfiguracja może opisywać konfigurację routera, ale nie mostka.

eth0 i wlan0 nie powinny mieć adresów IP (co oznacza 0.0.0.0), aw razie potrzeby zawsze możesz użyć adresu IP dla br0.

Oto niektóre oficjalne dokumenty: http://wiki.debian.org/BridgeNetworkConnections

John Wilcox
źródło
1
Wiem, że to stary post, ale ponieważ znalazłem go podczas szukania czegoś innego, pomyślałem, że wspomnę, że nie ma znaczenia, czy interfejs mostu ma / nie ma adresu IP w zakresie mostkowania. W systemie Linux mostkowany interfejs będzie również przekazywał pakiety ARP (warstwa OSI 2). Każdy przełącznik zmapuje wiele urządzeń podłączonych do drugiej strony mostu jako zaakceptowane na tym porcie przełącznika. Moje referencje to doświadczenie we wdrażaniu serwerów Linux jako routerów, mostów, zapór ogniowych itp. W przypadku wdrożeń o wysokiej dostępności w centrach danych najwyższego poziomu, w tym w jednym głównym amerykańskim NAP dla S. America
jetole
0

skonfiguruj 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
woda netto
źródło