(:toc:) |
Hinweis: Dieses Tutorial, das auf diesem Hint basiert, ist spätestens seit Mac OS X 10.2 obsolet, weil es seitdem reicht, einfach das bordeigene "Internet Sharing" in den Systemeinstellungen Sharing zu aktivieren. Das Nachfolgende richtet sich demzufolge an Apple User mit Mac OS X 10.0 oder 10.1, die einen NAT Dienst auf Ihrem OSX-System einrichten möchten, auch wenn keine OSX-Server Version installiert ist. |
Network Address Translation unter OSX einrichten
Einen NAT Dienst benötigt man, um z.B. Internet-Pakete ins Heim-Netzwerk weiterzureichen. Oder anders gesagt: Damit ein Heimnetzwerk über ein und dieselbe Internetverbindung surfen kann, muss man auf einem der lokalen Rechner NAT aktivieren, damit die Internetdaten an die anderen lokalen Rechner verteilt werden können.
Vorgehensweise
1.
Öffne "Systemeinstellungen" -> "Netzwerk" -> "Ethernet (integriert)". Klicke auf "Konfigurieren" und "TCP/IP". Wähle dort "Manuell" aus, und trage Folgendes ein:
* IP address: 192.168.0.1 (du kannst auch 192.168.2.1 oder andere benutzen...) * Subnet mask: 255.255.255.0 * DNS server: 127.0.0.1 (falls du named benutzen möchtest) * Search domains: localhost
Klicke auf "Jetzt aktivieren". Wir haben nun ein Alias auf das en0 (built-in Ethernet) Interface erstellt.
2.
So, jetzt bringen wir NAT zum Laufen. Öffne ein Terminal-Fenster und werde root
Gehe in das Verzeichnis /Library/StartupItems/
und tippe ein:
% mkdir NAT % chmod 755 NAT % chown root:wheel NAT % cd NAT
Und nun erstellen wir mit einem Texteditor (vi, emacs etc) ein Script, das wir NAT nennen, und da schreiben wir rein:
#!/bin/sh . /etc/rc.common ConsoleMessage "Starting NAT" wrongorder=$(/sbin/ifconfig en0 | sed -n '/inet/p' | head -n 1 | sed -n '/192/p' | awk '{print $2}'| wc -l) # Enter the above as ONE LINE! # if ["${wrongorder}" -gt 0 ]; then
ConsoleMessage "swapping DHCP and unregistered alias" ifconfig en0 -alias 192.168.0.1 ifconfig en0 alias 192.168.0.1 fi /usr/sbin/natd -f /etc/natd.conf /sbin/ipfw add 20000 divert natd all from any to any via en0 /sbin/ipfw add 20050 divert natd all from any to any via en1
Speicher die Datei, beende den Editor und tippe ein:
% chmod 4754 NAT.
Falls möglicher Airport (en1) Traffic nicht gerouten werden soll, lösche einfach die Zeile mit:
/sbin/ipfw add 20050 divert natd all from any to any via en1
3.
Damit der SystemStarter unser Skript erkennt, müssen wir ein StartupParameters.plist File erstellen.
Gehe also in den Ordner /Library/StartupItems/NAT/
, und erstelle dort ein File mit dem Namen StartupParameters.plist
, dass folgenden Text beinhaltet:
{ Description = "NAT"; Provides = ("NAT"); Requires = ("Network", "Resolver"); OrderPreference = "Late"; Messages = { start = "Starting NAT"; stop = "Stopping NAT"; }; }
Save und Exit, und um ganz sicher zu gehen tippe noch ein:
% chown root:admin StartupParameters.plist % chmod 644 StartupParameters.plist
4.
Öffne /etc/hostconfig
in einem Texteditor, und trage "-YES-
" an folgenden Stellen ein:
IPFORWARDING=-YES- DNSSERVER=-YES-
Die letzte Zeile ist, wenn Du einen lokalen DNS/Nameserver verwendest
5.
Öffne jetzt /etc/named.conf. In der "options" section steht eine Zeile, die etwa so aussieht:
// query-source address * port 53;
Danach kommt eine Zeile, die mit "listen-on" anfängt. Lösche die beiden "//" am
Zeilenanfang, und ersetze den Rest der Zeile durch:
listen-on { 192.168.0.1; };
Save und Exit.
6.
Editiere als root noch schnell die /etc/natd.conf
, und ersetze dort den ganzen Inhalt mit :
interface en0 dynamic yes same_ports yes log_denied no use_sockets yes unregistered_only yes
Save und Exit.
Das war es! Jetzt startet NAT bei jedem booten. Man kann den Dienst jetzt auch bequem von der Konsole aus starten. Einfach eintippen:
sudo /Library/StartupItems/NAT/NAT
BUGFIX
Seit den letzten OSX-Updates muss unser NAT Script angepasst werden, weil sich eine 'inet6' Zeile in 'ifconfig
' geändert hat. Öffne also unser Skript /Library/StartupItems/NAT/NAT und
ändere die Zeile : ... | sed -n '/inet/p' | ... in dieses hier : ... | sed -n '/inet /p' | ... (ein Leerzeichen hinter 'inet' )
Danach läuft alles wieder super, auch auf der OSX-Server Version.
OSX-SERVER Version:
Seit ich das letzte mal geupdatet habe, ist irgendwas buggy ( the process is running but? ).
Ich hab hin und her probiert, und letztendlich die Permissions umgeändert. Also habe ich folgendes in das NAT Script eingefügt,
genau vor die Zeile mit "console message
" :
#fix permissions chown root:wheel /Library/StartupItems/NAT/ chown root:wheel /Library/StartupItems/NAT/NAT chmod 4754 /Library/StartupItems/NAT/NAT chown root:admin /Library/~StartupItems/NAT/StartupParameters.plist chmod 644 /Library/StartupItems/NAT/StartupParameters.plist
Seit dem läuft wieder alles problemlos.
Wie gesagt, bei diesem Problem liegt es wohl daran, dass die OSX-Server-Version installiert ist....