IPs ändern ?

T

tobias eichner

Mitglied
Thread Starter
Dabei seit
24.02.2007
Beiträge
28
Reaktionspunkte
0
Hallo.

Für eine OS X Server 10.4.8 Installation möchte ich die verwendeten IP-Adressen (Providerwechsel !) ändern. Da sich auf dem Server wichtige Daten befinden und auch dessen Konfiguration komplex war, kommt eine Neuinstallation einfach nicht in Frage.

Ich habe mir aus der spärlichen Apple-Dokumentation folgenden Ablauf zurecht gebastelt und würde mich über Kommentare, Tips und Verbesserungsvorschläge freuen (oder Lob, das alles korrekt ist :)

Verbesserungsvorschläge bitte etwas ausführlicher kommentieren (verständlich für einen Dummie ;-)

Der Server ist nicht innerhalb eines LANs erreichbar, sondern nur mit seiner WAN-IP (die ja eben geändert werden muß) - also wird das ganze etwas komplizierter.

Los geht's:

1. Kabelgebundene Verbindung zum Server herstellen

o ARD-Verbindung via Firewire-Kabel aufbauen.
o Alle folgenden Schritte werden über ARD ausgeführt !

2. Kritische Serverdienste beenden

o „Server Admin“: Dienste DNS, FTP, Mail und Web stoppen.

3. IP-Adressen auf Anwendungsebene ändern

o Terminal (root):
cd /etc/mail/spamassassin
pico local.cf
Verweise auf neue IP-Adressen anpassen.
cd /etc/named.conf
Verweise auf neue IP-Adressen anpassen.
cd /var/named
replace <alte IP> <neue IP> -- *.zone
Verweise auf neue IP-Adressen ändern.
serveradmin stop dns
serveradmin start dns
changeip - <alte IP> <neue IP>
Automatische systemweite Umstellung der IP-Adressen.

4. IP-Adressen der Netzwerkeinstellungen ändern

o Programm „Systemeinstellungen“ starten, „Netzwerk“ auswählen (Bereich „Internet & Netzwerk“), „Ethernet (integriert)...“ aus der „Anzeigen“-Liste wählen und Einstellungen für jeden Anschluß entsprechend anpassen (IP-Adresse und Verbindungsdaten).

5. Server neu starten und Änderungen prüfen

