VMs nur via kabelgebundenem Netzwerk erreichbar, nicht via WLAN

Ich habe bei meinem Laptop ein Network failover (lagg0) erstellt - mit den interfaces em0 und wlan0.
Meine VMs (vm-bhyve) sind nur erreichbar über kabelgebundenem Netzwerk. Sobald ich das Kabel ziehe und WLAN nutze, sind die VMs nicht mehr erreichbar und haben auch selbst keine Verbindung mehr ins Internet.
Laut einem Wiki-Eintrag https://github.com/churchers/vm-bhyve/wiki/Guest-example:-Alpine-Linux muss man ein paar Einträge in der sysctl.conf machen, wenn man ipfw nutzt.
Das habe ich so gemacht, doch es funktioniert trotzdem nicht.
Code:
sysctl net.link.tap.up_on_open=1
sysctl net.link.bridge.ipfw=0
sysctl net.link.bridge.pfil_bridge=0
sysctl net.link.bridge.pfil_member=0

Hat jemand eine Idee, was ich noch an den Einstellungen drehen kann?
 
Ich bin mir nicht so ganz sicher ob das funktioniert. Generell unterstützt - soweit ich ich weiß - der WLAN-Standard keine "echte" Bridge, also es ist nicht möglich wie bei Ethernet hinter einen interface mehrere "eigenständige" virtuelle hosts mit eigener mac etc zu betreiben.

Hier muss man dann auf NAT zurückgreifen.
 
Ein lagg ist keine bridge, das im Beispiel ist schlecht erklärt. Was du willst, ist eine bridge0 mit den members em0 und wlan0.
Da du eh schon vm-bhyve nutzt, willst du einen virtuellen switch erstellen, der ist nämlich exakt so eine bridge.
Code:
vm switch create ichbindiebridge
vm switch add ichbindiebridge em0
vm switch add ichbindiebridge wlan0
vm switch list #zum nachträglichen überprüfen

Aber um mal Murks vorzubeugen...was hast du exakt mit dem wlan vor und wie soll was erreichbar sein? Es ist nämlich ein Unterschied, ob ein anderes Gerät (Zweitlaptop via wlan zum router verbunden) die vms erreichen soll (hier reicht es, wenn auf laptop1 nur em0 in der bridge/vswitch hängt) oder ob du tatsächlich zwei Wege und das failover (von laptop1 zum router haben willst).
 
Ein lagg ist keine bridge, das im Beispiel ist schlecht erklärt. Was du willst, ist eine bridge0 mit den members em0 und wlan0.
Da du eh schon vm-bhyve nutzt, willst du einen virtuellen switch erstellen, der ist nämlich exakt so eine bridge.
Code:
vm switch create ichbindiebridge
vm switch add ichbindiebridge em0
vm switch add ichbindiebridge wlan0
vm switch list #zum nachträglichen überprüfen

Aber um mal Murks vorzubeugen...was hast du exakt mit dem wlan vor und wie soll was erreichbar sein? Es ist nämlich ein Unterschied, ob ein anderes Gerät (Zweitlaptop via wlan zum router verbunden) die vms erreichen soll (hier reicht es, wenn auf laptop1 nur em0 in der bridge/vswitch hängt) oder ob du tatsächlich zwei Wege und das failover (von laptop1 zum router haben willst).

Ich verstehe es so das er auf einem Gerät das mal per WLAN und mal per LAN Verbunden ist VMs starten möchte - und die sollen dann sowohl per LAN als auch per WLAN unter einer eigenen IP erreichbar sein.

Das wird afaik nicht funktionieren.
 
Das funktioniert, wenn man die IP auf die bridge packt und die member ohne belässt. Aber ich rate auch nur in die Richtung. :)
 
Ich verstehe es so das er auf einem Gerät das mal per WLAN und mal per LAN Verbunden ist VMs starten möchte - und die sollen dann sowohl per LAN als auch per WLAN unter einer eigenen IP erreichbar sein.
Exakt so soll es sein.

Ein lagg ist keine bridge, das im Beispiel ist schlecht erklärt. Was du willst, ist eine bridge0 mit den members em0 und wlan0.
Da du eh schon vm-bhyve nutzt, willst du einen virtuellen switch erstellen, der ist nämlich exakt so eine bridge.
Code:
vm switch create ichbindiebridge
vm switch add ichbindiebridge em0
vm switch add ichbindiebridge wlan0
vm switch list #zum nachträglichen überprüfen

Ich kann der erstellten bridge kein device hinzufügen, da alle Geräte schon Bestandteil von lagg0 sind und bereits dem (laut Anleitung) erstellten Switch "public" hinzugefügt wurden.
Code:
root@lifebook:~ # vm switch info public
------------------------
Virtual Switch: public
------------------------
  type: standard
  ident: vm-public
  vlan: -
  physical-ports: lagg0
  bytes-in: 3406307 (3.248M)
  bytes-out: 3464131 (3.303M)

  virtual-port
    device: tap0
    vm: alpine

Code:
root@lifebook:~ # vm switch create br7
root@lifebook:~ # vm switch add br7 em0
/usr/local/sbin/vm: ERROR: failed to add member em0 to the virtual switch br7
root@lifebook:~ # vm switch add br7 wlan0
/usr/local/sbin/vm: ERROR: failed to add member wlan0 to the virtual switch br7
 
Den vswitch public kannst du löschen oder eben den benutzen, aber das lagg0 muss aufgelöst werden. Dann die einzelnen member em0 und wlan0 in public stecken/adden und dem vswitch public die IP geben, die entweder em0 oder wlan0 hatte. em0 und wlan0 dürfen dabei selber keine IP haben.

Immer dran denken, der vswitch ist keine Magie, es ist technisch eine bridge:

Edit: Also mit lagg0 würde das auch gehen, setzt aber voraus, dass das mit failover oder roundrobin konfiguriert wurde (macht im Grunde keinen Unterschied, wenn das eine oder andere ausfällt), aber definitiv nicht mit lacp. Ebenfalls setzt es voraus, dass wenn das lagg0 richtig konfiguriert ist, du mit dem Laptop selber deinen router noch erreichst, wenn du entweder über em0 oder wlan0 rumwechselst. Wenn das schon nicht klappt, dann geht das mit dem vswitch auch nicht.
 
Na doch, in beiden Fällen. Ob du jetzt beide member auf die bridge packst oder lagg0 in roundrobin fährst, ist beides 'failover', auch wenn es nicht so heißt.
 
Zurück
Oben