Drahtlose brücke auf KVM virtuelle maschine

Ich habe einen VM-Host (KVM), der mit einem WLAN-Router verbunden ist. Ich möchte, dass sich die virtuellen Gäste in derselben Broadcast-Domäne wie der Host befinden.dh, Sie erhalten ihre IP vom DHCP des Routers. (=Schicht 2 Überbrückung)

Laut KVM-Dokumentation ist es unmöglich: Important Note: Unfortunately, wireless interfaces cannot be attached to a Linux host bridge, so if your connection to the external network is via a wireless interface ("wlanX"), you will not be able to use this mode of networking for your guests. (ich habe es trotzdem versucht, und tatsächlich funktioniert es nicht:))

Es gibt einige Ressourcen im Internet, die vorschlagen, wie man eine geroutete Schnittstelle erstellt, und es funktioniert für mich. Aber es ist Schicht 3, und die Gäste befinden sich in einem anderen IP-Subnetz.

Allerdings habe ich VirtualBox in der Vergangenheit verwendet-und wireless Bridging funktioniert dort.

Ich habe Superuser-Frage in Bezug auf VirtualBox gefunden, die erklärt: Many virtual machine programs come with a special "bridge" or "filter" driver which attaches to existing network interfaces and allows the program to send and receive packets (Ethernet frames) directly.

Das ist genau das Ergebnis, das ich will-KVM-Virtualisierung mit Ethernet-Bridging (Layer 2). Leider scheint es, dass libvirt / KVM keinen Treiber enthält. Aber ich gehe davon aus, dass es mit einem anderen Unix-Tool erreicht werden kann.

Author: Community, 2013-12-30

4 answers

Ich hatte genau die gleiche Anforderung wie Zvika. Übrigens ist sein Beitrag zu diesem Thema ausgezeichnet. Die Alternative, die ich gefunden habe, ist folgende: Konfigurieren Sie ein geroutetes Netzwerk in KVM im Bereich 192.168.1.160/28 (also, dedoimedo dritte Lösung, der "Dirty Hack") und dann, anstatt einen ARP-Proxy auf die Art von Zvika zu erstellen, habe ich parprouted verwendet, das in Ubuntu/Mint als Paket mit demselben Namen verfügbar ist. Mit parprouted können Sie einfach Folgendes eingeben:

sudo parprouted virbr1 wlan0

Et voilà, der Verkehr in beide Richtungen funktioniert an/aus gast-VM und die anderen Geräte im 192.168.1.0 / 24-Netzwerk sowie zu / von externen Systemen (z. B. Internetseiten), wenn sich dieses Netzwerk hinter einem NAT befindet.

Das war sowieso schwer, ich habe Tage damit verbracht, zu diesem Thema zu suchen und keine Quelle war so klar wie Zvikas Blogeintrag!!

 3
Author: Mauro Molinari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-06-28 11:52:09

Laut KVM-Dokumenten ist es nicht möglich, eine Bridge mit einer drahtlosen Netzwerkkarte zu verwenden. Ich kenne den Grund nicht, warum, obwohl ich den Gast auf VirtualBox überbrückt habe.

Ich habe einige Stunden damit verbracht, herauszufinden, wie der Gast mit dem drahtlosen Netzwerk des Hosts verbunden wird, und ich habe herausgefunden, dass der einfachste Weg dazu ein TAP-Gerät ist. Der einzige Nachteil dieser Methode ist, dass Sie DHCP nicht für den Gast verwenden können und ihm manuell eine IP-Adresse aus dem drahtlosen Netzwerk geben müssen subnetz (das bei der Bereitstellung vieler VMs zu IP-Konflikten oder Unannehmlichkeiten führen kann).

Hier sind die Schritte, um den Gast über ein TAP-Gerät mit dem drahtlosen Netzwerk des Hosts zu verbinden:

0 / IPv4-Routing für den Linux-Kernel aktivieren

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

1 / Erstellen Sie ein Tap-Gerät mit dem Namen tap0, auf das vom Benutzergast aus zugegriffen werden kann (Ersetzen Sie es durch Ihren Benutzernamen), ohne sudo:

sudo ip tuntap add mode tap tap0 user guest
sudo ip link set tap0 up

2 / Weisen Sie dem tap0-Gerät eine IP-Adresse zu (diese muss nicht vom WLAN stammen Netzwerk-Subnetz):

sudo ip addr add 10.10.10.10/24 dev tap0

3 / Verwenden Sie parprouted (möglicherweise müssen Sie es installieren), um Proxy-ARP-Bridging zu implementieren, mit dem das Gast-Ethernet hinter der drahtlosen Netzwerkkarte des Hosts überbrückt werden kann.

sudo parprouted wlan0 tap0

(Ersetzen Sie wlan0 durch die drahtlose Schnittstelle Ihres Hosts)

