Hier soll knapp erklärt werden, wie man unter OS X (ab Tiger) einen OpenVPN-Tunnel über ein weiteres Interface für andere Rechner zur Verfügung stellen kann. Ist sowohl das Internet/der Tunnel als auch das lokale Netz nur per TP-Kabel zu Erreichen, benötigt man vermutlich noch eine weitere NIC (bei Macbooks z.B. einen USB-Ethernet-Adapter).
Für OpenVPN-Tunnel bietet sich Tunnelblick an. Einfach die entsprechenden Zertifikate und Konfigurationsdateien in den Ordner ~/Library/openvpn legen und im Programm die Verbindung starten.
Es existiert nun ein neues Tunnel-Interface tunif mit einer passenden VPN-IP. Alle Pakete die dort landen werden automatisch zum entsprechenden Server getunnelt. Pakete von localhost werden automatisch (?) mit der neuen IP-Adresse versendet.
Nun fragt man sich vielleicht, ob man den Tunnel auch mit weiteren Rechnern/Personen teilen kann. Die Antwort ist: ja!
Erste Versuche mit dem OS X eigenen Internet Sharing (Preferences / Sharing / Internet) waren allerdings nicht erfolgreich. Dazu muss man allerdings verstehen was da vor sich geht:
Es wird auf das lokale Interface localif auf dem der Tunnel gesharet werden soll eine interne IP gelegt und ein DHCP-Server gestartet, der aus selbigem Netz Adressen verteilt. Außerdem wird der natd gestartet, der nun alle Pakete von localif auf die IP des Uplink-Interfaces wanif umbiegt und sie auf diesem Richtung Internet schickt (wobei das letztendlich in einer Regel von ipfw passiert).
Da man leider tunif im Sharing-Dialog nicht direkt anwählen kann, landen die Pakete zwar im Tunnel, werden aber nicht genattet, da der Daemon mit einer festen Alias-Adress (der von wanif) gestartet wird.
Daher ist nun noch etwas Handarbeit nötig:
Wenn man den DHCP-Server nicht benötigt, kann man natürlich alles händisch machen und muss die Sharing-Option nicht aktivieren.
Das Skript tun_sharing (GPLv3) im Anhang vereinfacht die Schritte in der Konsole. Es geht davon aus, dass zunächst ein Sharing in den Systemeinstellungen aktiviert wurde. Über die beiden Argumente kann dem Skript wanif und tunif übergeben werden. Es muss als root ausgeführt werden.
Wie bereits im vorherigen Abschnitt angedeutet ist NAT unter OS X etwas unübersichtlicher als unter Linux (Stichwort: iptables, PREROUTING, POSTROUTING): ein natd übernimmt die Modifikation des IP-Pakets. Damit diese jedoch überhaupt beim Daemon ankommen, muss über ipfw eine entsprechende divert Regel gesetzt werden. Diese leitet IP-Pakete auf einen speziellen divert-Socket um, auf welchen der natd lauscht.
RTFM:
man divert
man ipfw
man natd
| Anhang | Größe |
|---|---|
| tun_sharing.sh | 1.76 KB |
Kommentare
tun_sharing.sh
Rev 22 ist die aktuelle und erste veröffentlichte Version des Skripts und kann nur, wie im Aritkel bereits beschrieben, mit vorheriger Aktivierung des Internet-Sharings verwendet werden.
Sollten Updates folgen, werden diese in den Kommentaren bekanntgegeben.
Kommentar hinzufügen