GNU/Linux >> Znalost Linux >  >> Linux

Přemostění wlan0 do eth0

Řešení 1:

Chcete-li přemostit Wi-Fi rozhraní můžete použít iw nástroj pro aktivaci 4addr podobně:

# iw dev <wifiInterface> set 4addr on

tj.:

# brctl addif <bridgename> <wifiInterface>
can't add <wifiInterface> to bridge <bridgename>: Operation not supported

# iw dev <wifiInterface> set 4addr on
# brctl addif <bridgename> <wifiInterface>

Nyní by to mělo fungovat. Mosty můžete zobrazit pomocí:

# brctl show

Řešení 2:

AKTUALIZACE

Podle tohoto vlákna na linux-ath5k-devel není možné přemosťovat mezi bezdrátovým (režim klientské stanice) a drátovým rozhraním.

Nastavit NAT

Místo toho byste měli nastavit NAT:

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

Přiřazení adresy IP

Poté si musíte přiřadit IP adresy:

ifconfig eth0 10.0.0.1 netmask 255.255.255.0 up

Nainstalujte démona dhcp

Nainstalujte server dhcp a přidejte následující text do jeho konfiguračního souboru (v /etc/dhcpd.conf nebo něčem podobném)

subnet 10.0.0.0 netmask 255.255.255.0 {
    range 10.0.0.100 10.0.0.120;
    option routers 10.0.0.1;
    option domain-name-servers the-ip-address-you-have-in-etc-resolv.conf;
}

Spustit dhcpd

Poté jej spusťte /etc/init.d/dhcpd start

A je to!

Níže čtěte pouze v případě, že vás zajímá nefunkční nastavení přemostění

brctl addbr mybridge
brctl addif mybridge eth0
brctl addif mybridge wlan0

Nejprve vytvoříte rozhraní mostu, zvolím libovolný název mybridge pak k němu přidejte rozhraní.

Měli byste požádat o novou IP adresu (je potřeba pouze v případě, že chcete získat platnou IP adresu pro samotné přemosťovací zařízení):

dhclient -d mybridge

Řešení 3:

Bridge wlan a 4addr:

Přemostění wlan0 je bolest. Normálně jej nemůžete přidat do rozhraní mostu (brctl vrátí „Operace není povolena“) a použití „přemostěného“ filtru VirtualBox má za následek velkou změť konfliktů ARP a DHCP. Příčinou toho je, že rámce 802.11 ve výchozím nastavení obsahují pouze tři adresy:MAC adresy obou bezdrátových zařízení (laptop a AP) a koncového příjemce (jako v Ethernetu). Vždy se předpokládá, že existuje pouze jeden možný původce.

802.11 může nést čtvrtou MAC adresu původce, kterou v režimu WDS používají opakovače. Tato funkce může být povolena také v Linuxu pomocí iw a povolení tohoto režimu umožní použití wlan0 v mostových rozhraních a také s přemostěnou sítí VirtualBox:

iw dev wlan0 set 4addr on

S povoleným 4addr však budete pravděpodobně přístupovým bodem zcela ignorováni:přidružení je úspěšné, ale všechny datové rámce zmizí v éteru. Mohlo by to být z bezpečnostních důvodů (protože je zatraceně těžké podvrhnout zdrojovou MAC adresu. Jo.) V mém routeru (běžícím OpenRG) je nutné povolit režim "WDS" pro bezdrátové rozhraní AP, přidat zařízení WDS omezené na můj MAC adresu notebooku a přidejte ji do LAN bridge. Pakety 4addr nyní fungují.

S tím je však spojen další problém – router nyní odmítá pakety se třemi adresami z notebooku, což může být poněkud nepohodlné (musí přepínat 4addr při každé změně sítě WLAN). Řešením je přidat do notebooku druhé bezdrátové rozhraní propojené se stejným zařízením, ale s jinou MAC adresou. Nejprve vraťte zpět předchozí konfiguraci:

iw dev wlan0 set 4addr off

Poté přidejte druhé rozhraní – název byl zvolen libovolně – s jinou MAC adresou:

iw dev wlan0 interface add wds.wlan0 type managed 4addr on
ip link set dev wds.wlan0 addr <addr>
ip link set dev wds.wlan0 up

Zde se musí shodovat s adresou zařízení WDS nakonfigurovanou v routeru; kromě toho to může být jakákoli platná MAC adresa. Původní MAC z wlan0 pak zůstane pro "normální" použití.

Je možné používat současně wlan0 i wds.wlan0 – i když jsem testoval přidružení ke stejnému AP pouze dvakrát, nikoli k různým AP. Hádám, že by museli být alespoň na stejném kanálu.

Někteří lidé se ptali, proč to používat, když VirtualBox dokáže „v pohodě“ přemostit WiFi. Odpověď zní, že VirtualBox neposílá MAC adresy virtuálních strojů; spíše provádí NAT i na vrstvě MAC. – 22. 8. 2014

Přímý most wlan

Za určitých okolností můžete také použít wlan_kabel. Využívá paketové sokety k přímému přemostění zařízení wlan* s ethernetovými zařízeními. Pomocí wlan_kabel však můžete přemostit pouze jeden MAC najednou. Nemá tu nevýhodu, že by byl blokován přístupovými body, protože se používá pouze původní MAC zařízení wlan. Ve vašem případě by to znamenalo, že wlan0 by mohl používat pouze jeden virtuální počítač a dokonce ani hostitel. Wlan_kabel můžete získat zde. Toto je podobné řešení macvlans.

Propojení s ipvlan

IP Vlan nemá omezení mostu, mohl by být použit k přemostění sítě Podrobnosti o tom, jak jej používat, naleznete zde

Alternativa maškarády

