Internet Sharing bzw. IP-forwarding bzw. NAT unter El Capitan

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Internet Sharing bzw. IP-forwarding bzw. NAT unter El Capitan

    Hallo,
    vielleicht hat da ja jemand den richtigen Link auf ein wirklich brauchbares Tutorial.

    Ich betreibe schon länger embedded development boards (BeagleBone / BeagleBoard u.a.) über USB am Mac. Dazu, habe ich ein RNDIS/Ethernet Gadget eingerichtet und damit kann ich zwischen Mac und Device per ssh/scp kommunizieren. Das geht auch nach dem Upgrade auf El Capitan.

    Das Problem ist nur wie ich das Internet Sharing (wieder) eingerichtet bekomme, so dass ich vom Device über den Mac auf dessen Internetzugang zugreifen kann. Früher (mindestens bis 10.9) ging das mit natd und ipfw.

    Ich habe zwar eine Menge Anleitungen gefunden, aber entweder sind die veraltet oder sie funktionieren bisher nicht. Hinweise wie man Fehler sucht, findet und behebt gibts leider auch nicht.

    1. apple.stackexchange.com/questi…rk-connection-in-terminal
    sowas Ähnliches scheint das eingebaute Internet Sharing auch zu machen - zumindest einen ifconfig bridge100

    2. apple.stackexchange.com/questi…-without-internet-sharing
    meckert nicht und die nat-Regel läßt sich mit pfctrl -s nat wieder auslesen. Aber ich bekomme trotzdem keinen Zugang "nach draußen".
    tcpdump oder tcpdump auf pflog0 zeigt nur dass die Pakete über USB am Mac ankommen, aber nicht weitergehen.

    3. chariotsolutions.com/blog/post…network-used-by-mac-os-x/
    Hier habe ich keine Wirkung der neu angelegten /etc/bootptab feststellen können. /etc/bootpd.plist wird dagegen von Internet Sharing verändert.

    Wer hat damit Erfahrung und Tips?

    Danke!
  • t-no schrieb:

    Spricht irgendwas dagegen, das BeagleBoard einfach an den selben Router zu klemmen wie den Mac?
    Man muss das root-Passwort ja nicht auf "1234" setzen...
    Ja, das hat nämlich (in bestimmten Konfigurationen) kein Ethernet... Nur USB. Und ab und zu will man das am MacBook betreiben das nur über WLAN am Internet hängt. Dann gibt es keinen erreichbaren Router.
    Aber wie geschrieben geht die Verbindung über USB. Nur das IP-Forwarding im El Capitan nicht.
  • So,
    habe es hingebogen.

    Die Lösung liegt im Verständnis des PF (Packet Filter). Der macht auf Wunsch NAT. So wie Internet-Sharing, aber das hat seinen eigenen Adressbereich.

    Dazu installiert man eine weitere NAT-Rule im PF, die alles was vom USB-Device kommt auf den Airport weiterleitet. Und Antworten herauspickt und zurück schickt.
    Soweit hatte ich das aufgrund verschiedener Tips aus dem Internet auch schon, aber einen Fehler (falsche IP-Adresse) drin.

    Dank besserem Verständnis konnte ich nun auch die Regel aus dem PF zurücklesen und im log schauen ob sie überhaupt triggert.
    Hat sie aber nicht.... Und zwar weil in dem Beispiel das ich im Internet gefunden habe das RNDIS-Interface in die
    Regel geschrieben wurde. Das ist aber falsch, weil es durch IP-Adresse auf der Mac-Seite ersetzt wird und damit auf nicht die
    Absenderadresse (mein Device) triggert.

    Im folgenden die Lösung.

    Erst mal wie ich den Setup mache:

    Quellcode

    1. ext_if=en1 # WLAN vom Mac
    2. device=192.168.0.202 # Device verbunden mit USB über RNDIS-Treiber (lokale IP am Mac 192.168.0.200, remote IP 192.168.0.202)
    3. # Regel installieren
    4. echo "nat log on $ext_if from $device to any -> ($ext_if)" | sudo pfctl -N -f -
    5. # Forwarding anschalten
    6. sudo sysctl -w net.inet.ip.forwarding=1
    7. sudo sysctl -w net.inet.ip.fw.enable=1

    Dann ist die NAT-Regel eingerichtet:

    Quellcode

    1. sudo pfctl -a '*' -sn
    2. No ALTQ support in kernel
    3. ALTQ related functions disabled
    4. nat on en1 inet from 192.168.0.202 to any -> (en1)/128 round-robin

    Mit

    Quellcode

    1. sudo tcpdump ip -n -e -ttt -i en1
    kann man dann auch den Traffic anschauen.
  • t-no schrieb:

    Na dann bleibt nur zu hoffen, dass Apple die Firewall mal ein paar Jahre lang nicht ändert ;)
    Ist das Sharing über GUI gerade komplett kaputt?
    Alle paar Jahre, damit kann man leben. Es hatte ja von 10.2 bis 10.9 funktioniert. Also wird es von 10.11 bis 10.18 laufen. Also noch ca. 7-8 Jahre :)

    Das "normale" Internet-Sharing per GUI geht auch noch. Nur passt es nicht auf meinen Anwendungsfall. Es nimmt nämlich an, dass die angeschlossenen Geräte einen DHCP-Client haben und mit einer dynamischen IP-Adresse zurechtkommen. Es vergibt dann meist auch eine 10.1.irgendwas.adresse.

    Ich habe hier ein Device mit einer festen IP (192.168.0.202), die ich auch in manchen Scripts fest einbauen muß.