mirror of
http://thekelleys.org.uk/git/dnsmasq.git
synced 2026-11-13 17:00:49 +00:00
Compare commits
9
Commits
v2.80test7
...
v2.80
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
91421cb757 | ||
|
|
53792c934c | ||
|
|
df071825f2 | ||
|
|
e1791f36ea | ||
|
|
0fdf3c1f61 | ||
|
|
ee1df06aab | ||
|
|
1e87eba424 | ||
|
|
08933475ab | ||
|
|
7cbf497da4 |
No files matched your search
@@ -64,6 +64,10 @@ version 2.80
|
|||||||
now always forward, and never answer from the cache. This
|
now always forward, and never answer from the cache. This
|
||||||
allows "dig +trace" command to work.
|
allows "dig +trace" command to work.
|
||||||
|
|
||||||
|
Include in the example config file a formulation which
|
||||||
|
stops DHCP clients from claiming the DNS name "wpad".
|
||||||
|
This is a fix for the CERT Vulnerability VU#598349.
|
||||||
|
|
||||||
|
|
||||||
version 2.79
|
version 2.79
|
||||||
Fix parsing of CNAME arguments, which are confused by extra spaces.
|
Fix parsing of CNAME arguments, which are confused by extra spaces.
|
||||||
|
|||||||
@@ -672,3 +672,8 @@
|
|||||||
|
|
||||||
# Include all files in a directory which end in .conf
|
# Include all files in a directory which end in .conf
|
||||||
#conf-dir=/etc/dnsmasq.d/,*.conf
|
#conf-dir=/etc/dnsmasq.d/,*.conf
|
||||||
|
|
||||||
|
# If a DHCP client claims that its name is "wpad", ignore that.
|
||||||
|
# This fixes a security hole. see CERT Vulnerability VU#598349
|
||||||
|
#dhcp-name-match=set:wpad-ignore,wpad
|
||||||
|
#dhcp-ignore-names=tag:wpad-ignore
|
||||||
+4
-3
@@ -231,7 +231,7 @@ options always override the others. The comments about interface labels for
|
|||||||
.B --listen-address
|
.B --listen-address
|
||||||
apply here.
|
apply here.
|
||||||
.TP
|
.TP
|
||||||
.B --auth-server=<domain>,<interface>|<ip-address>
|
.B --auth-server=<domain>,[<interface>|<ip-address>...]
|
||||||
Enable DNS authoritative mode for queries arriving at an interface or address. Note that the interface or address
|
Enable DNS authoritative mode for queries arriving at an interface or address. Note that the interface or address
|
||||||
need not be mentioned in
|
need not be mentioned in
|
||||||
.B --interface
|
.B --interface
|
||||||
@@ -244,7 +244,7 @@ specified interface. The <domain> is the "glue record". It should
|
|||||||
resolve in the global DNS to an A and/or AAAA record which points to
|
resolve in the global DNS to an A and/or AAAA record which points to
|
||||||
the address dnsmasq is listening on. When an interface is specified,
|
the address dnsmasq is listening on. When an interface is specified,
|
||||||
it may be qualified with "/4" or "/6" to specify only the IPv4 or IPv6
|
it may be qualified with "/4" or "/6" to specify only the IPv4 or IPv6
|
||||||
addresses associated with the interface.
|
addresses associated with the interface. Since any defined authoritative zones are also available as part of the normal recusive DNS service supplied by dnsmasq, it can make sense to have an --auth-server declaration with no interfaces or address, but simply specifying the glue record.
|
||||||
.TP
|
.TP
|
||||||
.B --local-service
|
.B --local-service
|
||||||
Accept DNS queries only from hosts whose address is on a local subnet,
|
Accept DNS queries only from hosts whose address is on a local subnet,
|
||||||
@@ -827,7 +827,8 @@ authoritative zones as dnsmasq.
|
|||||||
.B --auth-peer=<ip-address>[,<ip-address>[,<ip-address>...]]
|
.B --auth-peer=<ip-address>[,<ip-address>[,<ip-address>...]]
|
||||||
Specify the addresses of secondary servers which are allowed to
|
Specify the addresses of secondary servers which are allowed to
|
||||||
initiate zone transfer (AXFR) requests for zones for which dnsmasq is
|
initiate zone transfer (AXFR) requests for zones for which dnsmasq is
|
||||||
authoritative. If this option is not given, then AXFR requests will be
|
authoritative. If this option is not given but --auth-sec-servers is,
|
||||||
|
then AXFR requests will be
|
||||||
accepted from any secondary. Specifying
|
accepted from any secondary. Specifying
|
||||||
.B --auth-peer
|
.B --auth-peer
|
||||||
without
|
without
|
||||||
|
|||||||
@@ -9,18 +9,18 @@
|
|||||||
# Simon Kelley <simon@thekelleys.org.uk>, 2005.
|
# Simon Kelley <simon@thekelleys.org.uk>, 2005.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: dnsmasq 2.77\n"
|
"Project-Id-Version: dnsmasq 2.80\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2009-06-18 12:24+0100\n"
|
"POT-Creation-Date: 2009-06-18 12:24+0100\n"
|
||||||
"PO-Revision-Date: 2017-07-17 18:30+0100\n"
|
"PO-Revision-Date: 2018-09-29 00:13+0200\n"
|
||||||
"Last-Translator: Conrad Kostecki <ck@conrad-kostecki.de>\n"
|
"Last-Translator: Conrad Kostecki <conrad@kostecki.com>\n"
|
||||||
"Language-Team: German <de@li.org>\n"
|
"Language-Team: German <de@li.org>\n"
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Poedit 2.0.1\n"
|
"X-Generator: Poedit 2.1.1\n"
|
||||||
"X-Poedit-SourceCharset: UTF-8\n"
|
"X-Poedit-SourceCharset: UTF-8\n"
|
||||||
|
|
||||||
#: cache.c:518
|
#: cache.c:518
|
||||||
@@ -150,7 +150,7 @@ msgstr "Konfigurationsdatei festlegen (Voreinstellung: %s)."
|
|||||||
|
|
||||||
#: option.c:350
|
#: option.c:350
|
||||||
msgid "Do NOT fork into the background: run in debug mode."
|
msgid "Do NOT fork into the background: run in debug mode."
|
||||||
msgstr "NICHT in den Hintergrund gehen: Betrieb im Debug-Modus"
|
msgstr "NICHT in den Hintergrund gehen: Betrieb im Debug-Modus."
|
||||||
|
|
||||||
#: option.c:351
|
#: option.c:351
|
||||||
msgid "Do NOT forward queries with no domain part."
|
msgid "Do NOT forward queries with no domain part."
|
||||||
@@ -166,12 +166,12 @@ msgstr "Erweitere einfache Namen in /etc/hosts mit der Domänen-Endung."
|
|||||||
|
|
||||||
#: option.c:354
|
#: option.c:354
|
||||||
msgid "Don't forward spurious DNS requests from Windows hosts."
|
msgid "Don't forward spurious DNS requests from Windows hosts."
|
||||||
msgstr "'unechte' DNS-Anfragen von Windows-Rechnern nicht weiterleiten"
|
msgstr "'unechte' DNS-Anfragen von Windows-Rechnern nicht weiterleiten."
|
||||||
|
|
||||||
# @Simon: I'm a bit unsure about "spurious"
|
# @Simon: I'm a bit unsure about "spurious"
|
||||||
#: option.c:355
|
#: option.c:355
|
||||||
msgid "Enable DHCP in the range given with lease duration."
|
msgid "Enable DHCP in the range given with lease duration."
|
||||||
msgstr "DHCP für angegebenen Bereich und Dauer einschalten"
|
msgstr "DHCP für angegebenen Bereich und Dauer einschalten."
|
||||||
|
|
||||||
#: option.c:356
|
#: option.c:356
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -314,7 +314,7 @@ msgstr "Ausgehenden Port erzwingen für DNS-Anfragen an vorgelagerte Server."
|
|||||||
|
|
||||||
#: option.c:389
|
#: option.c:389
|
||||||
msgid "Do NOT read resolv.conf."
|
msgid "Do NOT read resolv.conf."
|
||||||
msgstr "resolv.conf NICHT lesen."
|
msgstr "Die resolv.conf NICHT lesen."
|
||||||
|
|
||||||
#: option.c:390
|
#: option.c:390
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -376,7 +376,7 @@ msgstr "DHCP-\"vendor class\" auf Marke abbilden."
|
|||||||
|
|
||||||
#: option.c:404
|
#: option.c:404
|
||||||
msgid "Display dnsmasq version and copyright information."
|
msgid "Display dnsmasq version and copyright information."
|
||||||
msgstr "dnsmasq-Version und Urheberrecht anzeigen."
|
msgstr "DNSMasq-Version und Urheberrecht anzeigen."
|
||||||
|
|
||||||
#: option.c:405
|
#: option.c:405
|
||||||
msgid "Translate IPv4 addresses from upstream servers."
|
msgid "Translate IPv4 addresses from upstream servers."
|
||||||
@@ -504,9 +504,8 @@ msgid "Export files by TFTP only from the specified subtree."
|
|||||||
msgstr "Nur vom festgelegten Unterbaum Dateien per TFTP exportieren."
|
msgstr "Nur vom festgelegten Unterbaum Dateien per TFTP exportieren."
|
||||||
|
|
||||||
#: option.c:435
|
#: option.c:435
|
||||||
#, fuzzy
|
|
||||||
msgid "Add client IP or hardware address to tftp-root."
|
msgid "Add client IP or hardware address to tftp-root."
|
||||||
msgstr "IP-Adresse des Klienten an tftp-root anhängen."
|
msgstr "IP-Adresse oder Hardware-Adresse des Klienten an tftp-root anhängen."
|
||||||
|
|
||||||
#: option.c:436
|
#: option.c:436
|
||||||
msgid "Allow access only to files owned by the user running dnsmasq."
|
msgid "Allow access only to files owned by the user running dnsmasq."
|
||||||
@@ -517,9 +516,9 @@ msgid "Do not terminate the service if TFTP directories are inaccessible."
|
|||||||
msgstr "Der Dienst sollte nicht beendet werden, wenn die TFTP-Verzeichnisse nicht zugreifbar sind."
|
msgstr "Der Dienst sollte nicht beendet werden, wenn die TFTP-Verzeichnisse nicht zugreifbar sind."
|
||||||
|
|
||||||
#: option.c:438
|
#: option.c:438
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "Maximum number of concurrent TFTP transfers (defaults to %s)."
|
msgid "Maximum number of concurrent TFTP transfers (defaults to %s)."
|
||||||
msgstr "Höchstzahl nebenläufiger TFTP-Übertragungen (%s voreingestellt)."
|
msgstr "Maximale Anzahl gleichzeitiger TFTP-Übertragungen (%s voreingestellt)."
|
||||||
|
|
||||||
#: option.c:439
|
#: option.c:439
|
||||||
msgid "Maximum MTU to use for TFTP transfers."
|
msgid "Maximum MTU to use for TFTP transfers."
|
||||||
@@ -675,7 +674,6 @@ msgid "Set TTL for authoritative replies"
|
|||||||
msgstr "Setzte TTL für autoritative Antworten"
|
msgstr "Setzte TTL für autoritative Antworten"
|
||||||
|
|
||||||
#: option.c:477
|
#: option.c:477
|
||||||
#, fuzzy
|
|
||||||
msgid "Set authoritative zone information"
|
msgid "Set authoritative zone information"
|
||||||
msgstr "Setze autoritative Zoneninformationen"
|
msgstr "Setze autoritative Zoneninformationen"
|
||||||
|
|
||||||
@@ -724,9 +722,8 @@ msgid "Specify DHCPv6 prefix class"
|
|||||||
msgstr "Spezifiziere DHCPv6 Prefix Klasse"
|
msgstr "Spezifiziere DHCPv6 Prefix Klasse"
|
||||||
|
|
||||||
#: option.c:491
|
#: option.c:491
|
||||||
#, fuzzy
|
|
||||||
msgid "Set MTU, priority, resend-interval and router-lifetime"
|
msgid "Set MTU, priority, resend-interval and router-lifetime"
|
||||||
msgstr "Setze Priorität, Intervall des erneuten Sendens und Router Lebenszeit"
|
msgstr "Setze MTU, Priorität, Sendewiederholungsintervall und Router-Lebensdauer"
|
||||||
|
|
||||||
#: option.c:492
|
#: option.c:492
|
||||||
msgid "Do not log routine DHCP."
|
msgid "Do not log routine DHCP."
|
||||||
@@ -758,7 +755,7 @@ msgstr "Setzte TTL in DNS-Antworten mit DHCP-abgeleiteten Adressen."
|
|||||||
|
|
||||||
#: option.c:499
|
#: option.c:499
|
||||||
msgid "Delay DHCP replies for at least number of seconds."
|
msgid "Delay DHCP replies for at least number of seconds."
|
||||||
msgstr ""
|
msgstr "Verzögere DHCP-Antworten für mindestens Anzahl von Sekunden."
|
||||||
|
|
||||||
#: option.c:703
|
#: option.c:703
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -781,7 +778,7 @@ msgstr "Gültige Optionen sind:\n"
|
|||||||
|
|
||||||
#: option.c:754 option.c:868
|
#: option.c:754 option.c:868
|
||||||
msgid "bad address"
|
msgid "bad address"
|
||||||
msgstr "Fehlerhafte Adresse."
|
msgstr "Fehlerhafte Adresse"
|
||||||
|
|
||||||
#: option.c:779 option.c:783
|
#: option.c:779 option.c:783
|
||||||
msgid "bad port"
|
msgid "bad port"
|
||||||
@@ -793,7 +790,7 @@ msgstr "Schnittstellenbindung nicht unterstützt"
|
|||||||
|
|
||||||
#: option.c:821 option.c:856
|
#: option.c:821 option.c:856
|
||||||
msgid "interface can only be specified once"
|
msgid "interface can only be specified once"
|
||||||
msgstr ""
|
msgstr "Schnittstelle kann nur einmal angegeben werden"
|
||||||
|
|
||||||
#: option.c:835 option.c:3809
|
#: option.c:835 option.c:3809
|
||||||
msgid "bad interface name"
|
msgid "bad interface name"
|
||||||
@@ -960,7 +957,7 @@ msgstr "Fehlerhafte DHCP-Proxy-Adresse"
|
|||||||
|
|
||||||
#: option.c:3704
|
#: option.c:3704
|
||||||
msgid "Bad dhcp-relay"
|
msgid "Bad dhcp-relay"
|
||||||
msgstr "unzulässiger dhcp-relay"
|
msgstr "Uunzulässiger dhcp-relay"
|
||||||
|
|
||||||
#: option.c:3745
|
#: option.c:3745
|
||||||
msgid "bad RA-params"
|
msgid "bad RA-params"
|
||||||
@@ -1016,7 +1013,7 @@ msgstr "unzulässige Wichtung"
|
|||||||
|
|
||||||
#: option.c:4073
|
#: option.c:4073
|
||||||
msgid "Bad host-record"
|
msgid "Bad host-record"
|
||||||
msgstr "unzulässiger host-record"
|
msgstr "Unzulässiger host-record"
|
||||||
|
|
||||||
#: option.c:4097
|
#: option.c:4097
|
||||||
msgid "Bad name in host-record"
|
msgid "Bad name in host-record"
|
||||||
@@ -1123,7 +1120,7 @@ msgstr "unzulässige Optionen auf der Befehlszeile: %s"
|
|||||||
#: option.c:4818
|
#: option.c:4818
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "CNAME loop involving %s"
|
msgid "CNAME loop involving %s"
|
||||||
msgstr ""
|
msgstr "CNAME-Schleife mit %s"
|
||||||
|
|
||||||
#: option.c:4854
|
#: option.c:4854
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -1178,7 +1175,7 @@ msgstr "möglichen DNS-Rebind-Angriff entdeckt: %s"
|
|||||||
#: forward.c:870
|
#: forward.c:870
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "reducing DNS packet size for nameserver %s to %d"
|
msgid "reducing DNS packet size for nameserver %s to %d"
|
||||||
msgstr ""
|
msgstr "Reduziere der DNS-Paketgröße für Nameserver %s auf %d"
|
||||||
|
|
||||||
#: forward.c:1266 forward.c:1704
|
#: forward.c:1266 forward.c:1704
|
||||||
msgid "Ignoring query from non-local network"
|
msgid "Ignoring query from non-local network"
|
||||||
@@ -1204,9 +1201,9 @@ msgid "LOUD WARNING: use --bind-dynamic rather than --bind-interfaces to avoid D
|
|||||||
msgstr "LOUD WARNING: Es sollte --bind-dynamic anstatt --bind-interfaces benutzt werden, um DNS-Verstärkungsangriffe auf diesen Schnittstellen zu unterbinden"
|
msgstr "LOUD WARNING: Es sollte --bind-dynamic anstatt --bind-interfaces benutzt werden, um DNS-Verstärkungsangriffe auf diesen Schnittstellen zu unterbinden"
|
||||||
|
|
||||||
#: network.c:1047
|
#: network.c:1047
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "warning: using interface %s instead"
|
msgid "warning: using interface %s instead"
|
||||||
msgstr "Warnung: %s nicht zugreifbar"
|
msgstr "Warnung: Benutzer stattdessen Schnittstelle %s"
|
||||||
|
|
||||||
#: network.c:1056
|
#: network.c:1056
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -1289,9 +1286,9 @@ msgid "using nameserver %s#%d"
|
|||||||
msgstr "Benutze Namensserver %s#%d"
|
msgstr "Benutze Namensserver %s#%d"
|
||||||
|
|
||||||
#: network.c:1591
|
#: network.c:1591
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "using %d more local addresses"
|
msgid "using %d more local addresses"
|
||||||
msgstr "Benutze %d mehr Namensserver"
|
msgstr "Benutze %d mehr lokale Adressen"
|
||||||
|
|
||||||
#: network.c:1593
|
#: network.c:1593
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -1425,9 +1422,8 @@ msgid "DNSSEC validation enabled"
|
|||||||
msgstr "DNSSEC-Validierung aktiviert"
|
msgstr "DNSSEC-Validierung aktiviert"
|
||||||
|
|
||||||
#: dnsmasq.c:775
|
#: dnsmasq.c:775
|
||||||
#, fuzzy
|
|
||||||
msgid "DNSSEC signature timestamps not checked until receipt of SIGINT"
|
msgid "DNSSEC signature timestamps not checked until receipt of SIGINT"
|
||||||
msgstr "DNSSEC Signatur-Zeitstempel werden erst ab dem ersten Neuladen des Caches überprüft"
|
msgstr "DNSSEC-Signatur-Zeitstempel werden erst nach Empfang von SIGINT überprüft"
|
||||||
|
|
||||||
#: dnsmasq.c:778
|
#: dnsmasq.c:778
|
||||||
msgid "DNSSEC signature timestamps not checked until system time valid"
|
msgid "DNSSEC signature timestamps not checked until system time valid"
|
||||||
@@ -1549,7 +1545,7 @@ msgstr "Das TFTP-Verzeichnis %s ist nicht zugreifbar: %s"
|
|||||||
#: dnsmasq.c:1242
|
#: dnsmasq.c:1242
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "cannot create timestamp file %s: %s"
|
msgid "cannot create timestamp file %s: %s"
|
||||||
msgstr "Kann keine timestamp-Datei %s erzeugen: %s "
|
msgstr "Kann keine Zeitstempel-Datei %s erzeugen: %s"
|
||||||
|
|
||||||
#: dnsmasq.c:1326
|
#: dnsmasq.c:1326
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -1671,12 +1667,12 @@ msgstr "kann Lease-Datei %s nicht öffnen: %s"
|
|||||||
#: lease.c:175
|
#: lease.c:175
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "failed to parse lease database, invalid line: %s %s %s %s ..."
|
msgid "failed to parse lease database, invalid line: %s %s %s %s ..."
|
||||||
msgstr ""
|
msgstr "Fehler beim Parsen der Lease-Datenbank, ungültige Zeile: %s %s %s %s ..."
|
||||||
|
|
||||||
#: lease.c:180
|
#: lease.c:180
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "failed to read lease file %s: %s"
|
msgid "failed to read lease file %s: %s"
|
||||||
msgstr "konnte %s nicht lesen: %s"
|
msgstr "konnte Lease-Datei %s nicht lesen: %s"
|
||||||
|
|
||||||
#: lease.c:196
|
#: lease.c:196
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -1874,7 +1870,7 @@ msgstr "Kann RFC3925-Option nicht senden: zu viele Optionen für Unternehmen Nr.
|
|||||||
#: rfc2131.c:2650
|
#: rfc2131.c:2650
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u reply delay: %d"
|
msgid "%u reply delay: %d"
|
||||||
msgstr ""
|
msgstr "%u Antwortverzögerung: %d"
|
||||||
|
|
||||||
#: netlink.c:77
|
#: netlink.c:77
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -2174,14 +2170,13 @@ msgid "failed to create IPset control socket: %s"
|
|||||||
msgstr "konnte IPset-Kontroll-Socket nicht erzeugen: %s"
|
msgstr "konnte IPset-Kontroll-Socket nicht erzeugen: %s"
|
||||||
|
|
||||||
#: ipset.c:233
|
#: ipset.c:233
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "failed to update ipset %s: %s"
|
msgid "failed to update ipset %s: %s"
|
||||||
msgstr "kann die mtime nicht auf %s aktualisieren: %s"
|
msgstr "Aktualisierung von ipset %s fehlgeschlagen: %s"
|
||||||
|
|
||||||
#: dnssec.c:208
|
#: dnssec.c:208
|
||||||
#, fuzzy
|
|
||||||
msgid "system time considered valid, now checking DNSSEC signature timestamps."
|
msgid "system time considered valid, now checking DNSSEC signature timestamps."
|
||||||
msgstr "Prüfe jetzt DNSSEC Signatur-Zeitstempel"
|
msgstr "Prüfe jetzt DNSSEC Signatur-Zeitstempel."
|
||||||
|
|
||||||
#: blockdata.c:58
|
#: blockdata.c:58
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -2209,9 +2204,9 @@ msgid "error: cannot strlcpy table name %s"
|
|||||||
msgstr "Fehler: Kann den Tabellennamen %s nicht strlcpy"
|
msgstr "Fehler: Kann den Tabellennamen %s nicht strlcpy"
|
||||||
|
|
||||||
#: tables.c:101
|
#: tables.c:101
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "IPset: error:%s"
|
msgid "IPset: error:%s"
|
||||||
msgstr "DBus-Fehler: %s"
|
msgstr "IPset: Fehler: %s"
|
||||||
|
|
||||||
#: tables.c:108
|
#: tables.c:108
|
||||||
msgid "info: table created"
|
msgid "info: table created"
|
||||||
|
|||||||
+9
-2
@@ -216,7 +216,7 @@ int main (int argc, char **argv)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef HAVE_AUTH
|
#ifndef HAVE_AUTH
|
||||||
if (daemon->authserver || daemon->auth_zones)
|
if (daemon->auth_zones)
|
||||||
die(_("authoritative DNS not available: set HAVE_AUTH in src/config.h"), NULL, EC_BADCONF);
|
die(_("authoritative DNS not available: set HAVE_AUTH in src/config.h"), NULL, EC_BADCONF);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -235,13 +235,20 @@ int main (int argc, char **argv)
|
|||||||
|
|
||||||
now = dnsmasq_time();
|
now = dnsmasq_time();
|
||||||
|
|
||||||
|
if (daemon->auth_zones)
|
||||||
|
{
|
||||||
|
if (!daemon->authserver)
|
||||||
|
die(_("--auth-server required when an auth zone is defined."), NULL, EC_BADCONF);
|
||||||
|
|
||||||
/* Create a serial at startup if not configured. */
|
/* Create a serial at startup if not configured. */
|
||||||
if (daemon->auth_zones && daemon->soa_sn == 0)
|
|
||||||
#ifdef HAVE_BROKEN_RTC
|
#ifdef HAVE_BROKEN_RTC
|
||||||
|
if (daemon->soa_sn == 0)
|
||||||
die(_("zone serial must be configured in --auth-soa"), NULL, EC_BADCONF);
|
die(_("zone serial must be configured in --auth-soa"), NULL, EC_BADCONF);
|
||||||
#else
|
#else
|
||||||
|
if (daemon->soa_sn == 0)
|
||||||
daemon->soa_sn = now;
|
daemon->soa_sn = now;
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef HAVE_DHCP6
|
#ifdef HAVE_DHCP6
|
||||||
if (daemon->dhcp6)
|
if (daemon->dhcp6)
|
||||||
|
|||||||
+1
-1
@@ -1227,7 +1227,7 @@ int in_zone(struct auth_zone *zone, char *name, char **cut);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* dnssec.c */
|
/* dnssec.c */
|
||||||
size_t dnssec_generate_query(struct dns_header *header, unsigned char *end, char *name, int class, int type, union mysockaddr *addr, int edns_pktsz);
|
size_t dnssec_generate_query(struct dns_header *header, unsigned char *end, char *name, int class, int type, int edns_pktsz);
|
||||||
int dnssec_validate_by_ds(time_t now, struct dns_header *header, size_t plen, char *name, char *keyname, int class);
|
int dnssec_validate_by_ds(time_t now, struct dns_header *header, size_t plen, char *name, char *keyname, int class);
|
||||||
int dnssec_validate_ds(time_t now, struct dns_header *header, size_t plen, char *name, char *keyname, int class);
|
int dnssec_validate_ds(time_t now, struct dns_header *header, size_t plen, char *name, char *keyname, int class);
|
||||||
int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, char *name, char *keyname, int *class,
|
int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, char *name, char *keyname, int *class,
|
||||||
|
|||||||
+2
-10
@@ -1761,7 +1761,7 @@ int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, ch
|
|||||||
|
|
||||||
unsigned char *ans_start, *p1, *p2;
|
unsigned char *ans_start, *p1, *p2;
|
||||||
int type1, class1, rdlen1 = 0, type2, class2, rdlen2, qclass, qtype, targetidx;
|
int type1, class1, rdlen1 = 0, type2, class2, rdlen2, qclass, qtype, targetidx;
|
||||||
int i, j, rc;
|
int i, j, rc = STAT_INSECURE;
|
||||||
int secure = STAT_SECURE;
|
int secure = STAT_SECURE;
|
||||||
|
|
||||||
/* extend rr_status if necessary */
|
/* extend rr_status if necessary */
|
||||||
@@ -2026,19 +2026,11 @@ int dnskey_keytag(int alg, int flags, unsigned char *key, int keylen)
|
|||||||
}
|
}
|
||||||
|
|
||||||
size_t dnssec_generate_query(struct dns_header *header, unsigned char *end, char *name, int class,
|
size_t dnssec_generate_query(struct dns_header *header, unsigned char *end, char *name, int class,
|
||||||
int type, union mysockaddr *addr, int edns_pktsz)
|
int type, int edns_pktsz)
|
||||||
{
|
{
|
||||||
unsigned char *p;
|
unsigned char *p;
|
||||||
char *types = querystr("dnssec-query", type);
|
|
||||||
size_t ret;
|
size_t ret;
|
||||||
|
|
||||||
if (addr->sa.sa_family == AF_INET)
|
|
||||||
log_query(F_NOEXTRA | F_DNSSEC | F_IPV4, name, (struct all_addr *)&addr->in.sin_addr, types);
|
|
||||||
#ifdef HAVE_IPV6
|
|
||||||
else
|
|
||||||
log_query(F_NOEXTRA | F_DNSSEC | F_IPV6, name, (struct all_addr *)&addr->in6.sin6_addr, types);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
header->qdcount = htons(1);
|
header->qdcount = htons(1);
|
||||||
header->ancount = htons(0);
|
header->ancount = htons(0);
|
||||||
header->nscount = htons(0);
|
header->nscount = htons(0);
|
||||||
|
|||||||
+27
-6
@@ -1058,7 +1058,7 @@ void reply_query(int fd, int family, time_t now)
|
|||||||
status = STAT_ABANDONED;
|
status = STAT_ABANDONED;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int fd, type = SERV_DO_DNSSEC;
|
int querytype, fd, type = SERV_DO_DNSSEC;
|
||||||
struct frec *next = new->next;
|
struct frec *next = new->next;
|
||||||
char *domain;
|
char *domain;
|
||||||
|
|
||||||
@@ -1111,15 +1111,26 @@ void reply_query(int fd, int family, time_t now)
|
|||||||
if (status == STAT_NEED_KEY)
|
if (status == STAT_NEED_KEY)
|
||||||
{
|
{
|
||||||
new->flags |= FREC_DNSKEY_QUERY;
|
new->flags |= FREC_DNSKEY_QUERY;
|
||||||
nn = dnssec_generate_query(header, ((unsigned char *) header) + server->edns_pktsz,
|
querytype = T_DNSKEY;
|
||||||
daemon->keyname, forward->class, T_DNSKEY, &server->addr, server->edns_pktsz);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
new->flags |= FREC_DS_QUERY;
|
new->flags |= FREC_DS_QUERY;
|
||||||
nn = dnssec_generate_query(header,((unsigned char *) header) + server->edns_pktsz,
|
querytype = T_DS;
|
||||||
daemon->keyname, forward->class, T_DS, &server->addr, server->edns_pktsz);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nn = dnssec_generate_query(header,((unsigned char *) header) + server->edns_pktsz,
|
||||||
|
daemon->keyname, forward->class, querytype, server->edns_pktsz);
|
||||||
|
|
||||||
|
if (server->addr.sa.sa_family == AF_INET)
|
||||||
|
log_query(F_NOEXTRA | F_DNSSEC | F_IPV4, daemon->keyname, (struct all_addr *)&(server->addr.in.sin_addr),
|
||||||
|
querystr("dnssec-query", querytype));
|
||||||
|
#ifdef HAVE_IPV6
|
||||||
|
else
|
||||||
|
log_query(F_NOEXTRA | F_DNSSEC | F_IPV6, daemon->keyname, (struct all_addr *)&(server->addr.in6.sin6_addr),
|
||||||
|
querystr("dnssec-query", querytype));
|
||||||
|
#endif
|
||||||
|
|
||||||
if ((hash = hash_questions(header, nn, daemon->namebuff)))
|
if ((hash = hash_questions(header, nn, daemon->namebuff)))
|
||||||
memcpy(new->hash, hash, HASH_SIZE);
|
memcpy(new->hash, hash, HASH_SIZE);
|
||||||
new->new_id = get_id();
|
new->new_id = get_id();
|
||||||
@@ -1655,7 +1666,7 @@ static int tcp_key_recurse(time_t now, int status, struct dns_header *header, si
|
|||||||
}
|
}
|
||||||
|
|
||||||
m = dnssec_generate_query(new_header, ((unsigned char *) new_header) + 65536, keyname, class,
|
m = dnssec_generate_query(new_header, ((unsigned char *) new_header) + 65536, keyname, class,
|
||||||
new_status == STAT_NEED_KEY ? T_DNSKEY : T_DS, &server->addr, server->edns_pktsz);
|
new_status == STAT_NEED_KEY ? T_DNSKEY : T_DS, server->edns_pktsz);
|
||||||
|
|
||||||
*length = htons(m);
|
*length = htons(m);
|
||||||
|
|
||||||
@@ -1729,6 +1740,16 @@ static int tcp_key_recurse(time_t now, int status, struct dns_header *header, si
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (server->addr.sa.sa_family == AF_INET)
|
||||||
|
log_query(F_NOEXTRA | F_DNSSEC | F_IPV4, keyname, (struct all_addr *)&(server->addr.in.sin_addr),
|
||||||
|
querystr("dnssec-query", new_status == STAT_NEED_KEY ? T_DNSKEY : T_DS));
|
||||||
|
#ifdef HAVE_IPV6
|
||||||
|
else
|
||||||
|
log_query(F_NOEXTRA | F_DNSSEC | F_IPV6, keyname, (struct all_addr *)&(server->addr.in6.sin6_addr),
|
||||||
|
querystr("dnssec-query", new_status == STAT_NEED_KEY ? T_DNSKEY : T_DS));
|
||||||
|
#endif
|
||||||
|
|
||||||
server->flags |= SERV_GOT_TCP;
|
server->flags |= SERV_GOT_TCP;
|
||||||
|
|
||||||
m = (c1 << 8) | c2;
|
m = (c1 << 8) | c2;
|
||||||
|
|||||||
+5
-7
@@ -1902,12 +1902,12 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
|
|||||||
}
|
}
|
||||||
|
|
||||||
case LOPT_AUTHSERV: /* --auth-server */
|
case LOPT_AUTHSERV: /* --auth-server */
|
||||||
if (!(comma = split(arg)))
|
comma = split(arg);
|
||||||
ret_err(gen_err);
|
|
||||||
|
|
||||||
daemon->authserver = opt_string_alloc(arg);
|
daemon->authserver = opt_string_alloc(arg);
|
||||||
arg = comma;
|
|
||||||
do {
|
while ((arg = comma))
|
||||||
|
{
|
||||||
struct iname *new = opt_malloc(sizeof(struct iname));
|
struct iname *new = opt_malloc(sizeof(struct iname));
|
||||||
comma = split(arg);
|
comma = split(arg);
|
||||||
new->name = NULL;
|
new->name = NULL;
|
||||||
@@ -1937,9 +1937,7 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
|
|||||||
}
|
}
|
||||||
new->next = daemon->authinterface;
|
new->next = daemon->authinterface;
|
||||||
daemon->authinterface = new;
|
daemon->authinterface = new;
|
||||||
|
};
|
||||||
arg = comma;
|
|
||||||
} while (arg);
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
+39
-41
@@ -700,15 +700,48 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
|
|||||||
client_hostname = daemon->dhcp_buff;
|
client_hostname = daemon->dhcp_buff;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (client_hostname)
|
if (client_hostname && option_bool(OPT_LOG_OPTS))
|
||||||
{
|
|
||||||
struct dhcp_match_name *m;
|
|
||||||
size_t nl = strlen(client_hostname);
|
|
||||||
|
|
||||||
if (option_bool(OPT_LOG_OPTS))
|
|
||||||
my_syslog(MS_DHCP | LOG_INFO, _("%u client provides name: %s"), ntohl(mess->xid), client_hostname);
|
my_syslog(MS_DHCP | LOG_INFO, _("%u client provides name: %s"), ntohl(mess->xid), client_hostname);
|
||||||
|
|
||||||
|
|
||||||
|
if (have_config(config, CONFIG_NAME))
|
||||||
|
{
|
||||||
|
hostname = config->hostname;
|
||||||
|
domain = config->domain;
|
||||||
|
hostname_auth = 1;
|
||||||
|
/* be careful not to send an OFFER with a hostname not matching the DISCOVER. */
|
||||||
|
if (fqdn_flags != 0 || !client_hostname || hostname_isequal(hostname, client_hostname))
|
||||||
|
offer_hostname = hostname;
|
||||||
|
}
|
||||||
|
else if (client_hostname)
|
||||||
|
{
|
||||||
|
struct dhcp_match_name *m;
|
||||||
|
size_t nl;
|
||||||
|
|
||||||
|
domain = strip_hostname(client_hostname);
|
||||||
|
|
||||||
|
if ((nl = strlen(client_hostname)) != 0)
|
||||||
|
{
|
||||||
|
hostname = client_hostname;
|
||||||
|
|
||||||
|
if (!config)
|
||||||
|
{
|
||||||
|
/* Search again now we have a hostname.
|
||||||
|
Only accept configs without CLID and HWADDR here, (they won't match)
|
||||||
|
to avoid impersonation by name. */
|
||||||
|
struct dhcp_config *new = find_config(daemon->dhcp_conf, context, NULL, 0,
|
||||||
|
mess->chaddr, mess->hlen,
|
||||||
|
mess->htype, hostname);
|
||||||
|
if (new && !have_config(new, CONFIG_CLID) && !new->hwaddr)
|
||||||
|
{
|
||||||
|
config = new;
|
||||||
|
/* set "known" tag for known hosts */
|
||||||
|
known_id.net = "known";
|
||||||
|
known_id.next = netid;
|
||||||
|
netid = &known_id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (m = daemon->dhcp_name_match; m; m = m->next)
|
for (m = daemon->dhcp_name_match; m; m = m->next)
|
||||||
{
|
{
|
||||||
size_t ml = strlen(m->name);
|
size_t ml = strlen(m->name);
|
||||||
@@ -733,41 +766,6 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
|
|||||||
client_hostname[ml] = save;
|
client_hostname[ml] = save;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (have_config(config, CONFIG_NAME))
|
|
||||||
{
|
|
||||||
hostname = config->hostname;
|
|
||||||
domain = config->domain;
|
|
||||||
hostname_auth = 1;
|
|
||||||
/* be careful not to send an OFFER with a hostname not matching the DISCOVER. */
|
|
||||||
if (fqdn_flags != 0 || !client_hostname || hostname_isequal(hostname, client_hostname))
|
|
||||||
offer_hostname = hostname;
|
|
||||||
}
|
|
||||||
else if (client_hostname)
|
|
||||||
{
|
|
||||||
domain = strip_hostname(client_hostname);
|
|
||||||
|
|
||||||
if (strlen(client_hostname) != 0)
|
|
||||||
{
|
|
||||||
hostname = client_hostname;
|
|
||||||
if (!config)
|
|
||||||
{
|
|
||||||
/* Search again now we have a hostname.
|
|
||||||
Only accept configs without CLID and HWADDR here, (they won't match)
|
|
||||||
to avoid impersonation by name. */
|
|
||||||
struct dhcp_config *new = find_config(daemon->dhcp_conf, context, NULL, 0,
|
|
||||||
mess->chaddr, mess->hlen,
|
|
||||||
mess->htype, hostname);
|
|
||||||
if (new && !have_config(new, CONFIG_CLID) && !new->hwaddr)
|
|
||||||
{
|
|
||||||
config = new;
|
|
||||||
/* set "known" tag for known hosts */
|
|
||||||
known_id.net = "known";
|
|
||||||
known_id.next = netid;
|
|
||||||
netid = &known_id;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config)
|
if (config)
|
||||||
|
|||||||
@@ -496,11 +496,16 @@ static int dhcp6_no_relay(struct state *state, int msg_type, void *inbuff, size_
|
|||||||
}
|
}
|
||||||
else if (state->client_hostname)
|
else if (state->client_hostname)
|
||||||
{
|
{
|
||||||
|
struct dhcp_match_name *m;
|
||||||
|
size_t nl;
|
||||||
|
|
||||||
state->domain = strip_hostname(state->client_hostname);
|
state->domain = strip_hostname(state->client_hostname);
|
||||||
|
nl = strlen(state->client_hostname);
|
||||||
|
|
||||||
if (strlen(state->client_hostname) != 0)
|
if (strlen(state->client_hostname) != 0)
|
||||||
{
|
{
|
||||||
state->hostname = state->client_hostname;
|
state->hostname = state->client_hostname;
|
||||||
|
|
||||||
if (!config)
|
if (!config)
|
||||||
{
|
{
|
||||||
/* Search again now we have a hostname.
|
/* Search again now we have a hostname.
|
||||||
@@ -510,6 +515,30 @@ static int dhcp6_no_relay(struct state *state, int msg_type, void *inbuff, size_
|
|||||||
if (new && !have_config(new, CONFIG_CLID) && !new->hwaddr)
|
if (new && !have_config(new, CONFIG_CLID) && !new->hwaddr)
|
||||||
config = new;
|
config = new;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (m = daemon->dhcp_name_match; m; m = m->next)
|
||||||
|
{
|
||||||
|
size_t ml = strlen(m->name);
|
||||||
|
char save = 0;
|
||||||
|
|
||||||
|
if (nl < ml)
|
||||||
|
continue;
|
||||||
|
if (nl > ml)
|
||||||
|
{
|
||||||
|
save = state->client_hostname[ml];
|
||||||
|
state->client_hostname[ml] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hostname_isequal(state->client_hostname, m->name) &&
|
||||||
|
(save == 0 || m->wildcard))
|
||||||
|
{
|
||||||
|
m->netid->next = state->tags;
|
||||||
|
state->tags = m->netid;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (save != 0)
|
||||||
|
state->client_hostname[ml] = save;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -166,7 +166,8 @@ time_t periodic_slaac(time_t now, struct dhcp_lease *leases)
|
|||||||
|
|
||||||
if (sendto(daemon->icmp6fd, daemon->outpacket.iov_base, save_counter(-1), 0,
|
if (sendto(daemon->icmp6fd, daemon->outpacket.iov_base, save_counter(-1), 0,
|
||||||
(struct sockaddr *)&addr, sizeof(addr)) == -1 &&
|
(struct sockaddr *)&addr, sizeof(addr)) == -1 &&
|
||||||
errno == EHOSTUNREACH)
|
errno == EHOSTUNREACH &&
|
||||||
|
slaac->backoff == 12)
|
||||||
slaac->ping_time = 0; /* Give up */
|
slaac->ping_time = 0; /* Give up */
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in new issue
Block a user