(: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/hostconfigin 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....

Verweise

Kategorie
Tutorials, MacGyver

Zuletzt geändert am 10.01.2006 10:54 Uhr von Schlaefer ( Besuche)

© 2004 – 2024 ApfelWiki

Impressum - Datenschutz

cb