# HG changeset patch # User heiko # Date 1166434961 0 # Node ID 09de8a91a962cedcaed228c13f84163a9faf81d3 # Parent 6da0c9f5863898904f7c28218bf2a32e113de4f9 mehr Kommentar diff -r 6da0c9f58638 -r 09de8a91a962 dns-autoslave --- a/dns-autoslave Mon Dec 18 08:35:17 2006 +0000 +++ b/dns-autoslave Mon Dec 18 09:42:41 2006 +0000 @@ -129,8 +129,26 @@ } } + # Das, was wir bekommen, ist eine SOA-Query mit dem Opcode "NOTIFY", + # + # Sollen wir jetzt annehmen, daß der NS in der SOA (MNAME) der Master ist, + # oder sollen wir annehmen, daß die IP, von der es kommt, die des Masters + # ist? Beides kann falsch sein. + # + # Bei "hidden" Masters ist der Master höchstwahrscheinlich der interne (und damit + # nicht erreichbare) Name des Masters, das würde uns also nichts nützen. Wir könnten + # natürlich jetzt eine komplizierte Logik versuchen: + # DNS-Anfrage an den, von dem das NOTIFY kam über die IP des MNAME, + # wenn die OK ist, dann ... aber woher wissen wir, daß die OK ist. + # + # Wir gehen also einfach mal davon aus, daß der Master derjenige ist, + # welcher uns das NOTIFY geschickt hat. Und haben in der Konfig-Datei ein + # Mapping, damit wir die Fälle, wo der Master eine falsche Absender-IP + # nutzt (HA-Cluster) auch ordentlich behandeln können. + return unless $dns->header->opcode eq "NS_NOTIFY_OP"; + # Das, was dort kommt, hat eine QUESTION und eine ANSWER, in der ANSWER steckt foreach my $q ($dns->question) { next unless $q->qtype eq "SOA";