o Das System neu starten:
+ Via ARD ausschalten und Firewire-Kabel entfernen.
+ Server durch Drücken der I/O-Taste neu starten.
+ Erneut eine ARD-Verbindung via Firewire-Kabel aufbauen.
+ Alle folgenden Schritte werden über ARD ausgeführt !
o Verfügbarkeit der Dienste im „Server Admin“ wiederherstellen:
+ Abgeschaltete Dienste DNS, FTP, Mail und Web starten.
+ IP-Adressen unter <Computer> / System / Hardware und bei den Diensten FTP, Mail und Web prüfen.
o Vorhandensein der neuen IPs in den Website-Konfigurationsdateien prüfen:
+ Terminal (root)
cd /etc/httpd/sites/*
cd /etc/httpd/servermgr_web_httpd_config.plist
Check der Dateinamen und Inhalte auf verbliebene alte IP-Adressen.
o Verfügbarkeit der Dienste auf IP-Ebene prüfen:
+ Alle IP-Adressen im Webbrowser aufrufen. Es muß die Default-Website erscheinen.
o Abschließende Schritte ausführen:
+ Via ARD ausschalten und Firewire-Kabel entfernen.
+ Server durch Drücken der I/O-Taste neu starten.
 
man changeip
 
habe diese Prozedur unter OS X Server noch nicht durchgeführt (unter Linux schon). Die Reihenfolge der Punkte 1-5 erscheint so weit plausibel.

Was mir noch eingefallen ist, dass der Hostname im DNS entsprechend geändert werden muss. Dazu habe ich folgendes gefunden:
http://docs.info.apple.com/article.html?artnum=303495-de

edit: falls der Hostname bleibt, muss auf jeden Fall die IP im DNS angepasst werden, aber sehr gerade, das ist unter 3. wohl schon der Fall.
 
Zuletzt bearbeitet:
@slowfranklin: Danke, darauf wäre ich von alleine nie gekommen ;-) Nein, Sarkasmus beiseite. Ich habe das schon alles gelesen und verstanden :) aber ich bin da einfach paranoid. Der Server ist wichtig, Backup existiert zwar, aber who knows.

Um mal beim Thema mit "man changeip" zu bleiben, mir war nach dem Lesen immer noch unklar ob es nun heißen muß "changeip - <alte IP> <neue IP>" oder "changeip <alte IP> <neue IP>" ? Ist ja optional.

@MacMännchen: Was meinen Sie mit "Hostname im DNS" ändern ? Daran soll sich eigentlich nichts ändern, also dns1.server.tld bleibt dns1.server.tld.

Wir benutzen den Server auch als primären DNS. Da hätte ich gleich noch eine Frage: Wie sieht es mit den Downtimes aus... wäre da ein Wochenende ausreichend, bis das DNS-System sich mit den neuen IPs upgedated hat ?

Ich nehme mal an, es gibt keine Möglichkeit IP-Adressen ähnlich wie Domains auf Dauer zu behalten, also auch beim Wechsel zu einem neuen ISP ?

Bevor es nun wieder heißt, "bitte informieren"... das habe ich: Es scheint nicht so ohne weiteres möglich zu sein, einige wenige IPs (acht) von RIPE zu erhalten und auch der technische Aufwand (Betrieb eines BGP-Routers, der wahrscheinlich (das weiß ich nun wieder nicht genau) eine "spezielle" Anbindung an mindestens einen "besonderen" ISP erfordert).

Wer darüber weitere Infos hat bzw. sich selbst näher damit beschäftigt hat und mir mehr dazu sagen kann, hat meine ewige Dankbarkeit ;-) (Naja, "ewig" vielleicht nicht direkt)
 
Nochmal zu http://docs.info.apple.com/article.html?artnum=303495-de:

Die Erklärung dort widerspricht dem man-Eintrag für changeip... muß nun ein FQDN angegeben werden oder nicht, wenn ich nur die IP ändern möchte ?

> edit: falls der Hostname bleibt, muss auf jeden Fall die IP im DNS angepasst werden, aber sehr gerade, das ist unter 3. wohl schon der Fall.

Ja, richtig. Die IPs in den Zonendateien werden natürlich entsprechend geändert. Allerdings nicht die Datumsangaben in den SOA-Einträgen einer Domain. Da die alle verschieden sind, habe ich noch keine Möglichkeit gefunden, die alle auf einmal zu ändern. Muß also auch ohne neue gehen...

(Leider war es nicht möglich, "Server Admin" für die DNS-Verwaltung zu verwenden. Trotz Hilfe von Apple, konnte ich keine einzige Domain im DNS korrekt abbilden. Aber das ist eine andere Geschichte. "Server Admin" scheint sehr fehlerhaft zu sein.)
 
Zuletzt bearbeitet:
@MacMännchen: Was meinen Sie mit "Hostname im DNS" ändern ? Daran soll sich eigentlich nichts ändern, also dns1.server.tld bleibt dns1.server.tld.

ok, das macht die Sache in diesem Bereich leichter.


Wir benutzen den Server auch als primären DNS. Da hätte ich gleich noch eine Frage: Wie sieht es mit den Downtimes aus... wäre da ein Wochenende ausreichend, bis das DNS-System sich mit den neuen IPs upgedated hat ?

Der direkte Zugriff auf den Primary DNS ist die optimale Voraussetzung für das Vorhaben.
Aus eigener Erfahrung würde ich da folgende Vorgehensweise vorschlagen:

24 oder besser 48 Stunden vor der DNS-Umstellung die TTL-Zeit in der Zone runtersetzen auf 15 Minuten. Dann stellen sich früh genug alle anderen DNS im Internet darauf ein, die Zone im 15-Minuten-Takt zu ziehen.

15 Min. ist einerseits klein genug, damit die Umstellung sich schnell im Internet verbreitet und gleichzeitig gerade so klein, dass man nicht den Ärger der DENIC auf sich zieht, die erlauben für .de-Domains nicht weniger. ;)


Ich nehme mal an, es gibt keine Möglichkeit IP-Adressen ähnlich wie Domains auf Dauer zu behalten, also auch beim Wechsel zu einem neuen ISP ?

Bevor es nun wieder heißt, "bitte informieren"... das habe ich: Es scheint nicht so ohne weiteres möglich zu sein, einige wenige IPs (acht) von RIPE zu erhalten und auch der technische Aufwand (Betrieb eines BGP-Routers, der wahrscheinlich (das weiß ich nun wieder nicht genau) eine "spezielle" Anbindung an mindestens einen "besonderen" ISP erfordert).

Dass man die IP beim ISP-Wechsel behält, ist praktisch ausgeschlossen.

Viele Provider sind RIPE-Mitglied. Daher ist es günstiger, ein IP Netz über einen Provider zu mieten, als direkt beim RIPE zu beantragen.
 
Zuletzt bearbeitet:
@MacMännchen:

> Viele Provider sind RIPE-Mitglied. Daher ist es günstiger, ein IP Netz über einen
> Provider zu mieten, als direkt beim RIPE.

Tja, leider weiß man halt erst hinterher, was für Deppen man sich da an Land gezogen hat :-(

Interoute (ehemals VIA) wurden uns empfohlen. Die Zuverlässigkeit der Dienste ist ja auch ganz okay, aber falsche Verkaufsversprechen, Missachtung ihre eigenen AGBs (solange zu ihrem Vorteil) und ein kostenpflichtiger, inkompetenter Support (der ursprünglich als kostenfrei offeriert wurde)... also früher oder später suchen wir da was anderes. Gäbe noch eine Menge mehr zu erzählen, aber das passt nicht hier her. Interoute kann ich jedenfalls nicht weiterempfehlen. Ist aber nur meine persönliche Meinung, vielleicht sind andere ja ganz zufrieden.

Back to topic...

Und die IPs lassen sich ja nicht so ohne weiteres von einem an den anderen Provider weitergeben (zumindest nicht mit "Assigned PA" als Status im IP-Datensatz). So wie ich unseren jetzigen ISP einschätze, ließe sich der das teuer bezahlen oder hätte nur ein "nein" übrig.

Wäre das neutral verwaltet von der RIPE, könnte man einfach anfragen "wir brauchen die IPs, bitte laßt sie mit umziehen", wäre das alles kein Thema.

Auch eine nicht zu unterschätzende Kostenfrage. Wir haben zwar Apple-Server aber trotzdem kein großes Budget... widerspricht sich jetzt etwas ;-) Da ist eine eigene RIPE-Mitgliedschaft (leider) jenseits von allem.

> 24 oder besser 48 Stunden vor der DNS-Umstellung die TTL-Zeit in der Zone
> runtersetzen auf 15 Minuten. Dann stellen sich früh genug alle anderen DNS
> im Internet darauf ein, die Zone im 15-Minuten-Takt zu ziehen.

Funktioniert das auch wenn im SOA-Datensatz das gleiche Datum/Revision stehen bleibt (siehe mein "Edit" im vorherigen Post) ?

Sowas ließe sich mit "Suchen&Ersetzen" natürlich einfacher ändern als zig verschiedene Datumsangaben... ist zwar nicht regelkonform, aber ich kann einfach nicht bei 50+ Domains das Datum manuell anpassen.
 
Zuletzt bearbeitet:
Funktioniert das auch wenn im SOA-Datensatz das gleiche Datum/Revision stehen bleibt (siehe mein "Edit" im vorherigen Post) ?

Sowas ließe sich mit "Suchen&Ersetzen" natürlich einfacher ändern als zig verschiedene Datumsangaben... ist zwar nicht regelkonform, aber ich kann einfach nicht bei 50+ Domains das Datum manuell anpassen.

die Serial muss im SOA schon um "1" erhöht werden, sonst macht das Heruntersetzen der TTL-Zeit keinen Sinn.

Nur wenn die Serial sich geändert hat, sehen sich die meisten anderen DNS "genötigt", die Zone zu aktualisieren.
 
> @slowfranklin: Danke, darauf wäre ich von alleine nie gekommen ;-)

Sorry. Ich hatte beim flüchtigen überfliegen deines to-dos das changeip übersehen und im Angesicht der Länge des Posts gemutmaßt du wolltest das alles zu Fuß machen.

> Um mal beim Thema mit "man changeip" zu bleiben, mir war nach dem
> Lesen immer noch unklar ob es nun heißen muß "changeip - <alte IP>
> <neue IP>" oder "changeip <alte IP> <neue IP>" ? Ist ja optional.

Mit -.

-Ralph
 
> die Serial muss im SOA schon um "1" erhöht werden, sonst macht das
> Heruntersetzen der TTL-Zeit keinen Sinn.

Wie könnte ich das am einfachsten mit dem replace-Befehl machen ?

Das Datum/Serial lautet ja z.B. 2007121201... die einzige Regelmäßigkeit, nach der ich suchen könnte, wäre also die "200" am Anfang. Das müsste man suchen lassen, alle folgenden Stellen markieren und diese dann ersetzen.

Idealerweise sollte man noch sicherstellen, daß nach der "200" das folgende Zeichen kein "." ist, nicht, daß eine IP versehentlich verhunzt wird.


> man pages sind geduldig. Der kbase Artikel ist richtig.

Wie sähe dann der korrekte changeip-Befehl aus ?

changeip - <alte IP> <neue IP> <alter FQDN> <neuer FQDN>

also zum Beispiel

changeip - 1.2.3.40 1.2.3.50 dns1.server.tld dns1.server.tld

oder sollte ich den Host-Namen benutzen: changeip - 1.2.3.40 1.2.3.50 server1 server1

Ist das korrekt ?

Muß ich das dann für jeden einzelnen FQDN durchlaufen lassen ?

Ich verstehe auch den Sinn dahinter nicht so ganz, der Hostname und der FQDN ändern sich ja nicht. Also warum das ganze ?
 
> Wie sähe dann der korrekte changeip-Befehl aus ?
> changeip - 1.2.3.40 1.2.3.50 dns1.server.tld dns1.server.tld

Genau so.

> Muß ich das dann für jeden einzelnen FQDN durchlaufen lassen ?

Nein. Dein Server hat _einen_ fqdn, welcher einer der ist der im reverse record der ip des eth0 steht. Der Rest sind virtual domains, die interessieren nur apache und bind, aber nicht das os.

> Ich verstehe auch den Sinn dahinter nicht so ganz, der Hostname und der
> FQDN ändern sich ja nicht. Also warum das ganze ?

Weil die Sytanx halt so ist. ;o)

-Ralph
 
> die Serial muss im SOA schon um "1" erhöht werden, sonst macht das
> Heruntersetzen der TTL-Zeit keinen Sinn.

Wie könnte ich das am einfachsten mit dem replace-Befehl machen ?

Das Datum/Serial lautet ja z.B. 2007121201... die einzige Regelmäßigkeit, nach der ich suchen könnte, wäre also die "200" am Anfang. Das müsste man suchen lassen, alle folgenden Stellen markieren und diese dann ersetzen.

Idealerweise sollte man noch sicherstellen, daß nach der "200" das folgende Zeichen kein "." ist, nicht, daß eine IP versehentlich verhunzt wird.

Ein solches Suchen- nach 200 -und-Ersetzen würde ich nicht empfehlen !! :eek:

Der SOA ist doch formal per RFC definert. Man kann gezielt auf jeden record in der Zone zugreifen. Die mir bekannte, gängige Praxis besteht darin, die serial einfach um 1 zu inkrementieren.

Ich arbeite hauptsächlich mit auf Textdateien basierenden Zonen. Ein Hochsetzen der serial lässt dabei skriptunterstützt automatisieren.
Das ist bei auf Datenbank basierenden Zonen ebenso möglich. ;)
 
> Der SOA ist doch formal per RFC definert. Man kann gezielt auf jeden record in
> der Zone zugreifen. Die mir bekannte, gängige Praxis besteht darin, die serial
> einfach um 1 zu inkrementieren.

> Ich arbeite hauptsächlich mit auf Textdateien basierenden Zonen. Ein
> Hochsetzen der serial lässt dabei skriptunterstützt automatisieren.
> Das ist bei auf Datenbank basierenden Zonen ebenso möglich.

Nur wie ist die Frage; ich habe alle Domains manuell angelegt (sprich jede Zonedatei von einer Template aus erstellt), kann also auf keine Verwaltungssoftware oder ein Skript oder ähnliches zurückgreifen.

Könnte man sowas nicht auch auf Kommandozeilenebene basteln ? Leider endet hier mein Wissen...
 
Moin,

Perl eignet sich sehr gut für diese Aufgabe.

Ich denke, du hast Verständnis dafür, dass ich kein fertiges Skript präsentiere. Wie sagte hier ein Mod so treffend: "wir sind keine Code
Generatoren" ;)

Einen Lösungsweg aufzuzeigen dient dem Verständnis imo auch mehr als ein fertiges Skript, was dann nur eine Kette von Fragen aufwirft und möglicherweise in einer anderen Umgebung nicht anwendbar ist.


Voraussetzung für meinen Lösungsvorschlag ist:

1.) die Zone liegt als Text File vor.

2.) man verwendet in Kommentaren in der Zone keine runden Klammern, also "(" und ")". Nach RFC gibt es nur ein Klammernpaar in einer Zone.


also:

- dem Skript beim Aufruf den Namen des Zonenfiles übergeben

- aktuelle Zone in .bak file sichern (falls was schiefläuft)

- Zonenfile in Array einlesen

- per Schleife das Array zeilenweise in Variable einlesen

- mit einem geeigneten regulären Ausdruck nach "(" und ")" in dieser
Zeilenvariable suchen. Diese Klammern umschliessen im SOA die 5 Zeitwerte (siehe Voraussetzung 2.)

- der erste Zeitwert innerhalb der Klammer ist die serial. Diesen in Variable einlesen. Hier kann Perl seine Stärke ausspielen. Eine Variable braucht nicht als Typ deklariert werden. (Motto: weise einer Variable eine Zahl zu und rechne)

- Variable um 1 inkrementieren und in aktuelle Zeile zurückschreiben.

- das Zonenfile mit dem Array (und der geänderten serial im SOA record)
wieder überschreiben


So weit der Ansatz für 1 Zonenfile. Eine ganze Liste von Zonen könnte man
in einem Shell-Skript einlesen, welches dann den Namen des jeweiligen Zonenfiles dem Perl-Skript übergibt.


Natürlich muss man sich ein bisschen mit Perl beschäftigen. Hilfreich ist
z.B. http://www.willemer.de/informatik/lang/perl.htm
Eine Fundgrube auch für Fortgeschrittene ist http://www.perl.com/
 
Danke für die Erklärung zu dem Perl-Skript... ich denke, unser "Haus und Hof"-Programmierer kann damit was anfangen :) Ich bin zwar gerade dabei mich mit Perl zu beschäftigen, fürchte aber, daß es noch etwas (laaange) dauern wird, bis ich dieses Level erreiche ;-) Also besser machen lassen.

Okay, dann fasse ich mal zusammen: Meine "DIY-Anleitung" ist korrekt, bis auf das Ersetzen der SOA-Werte und der Syntax des "changeip"-Befehls ?

Zu letzterem bin ich aber nachwievor im Zweifel. Sie und Apple's Support-Artikel sagen "Hostname immer angeben", "man-Docs" und Antworten in den Apple Discussions auf meine Nachfrage sagen "Hostnamen nur angeben, wenn sich dieser ändert". Und wenn Apple das bei 10.4.6 eingeführt hat, dann sollten sie schon in der Lage gewesen sein, bei 10.4.8 auch die man-Docs anzupassen.

Mich würde jetzt interessieren, ob jemand changeip in OS X Server 10.4.6 und höher verwendet hat, ohne die Hostnamen anzugeben ?

Sorry, daß ich da so drauf herumreite, könnte ja auch einfach die Hostnamen angeben und basta. Aber ich will/muß wirklich sicher gehen, daß alles so funktioniert wie es soll.

Zu den Hostnamen selbst nochmal eine Frage:

Ich habe im Server Admin folgende Angaben gefunden:

Computername: main1
Lokaler Hostname: main1.local
en0 -> dns1.domain.tld (System/Hardware/Schnittstellen-Informationen)

"slowfranklin" hat geschrieben "Nein. Dein Server hat _einen_ fqdn, welcher einer der ist der im reverse record der ip des eth0 steht.", was also darauf hindeutet, daß "dns1.domain.tld" der Hostname ist. Oder doch der "lokale Hostname" ?
 
Also zum letzten Status: Nachdem ich etwas voreilig aus den Apple Discussions den Rat bekam, daß "changeip" die Angabe der Hostnamen nicht verlangt, wurde dort auch auf eine kürzliche Änderung hingewiesen. Ist also definitiv erforderlich.

Jetzt die Frage, wie finde ich den Hostnamen ? Auf Kommandozeilenebene den Befehl "hostname" ausführen, Ergebnis ist der Hostname ? Kann es so einfach sein ?

"hostname" bringt bei mir auf einem Server die Domain "domain.tld" und auf dem zweiten "sub2.domain.tld".

Also wäre ein korrekter changeip-Befehl "changeip 1.2.3.4 1.2.3.5 domain.tld domain.tld". Richtig oder richtig ?
 
Bezüglich des Perl-Skripts zum Ändern des SOA-Eintrags einer Zonendatei (Serialnumber und TTL):

Wenn ich schon unseren Programmierer damit belästigen muß, werde ich das so ausgestalten, daß man mit dem Skript auch optional die TTL-Zeit verändern kann: Also verringern vor dem Tausch der IPs und einige Zeit später, wenn alles geklappt hat, eben wieder auf den ursprünglichen Wert setzen.

Bei über 50 Zonendateien erspart sowas viel Schreibarbeit, besonders da Apple's Server Admin ja seinen Dienst verweigert. Zumindest bei mir ;-)

Sollte übrigens jemand Interesse an dem Skript haben, bitte einfach per E-Mail oder privater Nachricht melden. Wir werden uns dann sicher über den Preis einig ;-)
 
Zurück
Oben Unten