Łączenie Wi-Fi z Ethernetem na Ubuntu nie działa

22

Podczas pracy w systemie Windows byłem w stanie zmostkować połączenie Wi-Fi za pośrednictwem połączenia Ethernet mojego laptopa, dzięki czemu tylko urządzenia Ethernet mogą odłączyć się od mojego Wi-Fi (Raspberry Pi, Xbox itp.). Próbuję teraz zrobić to samo w Ubuntu, tzn. Konfiguracja będzie następująca:

Router bezprzewodowy ---> Wi-Fi na laptopie ---> most do Ethernetu ---> Urządzenie, które wymaga internetu podłączonego do portu Ethernet

Teraz staram się, aby działało to w Ubuntu przy użyciu brctl

Użyłem poniższego polecenia:

sudo brctl addif br0 eth0 wlan0

I otrzymaj następujący błąd:

can't add wlan0 to bridge br0: Operation not supported

Mam nadzieję, że ktoś może pomóc, ponieważ nie wierzę, że coś, co mogę zrobić w systemie Windows, jest bardzo łatwe w Linuksie.

Jeśli potrzebujesz więcej informacji, daj mi znać. Dzięki

Zac Powell
źródło
Bardzo podobny problem rozwiązany w [ askubuntu.com/questions/155041/…
Legionair

Odpowiedzi:

10

Tego nie da się zrobić. Nie można zmostkować połączenia klienta Wi-Fi. Gdybyś mógł, nie potrzebowalibyśmy WDS, po prostu pomostilibyśmy.

Problem jest bardzo prosty - punkt dostępu jest zabroniony przez specyfikację WiFi nadawania ruchu przez sieć WiFi, chyba że coś autoryzuje tę transmisję. Jest to w dużej mierze relikt z czasów, gdy sieci Wi-Fi działały bardzo wolno i miały słabe zabezpieczenia, jeśli w ogóle.

Most ma tylko połączenie klienta z punktem dostępu. Upoważnia to tylko punkt dostępu do przesyłania ruchu związanego z mostem. Ponieważ wszystkie maszyny podłączone do mostu nie są klientami punktu dostępu, punkt dostępu nie ma powodu, aby wysyłać dla nich ruch związany przez łącze WiFi. Więc tak się nie stanie.

Niestety Wi-Fi wystarcza jak Ethernet, więc łatwo oczekiwać, że będzie działało jak Ethernet. Ale jest wystarczająco inny, aby cię ugryźć.

Konfiguracja WDS to specyficzna autoryzacja dla punktu dostępu do wysyłania ruchu niezwiązanego z żadnym z jego klientów. Gdy oba końce obsługują WDS, zawierają adres mostkowego punktu końcowego oraz adres miejsca docelowego, upoważniając punkt dostępu do wysłania ruchu.

Aby to zrobić, musisz użyć czegoś innego niż mostkowanie. Na przykład routing z NAT. Możesz także użyć trybu czterech adresów, jeśli oba końce łącza Wi-Fi go obsługują.

David Schwartz
źródło
3
Możesz rozwiązać ten problem, ponownie wpisując adresy mac za pomocą ebtables
carton
Zauważyłem, że jedna osoba tutaj mówi, że możesz to zrobić w Ubuntu .. i zrobiłem coś podobnego w Windowsie ... chociaż mówisz, że to niemożliwe, więc być może możesz wyjaśnić, jaka jest różnica między tym a tym. W systemie Windows, gdy robisz to youtube.com/watch?v=96Z1_6rX5qU WiFi podłączone do Internetu. Brak kabla w złączu Ethernet .. lub kabla innego komputera w złączu Ethernet. Następnie wybierając adapter WiFi i adapter Ethernet, łączy je, a następnie inny komputer może podłączyć kabel i korzystać z połączenia z Internetem. Myślę, że laptop nadal jest klientem WiFi (a nie punktem dostępu)
barlop
1
@DavidSchwartz Jeśli dana osoba ma laptopa bez działającego połączenia bezprzewodowego i nie ma przełącznika sieciowego, aby podłączyć go do Internetu, ale inny laptop ma bezprzewodowy dostęp do Internetu i nie ma zapasowej bezprzewodowej pamięci USB. Wydaje się, że jedynym rozwiązaniem jest oszustwo pomostowe. Gdyby oba laptopy miały działającą bezprzewodową kartę sieciową, mogłyby po prostu połączyć się z głównym bezprzewodowym punktem dostępowym, bez potrzeby stosowania dodatkowych punktów dostępu i WDS. Korzystałem z fałszywego mostka, gdy jeden laptop nie mógł wykonać połączenia bezprzewodowego.
barlop
1
Błędny. Na początek WDS to połączenie WiFi, podobnie jak inne. Po drugie, istnieją takie cutie-pie urządzenia zwane mostami klienta lub mostami mediów, które łączą się za pośrednictwem AP i transparentnie mostują 3-5 przewodowych gniazd, które mogą być koncentratorami itp. Dla pewności istnieją prawdopodobnie ograniczenia w ich działaniu i ile adresów MAC mogą zmostkować, ale w końcu ... jest sposób. Do diabła, nawet Linux pozwoli ci używać trybu WDS jako STA, jeśli ustawisz 4addr jako tryb na urządzeniu za pomocą polecenia iw, a sterownik pozwala to zrobić. Możesz przerzucić ... to tylko ma ... provisos.
Svartalf,
1
@DavidSchwartz: Routing? Poważnie? Oto podpowiedź. Aplikacja może mieć ponad 500 węzłów w sieci. Czy możesz sprawić, by routing z wdziękiem działał w ten sposób? „Real WDS”? Czy mogę mieć pewność, że będzie współpracować z Cisco, Arubą, Ubiquiti i innymi? Jeśli tak, to tak ... jeśli nie ... założenie to problem po wyjęciu z pudełka. Mam dość ładną pracę z szaleństwem, o które staram się w trybie WDS-Station ... ale czy będzie działać z czymś innym niż hostapd lub podobne urządzenie Linux?
Svartalf,
3

Miałem podobny problem z LXC, pracowałem nad problemem mostkowania w urządzeniach Wi-Fi. Najpierw potrzebujesz zapasowego urządzenia Ethernet w komputerze. Sztuką jest stworzenie trasy z urządzenia Ethernet do Wi-Fi.

W pliku serwera zmień / etc / network / interfaces, wybierz nieużywaną sieć dla swoich wirtualnych hostów, tj. 10.0.0.0. Przypisz jeden adres IP do zapasowego interfejsu Ethernet, tutaj jest eth0, łącząc go w następujący sposób:

auto br0
iface br0 inet static
    address 10.0.0.1
    netmask 255.255.255.0
    bridge_ports eth0
    bridge_fd 0
    bridge_maxwait 0

Po zakończeniu możesz przejść MASQUERADE w sposób, w jaki Kostyantyn odpowiedział tu wcześniej. Powinny one znajdować się w pliku rc.local lub w skrypcie, który należy uruchomić podczas rozruchu lub przed uruchomieniem domen wirtualnych:

# iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
# echo "1" > /proc/sys/net/ipv4/ip_forward

Na serwerze wirtualnym skonfiguruj statyczne adresy IP w / etc / network / interfaces. Używam sieci 10.0.0.0, zacznę używać od .2, kiedy utworzysz więcej wirtualnych hostów, prawdopodobnie będziesz używać 3, i tak dalej. Jeśli masz wiele, możesz rozważyć zainstalowanie dla nich serwera dhcp. .1 to brama skonfigurowana wcześniej.

auto eth0
iface eth0 inet static
    address 10.0.0.2
    netmask 255.255.255.0
    broadcast 10.0.0.255
    gateway 10.0.0.1

Skonfiguruj także serwer DNS, mój był routerem sieciowym, w /etc/resolv.conf:

nameserver 192.168.1.1

Mam nadzieję że to pomoże

Francesc Guasch
źródło
To sztuczka z warstwy 3, a nie „mostkowanie” - w momencie, gdy używasz iptables, jesteś routerem.
Svartalf,
0

Myślę, że tak naprawdę nie potrzebujesz pomostu, ale:

  • SNAT (jeśli sieć WLAN ma statyczny adres IP) (patrz ta strona )

lub

  • MASQUERADE (jeśli sieć WLAN ma dynamiczny adres IP - to znaczy zmiany adresu IP)

1) utwórz forwarding_enable_file.shz następującą zawartością:

