Entsprechende ipfw-Regeln in MacOS für diese Iptables-Regeln

Ich muss einer VM unter Vmware Fusion 7 im Host-Only-Modus Internetzugriff gewähren. Ich weiß, wie es unter Linux mit den folgenden IPtables-Regeln geht:

sysctl -w net.ipv4.ip_forward=1

iptables -A FORWARD -o eth0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A POSTROUTING -t nat -j MASQUERADE

Ist dies in MacOS Sierra möglich?

Antworten (1)

Gehen Sie wie folgt vor, um NAT für ein Host-Only-Netzwerk in VMware Fusion zu aktivieren:

  1. Aktivieren Sie die Weiterleitung, indem Sie eine Datei /etc/sysctl.conf mit folgendem Inhalt hinzufügen:

    net.inet.ip.forwarding=1
    

    und neu starten

  2. Verbinden Sie den Mac mit dem Host-Only-Netzwerk und notieren Sie sich das Netzwerk/die Netzmaske des Host.Only-Netzwerks:

    Geben Sie hier die Bildbeschreibung ein

  3. Geben Sie ein ifconfig, um die vmnet-IP des Mac abzurufen

    ...
    vmnet3: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
            ether 00:50:56:c0:00:03 
            inet 192.168.9.1 netmask 0xffffff00 broadcast 192.168.9.255
    
  4. Geben Sie in der IP-Einstellung der Gast-VM eine IP/Netzmaske gemäß den Nur-Host-Netzwerkeinstellungen ein (im obigen Beispiel im Bereich 192.168.9.2-254/255.255.255.0), ein Gateway (die vmnet3-IP des Hostings Mac aus Schritt 3 - hier: 192.168.9.1) und einen DNS-Server.

  5. Öffnen Sie die pf.conf-Datei mit:

    sudo nano /etc/pf.conf
    

    und füge die Zeilen hinzu:

    nat on {en0, en1} proto {tcp, udp, icmp} from 192.168.9.0/24 to any -> {en0, en1}
    pass from {lo0, 192.168.9.0/24} to any keep state
    

    nach der Zeile rdr-anchor "com.apple/*".

    Abhängig von Ihrem Mac und Ihrer Netzwerkkonfiguration ist nur eine Schnittstelle ausreichend (entweder en0 oder en1). Verwenden Sie auch das richtige Netzwerk/die richtige Netzmaske (Ihre vmnet-Konfiguration anstelle von 192.168.9.0/24)!.

    Speichern Sie die Datei und beenden Sie nano.

  6. Überprüfen Sie Ihre pf.conf mit:

    sudo pfctl -vnf /etc/pf.conf
    
  7. Wenn kein Fehler auftritt, aktivieren Sie pf mit:

    sudo pfctl -ef /etc/pf.conf
    

Nach einem Neustart müssen Sie pf neu starten, da es beim Booten nicht automatisch gestartet wird. Um pf während des Bootens zu starten, überprüfen Sie Schritt 4 in dieser Antwort: Was ist die moderne Methode zur Portweiterleitung auf El Capitan? (Port 80 auf 8080 weiterleiten)

Funktioniert gut mit Virtualbox und dem „Host-only Adapter“-Modus
@klanomath, danke für eine ausgezeichnete Antwort. Warum schaltest Du NAT ein {en0,en1}, wenn ifconfigsich das Interface als meldet vmnet3? Korrigieren Sie außerdem bitte „die IP des Mac aus Schritt 2“ auf „die IP des Mac aus Schritt 3“.
@Shuzheng Sie müssen NAT auf einer "öffentlichen" Schnittstelle (normalerweise entweder en0 oder en1) eines NAT-Gateways aktivieren. Vmnet3 ist per Definition eine "private" Schnittstelle und hat keine Verbindung zur Welt.
@klanomath, in der Tat, aber passieren die Pakete nicht die vmnet3-Schnittstelle (und nicht en0), wenn sie vom Host-Only-Netzwerk ins Internet gehen? Die Gast-VM sendet ihre Pakete an die vmnet3-Schnittstelle des Hosts.