DNS - Migration

#1
Gibt es eine Möglichkeit von einem Standalone MyDNS-NG zu einem MyDNS/PowerDNS/Bind integrierten DNS in ISPCONFIG zu migrieren?

Folgendes Szenarium:
Seit längere Zeit habe ich einen MyDNS-NG am laufen der mein Primary-DNS ist und alle Zonen hält.
Vor kurzem habe ich ISPConfig mit mehreren Servern (Farm) in Betrieb genommen und jetzt würde ich gerne die DNS Verwaltung auch über ISPConfig vornehmen.​

Hät hier jemand ne Idee dazu?
 
#2
Sodala...
Keine Antwort dann muss man schauen wo man bleibt.

Ich habe jetzt in meine Ispconfig-Farm einen neuen DNS-Server aufgenommen.

Dann habe ich per phpmyadmin meine Tabellen "dns_rr" und "dns_soa" vom eigenständigen mydns-server exportiert und auf dem Master-ISPConfig-Server in die selbigen zwei Tabellen importiert. Ging problemlos da diese bei mir noch leer waren.

Dann Updates über die zwei Tabellen am Master-Server drüber gejagt
Also sys_userid; sys_groupid; sys_perm_user; sys_perm_group; server_id angepasst.
Alle Zonen habe ich vorerst einem User zugeteilt.

Jetzt sind zwar alle DNS-Zonen und Records in der DB und über das Frontend von ISPConfig einsehbar und konfigurierbar aber im Bind Ordner fehlen die Files der Zonen, somit kann dieser diese noch nicht auflösen, also was tun?
Hab mir ein PHP-Script für die Remote-Api zusammen geschustert.

Bitte habt Nachsicht programmieren ist nicht so mein Ding deshalb is das Script nicht der Wahnsinn aber es funzd und das ist as wichtigste:

Das Script Updatet alle DNS-Zonen die einem User zugeordnet sind und zwar dem mit der ID 187.
In dem Teil mit "updates_all_dns_zone" werden die Daten in den Zonen aktualisiert viele lese ich aus und schreibe sie so wieder zurück wie sie sind.

<?php

$username = 'Remote-User';
$password = 'Remote-User-Passwort';
$primary_id = '';
$client_id = '187';
$server_id = '6';

$soap_location = 'https://ISPCONFIG-MASTER-SERVER/remote/index.php';
$soap_uri = 'https://ISPCONFIG-MASTER-SERVER/remote/';

$client = new SoapClient(null, array('location' => $soap_location,
'uri' => $soap_uri));

//Get DNS-Zone by user
function get_all_dns_zone($user_id){

global $username;
global $password;
global $client;
global $server_id;

if($session_id = $client->login($username,$password))
{
//echo 'Zalogowany. Sesja:'.$session_id.'<br />';
}

$domain_name = '';
$domain_name = $client->dns_zone_get_by_user($session_id, $user_id, $server_id);

if($client->logout($session_id))
{
//echo '<p>';
//echo 'Get DNS-Zonen<br />';
//echo '</p>';
foreach($domain_name as $mydomain_name)
{
//echo $mydomain_name["id"].'<br />';
$primary_id = $mydomain_name["id"];
get_info_all_dns_zone($primary_id);
}
//print_r($domain_name);
//echo '<br />';
}
}

echo get_all_dns_zone($client_id);

//Get DNS-Zone-Info
function get_info_all_dns_zone($zone_id){

global $username;
global $password;
global $client;

if($session_id = $client->login($username,$password))
{
//echo 'Zalogowany. Sesja:'.$session_id.'<br />';
}

$domain_id = $client->dns_zone_get($session_id,$zone_id);

if($client->logout($session_id))
{
/*echo '<p>';
echo 'Get DNS-Zone<br />';
echo '</p>';
print_r($domain_id["origin"]);
echo '<br />';*/
//print_r($domain_id);
//print_r($domain_id["origin"]);
echo updates_all_dns_zone($domain_id);
}

}

//echo get_info_all_dns_zone($primary_id);

//Update DNS-Zone
function updates_all_dns_zone($domain_id){

global $username;
global $password;
global $client;

try {

if($session_id = $client->login($username,$password))
{
//echo '<p>';
//echo 'Zalogowany. Sesja:'.$session_id.'<br />';
//echo '</p>';
}

$params = array('server_id' => 6,
'origin' => $domain_id["origin"],
'retry' => 7200,
'mbox' => $domain_id["mbox"],

'ns' => $domain_id["ns"],
'refresh' => 28800,
'expire' => 604800,
'minimum' => 86400,
'ttl' => 86400,
'active' => $domain_id["active"],
'serial' => '2011071201',
'xfer' => $domain_id["xfer"],
'also_notify' => $domain_id["also_notify"],);

$domain_id1 = $client->dns_zone_update($session_id,$client_id,$domain_id["id"],$params);

if($client->logout($session_id))
{
//print_r($domain_id["origin"]);
}
}
catch (SoapFault $e)
{
echo '<p>';
die('SOAP Blad: '.$e->getMessage());
echo '</p>';
}

}
echo 'Fertig';

?>
Danach werden die Files im Bind-Ordner generiert, aber was ist das die Zonen sind da aber die ganzen A/NS/MX/AAAA/TXT-Records fehlen....
Muss wohl noch ein Skript her.
 
#3
Damit das Script läuft musste ich noch die Datei:
/usr/local/ispconfig/interface/web/dns/form/dns_soa.tform.php
anpassen und zwar folgendes:

#'regex' => '/^[\w\.\-\/]{2,255}\.[a-zA-Z0-9\-]{2,30}[\.]{0,1}$/',
'regex' => '/^[\w\.\-\/]{2,255}\.[a-zA-Z0-9\-\.]{2,30}[\.]{0,1}$/',

Da kam immer ein Regex-Error mit dem Punkt bei "domain.name."
 
#4
Schau mal in die SVN Version. Da gibt es ein Tool zum Neuerstellen aller Zonen aus der DB. Dabei wird der SOA erhöht und die Bind-Zonenfiles sind danach vollständig.
 

Werbung