#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

2) Uruchom plik:

sudo ./forwarding_enable_file.sh

3) na pozostałej części hosta określ bramę Ubuntu jako bramę UWAGA: jeśli niektóre z tych skrzynek również działają pod Linuksem, możesz to zrobić za pomocą tego polecenia:

sudo ip route add default via ubuntu-ip

gdzie ubuntu-ip należy zastąpić adresem IP ubuntu-box, tj. 192.168.1.10

4) spróbuj pingować część adresu IP, tj. 8.8.8.8 z innych hostów:

ping 8.8.8.8

5) sprawdź ustawienia DNS, wysyłając polecenie ping do pewnej domeny, tj .:

ping slivkoed.ru

6) jeśli krok 4) działa, a 5) nie, to masz problemy z ustawieniami DNS. w takim przypadku uruchom z uprawnieniami roota:

# echo "nameserver 8.8.8.8" > /etc/resolv.conf

Uruchom ponownie krok 5).

Więcej informacji na temat resolv.conf można znaleźć tutaj .

Kostyantyn
źródło
Zależy od tego, czego potrzebujesz. Jeśli potrzebujesz przezroczystości (macha ręką), nie, nie chcesz tego. Poważnie. Potrzebujesz takiego zachowania, jak zrezygnowany mostek multimediów TEW640-MB firmy Trendnet (sesja trybu STA podłączona do 4 portów Ethernet). Prawdopodobnie będzie to możliwe tylko w trybie WDS (4addr) lub w maskowaniu MAC ebtables (czego nie należy mylić z tym, co napisałeś) - oba mają swoje własne problemy i problemy.
Svartalf,
-1