4 / Hinzufügen einiger Routing-Tabelleneinträge, damit Pakete durch die Enden des Tap-Geräts reisen können:

sudo iptables -A INPUT -i tap0 -j ACCEPT
sudo iptables -A FORWARD -i tap0 -j ACCEPT
sudo iptables -A FORWARD -o tap0 -j ACCEPT

Weisen Sie dem Gast eine statische IP-Adresse aus dem drahtlosen Netzwerk-Subnetz des Hosts zu. Für beispiel wenn Ihr wlan0 auf 192.168.1.0 / 24 ist, kann der Gast mit{[10] konfiguriert werden]}

sudo ip addr add 192.168.1.30/24 dev eth0

(eth0 ist die NIC Ihres Gastes)

Oder dauerhaft in /etc/network/interfaces mit:

auto eth0
iface eth0 inet static
  address 192.168.1.30
  netmask 255.255.255.0
  network 192.168.1.0
  broadcast 192.168.1.255
  gateway 192.168.1.25

Starten Sie Ihren Gast mit:

kvm -hda guest.img -m 512 -net nic -net tap,ifname=tap0,script=no

Jetzt funktioniert das Pingen zwischen allen Maschinen, die in Ihrem drahtlosen Netzwerk verbunden sind, und den Gästen.

 3
Author: Karim Manaouil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-09-27 14:06:39

Die offizielle Dokumentation ist viel zu pessimistisch. Wie immer hat es jemand Kluges herausgefunden: Sie finden die (langen) Anweisungen dazu hier. Ich habe es versucht, es ist ein Kinderspiel.

Bearbeiten:

Ich bin mir nicht sicher, warum die erste Lösung, die in dem oben referenzierten Artikel veröffentlicht wurde, nicht für Sie funktioniert, sondern für mich und Sie geben keine zusätzlichen Informationen an. Dennoch möchten Sie vielleicht eine alternative Lösung in Betracht ziehen, hier, bereitgestellt von Bohdi Zazen, der Proxy-arp verwendet. Ich habe das nie versucht (sol. n. 1 arbeitete für mich, also was war der Punkt), aber Sie können ihm eine Chance geben.

 2
Author: MariusMatutiae,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-12-30 18:34:18

Es ist nicht "wireless adapter" nicht unterstützung überbrückung. Es ist, access point und WiFi-host-zu-ap-Protokoll. Wenn Sie eine Verbindung herstellen, authentifizieren Sie den MAC Ihres Adapters. Das Protokoll verfügt über einen Platz für drei MACs: sofort authentifizierte Teilnehmer und dritte-für jeden Endpunkt hinter AP. WiFi Mobile Station könnte also Pakete an jeden MAC senden, aber nur einen eigenen MAC als Quelladresse verwenden. Sie konnten kein Paket mit einem anderen Quell-MAC senden, außer dass authentifiziert-AP das ablehnt Paket.

Es gibt auch WiFi-Protokoll in der Lage wahre Überbrückung, genannt WDS. Dies geschieht, indem vier MAC-Adressen im Paket zugelassen werden: Zwei - sofort authentifizierte Teilnehmer, d. H. Überbrückungs - APs, und Zwei-Endpunkte (Quelle und Ziel), deren Paket über eine WLAN-Brücke übertragen wird.

Hier lesen http://wiki.mikrotik.com/wiki/Manual:Wireless_Station_Modes#802.11_limitations_for_L2_bridging darüber.

Es ist schade, dass WDS nicht gut standartisiert ist, und jeder Anbieter wertet es auf unparteiische Weise selbst aus. Nur wenn die WiFi-Allianz mehr wäre... benutzerorientierte Organisation, sie werden es besser machen und wir werden in der Lage sein, WiFi-Überbrückung hier und da zu tun, zwischen beliebigen Anbieterlösungen, und in der Tat zwischen Gastmaschinen und Drahtlosnetzwerk!

Proxy-ARP ist jedoch keine L2-Lösung, sondern eine ROUTING-Lösung, dh L3. Es trickst beide Seiten, so dass Sie hier und da dasselbe Subnetz haben könnten, aber das ist immer noch Routing und übrigens das etwas vermasselt Netzwerk. Siehe MAC-Tabelle auf jedem Computer, um zu sehen, was dort vor sich geht: Alle MACs für "diese Seite" sind MAC unseres Proxy-arp-Routers.

Für eine echte L2-Lösung können Sie die Linux-Funktion "MAC NAT" ausprobieren, die mit dem Dienstprogramm ebtables konfiguriert ist. Da dies die einzig wahre L2-Lösung ist, die ich kenne, denke ich, dass sie von VirtualBox verwendet wird. Es sieht jedoch im Grunde wie Proxy-arp aus. Sie sollten dies auf jeden Fall mit KVM und libvirt implementieren können.

 2
Author: Nikita Kipriyanov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-12-06 18:58:10