Linuxové směrování lze místo toho použít s iptables-masquerade a ip_forward k dosažení mostu, ale jak již bylo zmíněno, vyžaduje to povolení ip_forward a způsobí, že se linux bude chovat jako router, což je potřeba nastavit opatrně, protože by to mohlo představovat určité bezpečnostní riziko.

# bridge setup
brctl addbr br0
ifconfig br0 10.10.20.1/24 up
 
# enable ipv4 forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
 
# netfilter cleanup
iptables --flush
iptables -t nat -F
iptables -X
iptables -Z
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
 
# netfilter network address translation
iptables -t nat -A POSTROUTING -o wlan0 -s 10.10.20.0/24  -j MASQUERADE

Rozhraní br0 pak bude mít přístup k síti wlan0

Důležité a související

Také, a to je velmi důležité, byste neměli používat zastaralé, zastaralé příkazy jako ifconfig, brctl , a tak dále. Sada iproute2 obsahuje příkazy pro toto všechno, včetně nastavení virtuálních rozhraní (něco, pro co jsme kdysi museli používat openvpn) a vytváření mostů. Pokud nevíte, jak nastavit bridge s ip, tady to máme

  ip tuntap add tap0 mode tap user root 
  ip link set tap0 up
  ip link add br0 type bridge
  ip link set tap0 master br0
  ip link set eth0 master br0
  ip addr add 10.173.10.1/24  dev br0
  ip link set br0 up

Pomocí této sady příkazů vytvoříme virtuální rozhraní nazvané tap0, potom most nazvaný br0, potom mostu zotročíme eth0 a tap0, kterému přiřadíme IP adresu 10.173.10.1, a pak to všechno vyvoláme. Jsou vyžadovány tři samostatné instance spuštění rozhraní (pro tap0, eth0 a br0).

Trik, jak to udělat, je použít proxy.arp, který umožňuje vašemu počítači (nikoli vašemu VM/Linux kontejneru/síťovému jmennému prostoru) odpovídat na dotazy ARP místo nich.

Jinými slovy, pomocí předávání IPv4 mezi vaším hardwarovým rozhraním a vaším virtuálním rozhraním si myslíte, že můžete připojit váš VM/LXC/NNS k vaší LAN, jako by to bylo fyzické rozhraní, ale není to pravda:zapomínáte na to, základní provoz ARP, což je to, co skutečně umožňuje provoz LAN. Problém tedy je:pokud správně přesměruji provoz IPv4, jak mohu přesměrovat také provoz ARP, aby můj VM/LXC/NNS fungoval? Trik je v použití proxy-arp.

Úplnou odpověď na to najdete na blogu Bohdi Zazena s prozrazujícím názvem:Přemostění bezdrátových karet. K vytvoření virtuálního rozhraní pomocí příkazu tunctl používá zastaralý balíček uml-utilities:toto je jediný příkaz, pro který používá uml-utilities, takže stahování balíčku můžete klidně zanedbat a použít příkaz I napsal výše, abyste vytvořili rozhraní tap nebo tun, podle toho, co chcete, stačí odpovídajícím způsobem upravit příkaz. pak vytvořte pár veth pro váš LXC a nyní vytvořte most mezi tap0 a veth0. Tento most, nazvaný br0, je to, pro co musíte použít proxy-arp, namísto jednoduchého rozhraní tap0 popsaného Bohdi Zazenem.

Zdroje:askubuntu.com, nullroute.eu.org, firejail.wordpress.com, superuser.com

Řešení 4:

Záleží na tom, jak moc je pro vás AP:

1) Možná bude chtít vidět pouze pakety přicházející od vás s vaší známou adresou linkové vrstvy (a tedy ne přemostěných paketů) 2) Ve skutečnosti by to mohlo být ještě chytřejší a vědět, která IP adresa by měla patřit ke které adrese linkové vrstvy (protože zná DHCP a kontroluje ho)

Pokud platí 1+2, potřebujete skutečně něco jako IP NAT, DHCP, ..

Pokud však platí pouze 1), můžete zfalšovat adresu linkové vrstvy a zpětně ji namapovat na tu správnou v opačném směru, jak je popsáno zde:

https://wiki.debian.org/BridgeNetworkConnections#Bridging_with_a_wireless_NIC

Řešení 5:

4addr, jak je popsáno v jiných odpovědích, je určitě nejlepší způsob, když je podporován adaptérem / ovladačem, ale ne všechny. NAT může pro některé věci fungovat, ale získání správné komunikace oběma způsoby na síti LAN bude problematické (např. připojení tiskárny nebo přístup k jiným zařízením IoT na druhé straně NAT). Cokoli, co závisí na vysílání/multicast (např. auto-discovery, bonjour), selže přes NAT.

Alternativou je použití ARP Proxy (parprouted), jak je popsáno v https://wiki.debian.org/BridgeNetworkConnectionsProxyArp. Nastavil jsem to na Raspberry Pi pro tiskárnu a funguje to jako kouzlo (přidal jsem 10 sekund spánku v post-up příkazy, aby nejprve získal IP adresu, může to souviset s pomalostí mého starého RPi...)


Linux
  1. Linux – výstupní provoz na různých rozhraních na základě cílového portu?

  2. Linux – Device Eth0 se nezdá být přítomen, zpožďuje se inicializace?

  3. Jak udělat IP adresu statickou (eth0)?

  1. eth0 se nespustí při startu po klonu Virtualboxu

  2. Nakonfigurovat server DNS podle rozhraní nic (eth0 / eth1)?

  3. Co znamená název rozhraní eth0 v Linuxu?

  1. zkontrolujte, zda je rozhraní eth0 aktivní (nakonfigurováno)

  2. Náhodně jsem smazal své wifi zařízení wlan0

  3. Jak zjistit stav wlan0?