Musisz obniżyć interfejsy przed ich połączeniem.

ifconfig eth0 w dół

ifconfig wlan0 w dół

Skandalist
źródło
1
Nadal pojawia się ten sam błąd, gdy oba interfejsy są wyłączone
Zac Powell
@Zac Powell używasz Network-Managera? Miałem kilka przeszłych doświadczeń, które mogą przeszkadzać. W takim przypadku możesz spróbować zatrzymać usługę i przywrócić ją później
Legionair
Tak, jestem ok, więc powinienem spróbować ich obalić i zatrzymać menedżera sieci, a następnie zrobić birdge i przywrócić wszystko?
Zac Powell,
tak, z service network-manager stop, a następnie zrób swoje, zacznij od nowaservice network-manager start
Legionair
wciąż nie działa: / wszystko jest zamknięte, ale nadal pojawia się ten sam błąd
Zac Powell
-4
sudo iw dev wlan1 set 4addr on
Emilio Navarrete Lineros
źródło
Chcesz wyjaśnić, jak to rozwiązać problem OP?
Braiam
@Braiam Moja odpowiedź wyjaśnia, dlaczego miałoby to działać, gdyby było obsługiwane przez AP.
David Schwartz
Niestety nie działa z wieloma AP. Jeśli chodzi o to, JAK MOŻE rozwiązać swój problem, jeśli działał poprawnie z większością AP, jest to, że daje on AP możliwość dodania dodatkowego MAC do liczby podanej w każdej ramce 802.11 w celu przekazywania ramek dla więcej niż tylko uwierzytelnionego MAC.
Svartalf,
Z innej odpowiedzi: serverfault.com/a/554663/280693
jhutar