import unbound-1.13.1-13.el9_0
This commit is contained in:
commit
ff8d30f26d
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
SOURCES/unbound-1.13.1.tar.gz
|
1
.unbound.metadata
Normal file
1
.unbound.metadata
Normal file
@ -0,0 +1 @@
|
|||||||
|
561522b06943f6d1c33bd78132db1f7020fc4fd1 SOURCES/unbound-1.13.1.tar.gz
|
10
SOURCES/block-example.com.conf
Normal file
10
SOURCES/block-example.com.conf
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# entries in this file override toe global DNS
|
||||||
|
#
|
||||||
|
# Example blocking email going out to example.com
|
||||||
|
#
|
||||||
|
# local-data: "example.com. 3600 IN MX 5 127.0.0.1"
|
||||||
|
# local-data: "example.com. 3600 IN A 127.0.0.1"
|
||||||
|
|
||||||
|
# This can also be done dynamically using: unbound-control local-data [...]
|
||||||
|
|
||||||
|
# For more complicated redirection, use conf.d/ with stub-add: or forward-add:
|
17
SOURCES/example.com.conf
Normal file
17
SOURCES/example.com.conf
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# Example of an override of the "public DNS tree" with an "internal view"
|
||||||
|
# override, for example to add an internal-only corporate DNS zone.
|
||||||
|
#
|
||||||
|
# The stub-zone/stub-addr must point to AUTHORITATIVE servers. If you want to
|
||||||
|
# point to an internal RECURSIVE server, use forward-zone/forward-addr instead.
|
||||||
|
|
||||||
|
#stub-zone:
|
||||||
|
# name: example.com
|
||||||
|
# stub-prime: no
|
||||||
|
# # if you could trust a lookup, use:
|
||||||
|
# stub-host: a.iana-servers.net.
|
||||||
|
# stub-host: b.iana-servers.net.
|
||||||
|
# # else specify the IP's using:
|
||||||
|
# stub-addr: 199.43.132.53
|
||||||
|
# stub-addr: 2001:500:8c::53
|
||||||
|
# stub-addr: 199.43.133.53
|
||||||
|
# stub-addr: 2001:500:8d::53
|
7
SOURCES/example.com.key
Normal file
7
SOURCES/example.com.key
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
; // format is BIND trusted-keys format
|
||||||
|
; // Ensure to only put KSKs (usually 257) here, not ZSKs (usually 256)
|
||||||
|
|
||||||
|
; // trusted-keys {
|
||||||
|
; // "example.com." 257 3 8 "AwEAAawt7HplI5M8GGAsxuyCyjF0l+QlcgVN11CRZ4vP66qbDCX0BnShZ11BGb//4zSG/8mmBHirL2FLg+mVuIIxig+iroZYjh4iTKVOhv2hZftRwyrQHK++qXvCCWN3ki51RG/e8R4kOEV71rZ8OgQvPWx6F91qroqOPpcf7PPxippeHOn+PxnP0hpyLyo1mx1rPs/cMpL3jOMufGP+LJYh+fBU7lt0sP5i09HaJPruzyZML9BPtpv8ZAdQhwtXVG0+MnET2qT/1+TljpxZn6yeegFRCFRHBjMo6iiRJnUWra/klkrgEn2Q+BXGTOMTTKQdYz4OxYEa1z7apu3a09dYNBM="; // key id = 51605
|
||||||
|
; // "example.com." 257 3 8 "AwEAAeikvxboZpn9VCxm3YDLHo40SvA9EmRwJHHQyJ0OCzrQSRBSipojrW7yESXWiDDyzflS8rgzDs7M3fIdSduOdyNi55DmXPdkS8HYORTMNyzFsSOg+xx6tUySK2p4WAhlbsJNLz4IkQCek59NoDBOLyQ15npsr7Tgfb/HHU7zmCMvnxh0SqO2lyhnQfk29Thc3nC4KNJNb3drjWKOuCw5mg+2GrEZYc/VqdeGvrOCQ2el8jWZpSU5cxb7EdEy4B9nEeZiBpHXaZ5XJ+ewi4vmcUK5/445mGJqV4rDeicy5/ShC/BJ81v3bIRPWebvDRJmDbjr2d9MnLXUE7yyETrQd18="; // key id = 31589
|
||||||
|
; // };
|
237
SOURCES/icannbundle.pem
Normal file
237
SOURCES/icannbundle.pem
Normal file
@ -0,0 +1,237 @@
|
|||||||
|
Certificate:
|
||||||
|
Data:
|
||||||
|
Version: 3 (0x2)
|
||||||
|
Serial Number: 1 (0x1)
|
||||||
|
Signature Algorithm: sha256WithRSAEncryption
|
||||||
|
Issuer: O=ICANN, OU=ICANN Certification Authority, CN=ICANN Root CA, C=US
|
||||||
|
Validity
|
||||||
|
Not Before: Dec 23 04:19:12 2009 GMT
|
||||||
|
Not After : Dec 18 04:19:12 2029 GMT
|
||||||
|
Subject: O=ICANN, OU=ICANN Certification Authority, CN=ICANN Root CA, C=US
|
||||||
|
Subject Public Key Info:
|
||||||
|
Public Key Algorithm: rsaEncryption
|
||||||
|
RSA Public Key: (2048 bit)
|
||||||
|
Modulus (2048 bit):
|
||||||
|
00:a0:db:70:b8:4f:34:da:9c:d4:d0:7e:bb:ea:15:
|
||||||
|
bc:e9:c9:11:2a:1f:61:2f:6a:b9:bd:3f:3d:76:a0:
|
||||||
|
9a:0a:f7:ee:93:6e:6e:55:53:84:8c:f2:2c:f1:82:
|
||||||
|
27:c8:0f:9a:cf:52:1b:54:da:28:d2:2c:30:8e:dd:
|
||||||
|
fb:92:20:33:2d:d6:c8:f1:0e:10:21:88:71:fa:84:
|
||||||
|
22:4b:5d:47:56:16:7c:9b:9f:5d:c3:11:79:9c:14:
|
||||||
|
e2:ff:c0:74:ac:dd:39:d7:e0:38:d8:b0:73:aa:fb:
|
||||||
|
d1:db:84:af:52:22:a8:f6:d5:9b:94:f4:e6:5d:5e:
|
||||||
|
e8:3f:87:90:0b:c7:1a:77:f5:2e:d3:8f:1a:ce:02:
|
||||||
|
1d:07:69:21:47:32:da:46:ae:00:4c:b6:a5:a2:9c:
|
||||||
|
39:c1:c0:4a:f6:d3:1c:ae:d3:6d:bb:c7:18:f0:7e:
|
||||||
|
ed:f6:80:ce:d0:01:2e:89:de:12:ba:ee:11:cb:a6:
|
||||||
|
7a:d7:0d:7c:f3:08:8d:72:9d:bf:55:75:13:70:bb:
|
||||||
|
31:22:4a:cb:e8:c0:aa:a4:09:aa:36:68:40:60:74:
|
||||||
|
9d:e7:19:81:43:22:52:fe:c9:2b:52:0f:41:13:36:
|
||||||
|
09:72:65:95:cc:89:ae:6f:56:17:16:34:73:52:a3:
|
||||||
|
04:ed:bd:88:82:8a:eb:d7:dc:82:52:9c:06:e1:52:
|
||||||
|
85:41
|
||||||
|
Exponent: 65537 (0x10001)
|
||||||
|
X509v3 extensions:
|
||||||
|
X509v3 Basic Constraints: critical
|
||||||
|
CA:TRUE
|
||||||
|
X509v3 Key Usage: critical
|
||||||
|
Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment, Key Agreement, Certificate Sign, CRL Sign
|
||||||
|
X509v3 Subject Key Identifier:
|
||||||
|
BA:52:E9:49:83:24:86:52:2F:C7:99:CD:FC:8D:6B:69:08:4D:C0:50
|
||||||
|
Signature Algorithm: sha256WithRSAEncryption
|
||||||
|
0f:f1:e9:82:a2:0a:87:9f:2d:94:60:5a:b2:c0:4b:a1:2f:2b:
|
||||||
|
3b:47:d5:0a:99:86:38:b2:ec:c6:3b:89:e4:6e:07:cf:14:c7:
|
||||||
|
c7:e8:cf:99:8f:aa:30:c3:19:70:b9:e6:6d:d6:3f:c8:68:26:
|
||||||
|
b2:a0:a5:37:42:ca:d8:62:80:d1:a2:5a:48:2e:1f:85:3f:0c:
|
||||||
|
7b:c2:c7:94:11:5f:19:2a:95:ac:a0:3a:03:d8:91:5b:2e:0d:
|
||||||
|
9c:7c:1f:2e:fc:e9:44:e1:16:26:73:1c:45:4a:65:c1:83:4c:
|
||||||
|
90:f3:f2:28:42:df:db:c4:e7:04:12:18:62:43:5e:bc:1f:6c:
|
||||||
|
84:e6:bc:49:32:df:61:d7:99:ee:e4:90:52:7b:0a:c2:91:8a:
|
||||||
|
98:62:66:b1:c8:e0:b7:5a:b5:46:7c:76:71:54:8e:cc:a4:81:
|
||||||
|
5c:19:db:d2:6f:66:b5:bb:2b:ae:6b:c9:74:04:a8:24:de:e8:
|
||||||
|
c5:d3:fc:2c:1c:d7:8f:db:6a:8d:c9:53:be:5d:50:73:ac:cf:
|
||||||
|
1f:93:c0:52:50:5b:a2:4f:fe:ad:65:36:17:46:d1:2d:e5:a2:
|
||||||
|
90:66:05:db:29:4e:5d:50:5d:e3:4f:da:a0:8f:f0:6b:e4:16:
|
||||||
|
70:dd:7f:f3:77:7d:b9:4e:f9:ec:c3:33:02:d7:e9:63:2f:31:
|
||||||
|
e7:40:61:a4
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDdzCCAl+gAwIBAgIBATANBgkqhkiG9w0BAQsFADBdMQ4wDAYDVQQKEwVJQ0FO
|
||||||
|
TjEmMCQGA1UECxMdSUNBTk4gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxFjAUBgNV
|
||||||
|
BAMTDUlDQU5OIFJvb3QgQ0ExCzAJBgNVBAYTAlVTMB4XDTA5MTIyMzA0MTkxMloX
|
||||||
|
DTI5MTIxODA0MTkxMlowXTEOMAwGA1UEChMFSUNBTk4xJjAkBgNVBAsTHUlDQU5O
|
||||||
|
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRYwFAYDVQQDEw1JQ0FOTiBSb290IENB
|
||||||
|
MQswCQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKDb
|
||||||
|
cLhPNNqc1NB+u+oVvOnJESofYS9qub0/PXagmgr37pNublVThIzyLPGCJ8gPms9S
|
||||||
|
G1TaKNIsMI7d+5IgMy3WyPEOECGIcfqEIktdR1YWfJufXcMReZwU4v/AdKzdOdfg
|
||||||
|
ONiwc6r70duEr1IiqPbVm5T05l1e6D+HkAvHGnf1LtOPGs4CHQdpIUcy2kauAEy2
|
||||||
|
paKcOcHASvbTHK7TbbvHGPB+7faAztABLoneErruEcumetcNfPMIjXKdv1V1E3C7
|
||||||
|
MSJKy+jAqqQJqjZoQGB0necZgUMiUv7JK1IPQRM2CXJllcyJrm9WFxY0c1KjBO29
|
||||||
|
iIKK69fcglKcBuFShUECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
|
||||||
|
Af8EBAMCAf4wHQYDVR0OBBYEFLpS6UmDJIZSL8eZzfyNa2kITcBQMA0GCSqGSIb3
|
||||||
|
DQEBCwUAA4IBAQAP8emCogqHny2UYFqywEuhLys7R9UKmYY4suzGO4nkbgfPFMfH
|
||||||
|
6M+Zj6owwxlwueZt1j/IaCayoKU3QsrYYoDRolpILh+FPwx7wseUEV8ZKpWsoDoD
|
||||||
|
2JFbLg2cfB8u/OlE4RYmcxxFSmXBg0yQ8/IoQt/bxOcEEhhiQ168H2yE5rxJMt9h
|
||||||
|
15nu5JBSewrCkYqYYmaxyOC3WrVGfHZxVI7MpIFcGdvSb2a1uyuua8l0BKgk3ujF
|
||||||
|
0/wsHNeP22qNyVO+XVBzrM8fk8BSUFuiT/6tZTYXRtEt5aKQZgXbKU5dUF3jT9qg
|
||||||
|
j/Br5BZw3X/zd325TvnswzMC1+ljLzHnQGGk
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
Certificate:
|
||||||
|
Data:
|
||||||
|
Version: 3 (0x2)
|
||||||
|
Serial Number: 11 (0xb)
|
||||||
|
Signature Algorithm: sha256WithRSAEncryption
|
||||||
|
Issuer: O=ICANN, OU=ICANN Certification Authority, CN=ICANN Root CA, C=US
|
||||||
|
Validity
|
||||||
|
Not Before: Nov 8 23:39:47 2016 GMT
|
||||||
|
Not After : Nov 6 23:39:47 2026 GMT
|
||||||
|
Subject: O=ICANN, CN=ICANN EMAIL CA
|
||||||
|
Subject Public Key Info:
|
||||||
|
Public Key Algorithm: rsaEncryption
|
||||||
|
RSA Public Key: (2048 bit)
|
||||||
|
Modulus (2048 bit):
|
||||||
|
00:d2:19:1e:22:69:33:f6:a4:d2:76:c5:80:11:75:
|
||||||
|
8e:d0:e8:6f:bf:89:f8:2a:6a:da:8a:85:28:40:ba:
|
||||||
|
c5:23:5f:47:ed:72:e2:8e:d3:5c:c8:8a:3a:99:a9:
|
||||||
|
57:2c:0a:2b:22:f3:54:7b:8b:f7:8c:21:a2:50:01:
|
||||||
|
4f:8b:af:34:df:72:fc:78:31:d0:1d:eb:bc:9b:e6:
|
||||||
|
fa:c1:84:d0:05:07:8a:74:53:a5:60:9e:eb:75:9e:
|
||||||
|
a8:5d:32:c8:02:32:e4:bf:cb:97:9b:7a:fa:2c:f6:
|
||||||
|
6a:1d:b8:57:ad:e3:03:22:93:d0:f4:4f:a8:b8:01:
|
||||||
|
db:82:33:98:b6:87:ed:3d:67:40:00:27:2e:d5:95:
|
||||||
|
d2:ad:36:46:14:c6:17:79:65:7f:65:f3:88:80:65:
|
||||||
|
7c:22:67:08:23:3c:cf:a5:10:38:72:30:97:92:6f:
|
||||||
|
20:4a:ba:24:4c:4a:c8:4a:a5:dc:2a:44:a1:29:78:
|
||||||
|
b4:9f:fe:84:ff:27:5b:3a:72:ea:31:c1:ad:06:22:
|
||||||
|
d6:44:a0:4a:57:32:9c:f2:46:47:d0:89:6e:20:23:
|
||||||
|
2c:ea:b0:83:7e:c1:f3:ea:da:dd:e3:63:59:97:21:
|
||||||
|
fa:1b:11:39:27:cf:82:8b:56:15:d4:36:92:0c:a5:
|
||||||
|
7e:80:e0:18:c9:50:08:42:0a:df:97:3c:9c:b8:0a:
|
||||||
|
4d:b1
|
||||||
|
Exponent: 65537 (0x10001)
|
||||||
|
X509v3 extensions:
|
||||||
|
X509v3 Basic Constraints: critical
|
||||||
|
CA:TRUE
|
||||||
|
X509v3 Key Usage: critical
|
||||||
|
Certificate Sign, CRL Sign
|
||||||
|
X509v3 Authority Key Identifier:
|
||||||
|
keyid:BA:52:E9:49:83:24:86:52:2F:C7:99:CD:FC:8D:6B:69:08:4D:C0:50
|
||||||
|
|
||||||
|
X509v3 Subject Key Identifier:
|
||||||
|
7B:3F:BA:CE:A1:B3:A6:13:2E:5A:82:84:D4:D2:EA:A5:24:F1:CD:B4
|
||||||
|
Signature Algorithm: sha256WithRSAEncryption
|
||||||
|
0e:8a:c9:ea:6f:9c:e9:23:b6:9c:a6:a4:c2:d1:b1:ee:25:18:
|
||||||
|
24:2b:79:d4:a8:f2:99:b9:5c:91:4d:e6:2b:32:2e:01:f5:87:
|
||||||
|
95:64:fc:6d:f1:87:fa:24:b4:43:4b:49:f3:84:54:44:eb:af:
|
||||||
|
41:ab:49:ab:c8:b7:32:6c:14:83:5b:d7:2c:41:f9:89:d5:c4:
|
||||||
|
2b:9a:55:c5:b6:ad:17:d5:4d:bc:41:58:56:72:0d:db:b7:7d:
|
||||||
|
57:c6:a2:9c:7e:6b:67:ae:26:f8:26:45:bb:c4:95:2e:ea:71:
|
||||||
|
e3:b4:7a:69:95:a4:8a:80:f8:59:dc:88:6e:e1:a7:fc:bb:8e:
|
||||||
|
b2:aa:a8:b6:1b:2f:2c:97:a5:12:d5:82:ae:a0:e8:a6:15:fd:
|
||||||
|
d1:e0:5d:e4:84:b1:76:db:0a:e2:ca:58:2e:d3:df:48:4e:46:
|
||||||
|
ac:c6:35:79:17:99:ce:e9:be:2c:e4:c2:50:ff:5b:96:15:cd:
|
||||||
|
64:ac:1b:db:fe:d2:ac:43:61:c8:5f:ee:24:b6:a4:3b:d2:ff:
|
||||||
|
0a:f4:0c:88:58:a1:9d:a4:c1:1f:6a:6c:67:90:98:e8:1f:5e:
|
||||||
|
2d:55:60:91:26:2a:b1:66:80:e4:e6:0e:05:2c:75:a9:ca:0b:
|
||||||
|
e4:a0:8f:e1:47:a8:8f:61:5d:7c:ce:09:60:88:48:c3:46:bf:
|
||||||
|
be:7e:36:be
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDZDCCAkygAwIBAgIBCzANBgkqhkiG9w0BAQsFADBdMQ4wDAYDVQQKEwVJQ0FO
|
||||||
|
TjEmMCQGA1UECxMdSUNBTk4gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxFjAUBgNV
|
||||||
|
BAMTDUlDQU5OIFJvb3QgQ0ExCzAJBgNVBAYTAlVTMB4XDTE2MTEwODIzMzk0N1oX
|
||||||
|
DTI2MTEwNjIzMzk0N1owKTEOMAwGA1UEChMFSUNBTk4xFzAVBgNVBAMTDklDQU5O
|
||||||
|
IEVNQUlMIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0hkeImkz
|
||||||
|
9qTSdsWAEXWO0Ohvv4n4KmraioUoQLrFI19H7XLijtNcyIo6malXLAorIvNUe4v3
|
||||||
|
jCGiUAFPi68033L8eDHQHeu8m+b6wYTQBQeKdFOlYJ7rdZ6oXTLIAjLkv8uXm3r6
|
||||||
|
LPZqHbhXreMDIpPQ9E+ouAHbgjOYtoftPWdAACcu1ZXSrTZGFMYXeWV/ZfOIgGV8
|
||||||
|
ImcIIzzPpRA4cjCXkm8gSrokTErISqXcKkShKXi0n/6E/ydbOnLqMcGtBiLWRKBK
|
||||||
|
VzKc8kZH0IluICMs6rCDfsHz6trd42NZlyH6GxE5J8+Ci1YV1DaSDKV+gOAYyVAI
|
||||||
|
QgrflzycuApNsQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
|
||||||
|
AwIBBjAfBgNVHSMEGDAWgBS6UulJgySGUi/Hmc38jWtpCE3AUDAdBgNVHQ4EFgQU
|
||||||
|
ez+6zqGzphMuWoKE1NLqpSTxzbQwDQYJKoZIhvcNAQELBQADggEBAA6KyepvnOkj
|
||||||
|
tpympMLRse4lGCQredSo8pm5XJFN5isyLgH1h5Vk/G3xh/oktENLSfOEVETrr0Gr
|
||||||
|
SavItzJsFINb1yxB+YnVxCuaVcW2rRfVTbxBWFZyDdu3fVfGopx+a2euJvgmRbvE
|
||||||
|
lS7qceO0emmVpIqA+FnciG7hp/y7jrKqqLYbLyyXpRLVgq6g6KYV/dHgXeSEsXbb
|
||||||
|
CuLKWC7T30hORqzGNXkXmc7pvizkwlD/W5YVzWSsG9v+0qxDYchf7iS2pDvS/wr0
|
||||||
|
DIhYoZ2kwR9qbGeQmOgfXi1VYJEmKrFmgOTmDgUsdanKC+Sgj+FHqI9hXXzOCWCI
|
||||||
|
SMNGv75+Nr4=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
Certificate:
|
||||||
|
Data:
|
||||||
|
Version: 3 (0x2)
|
||||||
|
Serial Number: 10 (0xa)
|
||||||
|
Signature Algorithm: sha256WithRSAEncryption
|
||||||
|
Issuer: O=ICANN, OU=ICANN Certification Authority, CN=ICANN Root CA, C=US
|
||||||
|
Validity
|
||||||
|
Not Before: Nov 8 23:38:16 2016 GMT
|
||||||
|
Not After : Nov 6 23:38:16 2026 GMT
|
||||||
|
Subject: O=ICANN, CN=ICANN SSL CA
|
||||||
|
Subject Public Key Info:
|
||||||
|
Public Key Algorithm: rsaEncryption
|
||||||
|
RSA Public Key: (2048 bit)
|
||||||
|
Modulus (2048 bit):
|
||||||
|
00:dd:c6:ab:bf:7c:66:9d:b3:2b:96:00:14:c7:60:
|
||||||
|
7a:8d:62:5b:26:4b:30:d7:b3:4c:82:69:c6:4d:4d:
|
||||||
|
73:f3:d4:91:21:5d:ab:35:f0:c8:04:0e:f4:a3:35:
|
||||||
|
e2:e1:18:a9:98:12:03:58:f8:9f:eb:77:54:5b:89:
|
||||||
|
81:26:c9:aa:c2:f4:c9:0c:82:57:2a:5e:05:e9:61:
|
||||||
|
17:cc:19:18:71:eb:35:83:c1:86:9d:ec:f1:6b:ca:
|
||||||
|
dd:a1:96:0b:95:d4:e1:0f:9e:24:6f:dc:3c:d0:28:
|
||||||
|
9e:f2:53:47:2b:a1:ad:32:03:c8:3f:0d:80:80:7d:
|
||||||
|
f0:02:d2:6e:5a:2c:44:21:9b:09:50:15:3f:a1:3d:
|
||||||
|
d3:c9:c8:24:e7:ea:4e:92:2f:94:90:2e:de:e7:68:
|
||||||
|
f6:c6:b3:90:1f:bc:c9:7b:a2:65:d7:11:e9:8b:f0:
|
||||||
|
3a:5a:b7:17:07:df:69:e3:6e:b9:54:6a:8e:3a:aa:
|
||||||
|
94:7f:2c:0a:a1:ad:ba:b7:d9:60:62:27:a7:71:40:
|
||||||
|
3b:8e:b0:84:7b:b8:c8:67:ef:66:ba:3d:ac:c3:85:
|
||||||
|
e5:86:bb:a7:9c:fd:b6:e1:c0:10:53:3d:d4:7e:1b:
|
||||||
|
09:e6:9f:22:5c:a7:27:09:7e:27:12:33:fa:df:9b:
|
||||||
|
20:2f:14:f7:17:c0:e4:1e:07:91:1f:f9:9a:cd:a8:
|
||||||
|
e2:c5
|
||||||
|
Exponent: 65537 (0x10001)
|
||||||
|
X509v3 extensions:
|
||||||
|
X509v3 Basic Constraints: critical
|
||||||
|
CA:TRUE
|
||||||
|
X509v3 Key Usage: critical
|
||||||
|
Certificate Sign, CRL Sign
|
||||||
|
X509v3 Authority Key Identifier:
|
||||||
|
keyid:BA:52:E9:49:83:24:86:52:2F:C7:99:CD:FC:8D:6B:69:08:4D:C0:50
|
||||||
|
|
||||||
|
X509v3 Subject Key Identifier:
|
||||||
|
6E:77:A8:40:10:4A:D8:9C:0C:F2:B7:5A:3A:A5:2F:79:4A:61:14:D8
|
||||||
|
Signature Algorithm: sha256WithRSAEncryption
|
||||||
|
47:46:4f:c7:5f:46:e3:d1:dc:fc:2b:f8:fc:65:ce:36:b1:f4:
|
||||||
|
5f:ee:14:75:a3:d9:5f:de:75:4b:fa:7b:88:9f:10:8c:2e:97:
|
||||||
|
cc:35:1b:ce:24:d3:36:60:95:d5:ae:11:b6:3f:8b:f4:12:69:
|
||||||
|
85:b5:3b:2a:b6:ab:7a:81:85:c2:55:57:ed:d0:b5:e7:4f:54:
|
||||||
|
37:51:24:c9:d5:07:3a:ef:b6:c5:1a:3e:14:29:a7:a6:f8:08:
|
||||||
|
2a:0b:26:79:f9:62:85:4a:e5:ea:90:ca:71:38:16:91:4e:7e:
|
||||||
|
fd:e3:b3:f3:55:8f:5a:d0:86:cf:33:94:88:f1:90:99:cb:81:
|
||||||
|
e2:81:92:68:2f:c3:61:d5:52:8d:e6:9a:5b:00:83:42:27:88:
|
||||||
|
f6:d9:fa:d1:bc:bb:b0:bc:b5:14:0b:4e:1a:54:ef:fa:d6:9d:
|
||||||
|
c4:0c:fc:ed:15:ab:21:4b:45:b5:d9:3b:ed:3c:d5:1e:2e:7a:
|
||||||
|
83:6f:24:45:d4:4c:b4:ef:60:43:18:d0:84:5d:16:7b:f5:50:
|
||||||
|
80:b1:a9:c2:8f:3b:c8:90:08:fd:aa:17:13:19:38:19:d1:8e:
|
||||||
|
85:7c:1e:57:16:8c:f9:8a:e8:29:25:38:cd:bb:55:8e:4a:6a:
|
||||||
|
6f:e5:7d:fc:d7:55:d6:ae:38:07:96:c1:97:ff:e5:2b:4f:99:
|
||||||
|
2d:70:f2:08
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDYjCCAkqgAwIBAgIBCjANBgkqhkiG9w0BAQsFADBdMQ4wDAYDVQQKEwVJQ0FO
|
||||||
|
TjEmMCQGA1UECxMdSUNBTk4gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxFjAUBgNV
|
||||||
|
BAMTDUlDQU5OIFJvb3QgQ0ExCzAJBgNVBAYTAlVTMB4XDTE2MTEwODIzMzgxNloX
|
||||||
|
DTI2MTEwNjIzMzgxNlowJzEOMAwGA1UEChMFSUNBTk4xFTATBgNVBAMTDElDQU5O
|
||||||
|
IFNTTCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN3Gq798Zp2z
|
||||||
|
K5YAFMdgeo1iWyZLMNezTIJpxk1Nc/PUkSFdqzXwyAQO9KM14uEYqZgSA1j4n+t3
|
||||||
|
VFuJgSbJqsL0yQyCVypeBelhF8wZGHHrNYPBhp3s8WvK3aGWC5XU4Q+eJG/cPNAo
|
||||||
|
nvJTRyuhrTIDyD8NgIB98ALSblosRCGbCVAVP6E908nIJOfqTpIvlJAu3udo9saz
|
||||||
|
kB+8yXuiZdcR6YvwOlq3FwffaeNuuVRqjjqqlH8sCqGturfZYGInp3FAO46whHu4
|
||||||
|
yGfvZro9rMOF5Ya7p5z9tuHAEFM91H4bCeafIlynJwl+JxIz+t+bIC8U9xfA5B4H
|
||||||
|
kR/5ms2o4sUCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
||||||
|
AQYwHwYDVR0jBBgwFoAUulLpSYMkhlIvx5nN/I1raQhNwFAwHQYDVR0OBBYEFG53
|
||||||
|
qEAQSticDPK3WjqlL3lKYRTYMA0GCSqGSIb3DQEBCwUAA4IBAQBHRk/HX0bj0dz8
|
||||||
|
K/j8Zc42sfRf7hR1o9lf3nVL+nuInxCMLpfMNRvOJNM2YJXVrhG2P4v0EmmFtTsq
|
||||||
|
tqt6gYXCVVft0LXnT1Q3USTJ1Qc677bFGj4UKaem+AgqCyZ5+WKFSuXqkMpxOBaR
|
||||||
|
Tn7947PzVY9a0IbPM5SI8ZCZy4HigZJoL8Nh1VKN5ppbAINCJ4j22frRvLuwvLUU
|
||||||
|
C04aVO/61p3EDPztFashS0W12TvtPNUeLnqDbyRF1Ey072BDGNCEXRZ79VCAsanC
|
||||||
|
jzvIkAj9qhcTGTgZ0Y6FfB5XFoz5iugpJTjNu1WOSmpv5X3811XWrjgHlsGX/+Ur
|
||||||
|
T5ktcPII
|
||||||
|
-----END CERTIFICATE-----
|
1
SOURCES/root.anchor
Normal file
1
SOURCES/root.anchor
Normal file
@ -0,0 +1 @@
|
|||||||
|
. 172800 IN DNSKEY 257 3 8 AwEAAaz/tAm8yTn4Mfeh5eyI96WSVexTBAvkMgJzkKTOiW1vkIbzxeF3+/4RgWOq7HrxRixHlFlExOLAJr5emLvN7SWXgnLh4+B5xQlNVz8Og8kvArMtNROxVQuCaSnIDdD5LKyWbRd2n9WGe2R8PzgCmr3EgVLrjyBxWezF0jLHwVN8efS3rCj/EWgvIWgb9tarpVUDK/b58Da+sqqls3eNbuv7pr+eoZG+SrDK6nWeL3c6H5Apxz7LjVc1uTIdsIXxuOLYA4/ilBmSVIzuDWfdRUfhHdY6+cn8HFRm+2hM8AnXGXws9555KrUB5qihylGa8subX2Nn6UwNR1AkUTV74bU= ;{id = 20326 (ksk), size = 2048b}
|
6
SOURCES/root.key
Normal file
6
SOURCES/root.key
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
; // The root key in bind format. This can be read by most tools, including
|
||||||
|
; // named, unbound, et. For libunbound, use ub_ctx_trustedkeys() to load this
|
||||||
|
trusted-keys {
|
||||||
|
"." 257 3 8 "AwEAAaz/tAm8yTn4Mfeh5eyI96WSVexTBAvkMgJzkKTOiW1vkIbzxeF3+/4RgWOq7HrxRixHlFlExOLAJr5emLvN7SWXgnLh4+B5xQlNVz8Og8kvArMtNROxVQuCaSnIDdD5LKyWbRd2n9WGe2R8PzgCmr3EgVLrjyBxWezF0jLHwVN8efS3rCj/EWgvIWgb9tarpVUDK/b58Da+sqqls3eNbuv7pr+eoZG+SrDK6nWeL3c6H5Apxz7LjVc1uTIdsIXxuOLYA4/ilBmSVIzuDWfdRUfhHdY6+cn8HFRm+2hM8AnXGXws9555KrUB5qihylGa8subX2Nn6UwNR1AkUTV74bU="; // key id = 20326
|
||||||
|
|
||||||
|
};
|
1
SOURCES/tmpfiles-unbound.conf
Normal file
1
SOURCES/tmpfiles-unbound.conf
Normal file
@ -0,0 +1 @@
|
|||||||
|
D /run/unbound 0755 unbound unbound -
|
204
SOURCES/unbound-1.13.1-rh1952814.patch
Normal file
204
SOURCES/unbound-1.13.1-rh1952814.patch
Normal file
@ -0,0 +1,204 @@
|
|||||||
|
diff --git a/config.h.in b/config.h.in
|
||||||
|
index 103ad9f..0bb29d9 100644
|
||||||
|
--- a/config.h.in
|
||||||
|
+++ b/config.h.in
|
||||||
|
@@ -847,6 +847,14 @@
|
||||||
|
/* Define if you enable libevent */
|
||||||
|
#undef USE_LIBEVENT
|
||||||
|
|
||||||
|
+/* WARNING! This is only for the libunbound on Linux and does not affect
|
||||||
|
+ unbound resolving daemon itself. This may severely limit the number of
|
||||||
|
+ available outgoing ports and thus decrease randomness. Define this only
|
||||||
|
+ when the target system restricts (e.g. some of SELinux enabled
|
||||||
|
+ distributions) the use of non-ephemeral ports. Define this to enable use of
|
||||||
|
+ /proc/sys/net/ipv4/ip_local_port_range as a default outgoing port range. */
|
||||||
|
+#undef USE_LINUX_IP_LOCAL_PORT_RANGE
|
||||||
|
+
|
||||||
|
/* Define if you want to use internal select based events */
|
||||||
|
#undef USE_MINI_EVENT
|
||||||
|
|
||||||
|
diff --git a/configure b/configure
|
||||||
|
index c91e8a3..826dce9 100755
|
||||||
|
--- a/configure
|
||||||
|
+++ b/configure
|
||||||
|
@@ -898,6 +898,7 @@ enable_ipsecmod
|
||||||
|
enable_ipset
|
||||||
|
with_libmnl
|
||||||
|
enable_explicit_port_randomisation
|
||||||
|
+enable_linux_ip_local_port_range
|
||||||
|
with_libunbound_only
|
||||||
|
'
|
||||||
|
ac_precious_vars='build_alias
|
||||||
|
@@ -1590,6 +1591,16 @@ Optional Features:
|
||||||
|
--disable-explicit-port-randomisation
|
||||||
|
disable explicit source port randomisation and rely
|
||||||
|
on the kernel to provide random source ports
|
||||||
|
+ --enable-linux-ip-local-port-range
|
||||||
|
+ WARNING! This is only for the libunbound on Linux
|
||||||
|
+ and does not affect unbound resolving daemon itself.
|
||||||
|
+ This may severely limit the number of available
|
||||||
|
+ outgoing ports and thus decrease randomness. Use
|
||||||
|
+ this option only when the target system restricts
|
||||||
|
+ the use of non-ephemeral ports. (e.g. some of
|
||||||
|
+ SELinux enabled distributions) Enable this option to
|
||||||
|
+ use /proc/sys/net/ipv4/ip_local_port_range as a
|
||||||
|
+ default outgoing port range
|
||||||
|
|
||||||
|
Optional Packages:
|
||||||
|
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
||||||
|
@@ -4202,6 +4213,13 @@ else
|
||||||
|
else on_mingw="no"; fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
+# are we on Linux?
|
||||||
|
+if uname -s 2>&1 | grep -i linux >/dev/null; then on_linux="yes"
|
||||||
|
+else
|
||||||
|
+ if echo $host $target | grep linux >/dev/null; then on_linux="yes"
|
||||||
|
+ else on_linux="no"; fi
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
#
|
||||||
|
# Determine configuration file
|
||||||
|
# the eval is to evaluate shell expansion twice
|
||||||
|
@@ -21588,6 +21606,23 @@ $as_echo "#define DISABLE_EXPLICIT_PORT_RANDOMISATION 1" >>confdefs.h
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
+if test $on_linux = "yes"; then
|
||||||
|
+ # Check whether --enable-linux-ip-local-port-range was given.
|
||||||
|
+if test "${enable_linux_ip_local_port_range+set}" = set; then :
|
||||||
|
+ enableval=$enable_linux_ip_local_port_range;
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
+ case "$enable_linux_ip_local_port_range" in
|
||||||
|
+ yes)
|
||||||
|
+
|
||||||
|
+$as_echo "#define USE_LINUX_IP_LOCAL_PORT_RANGE 1" >>confdefs.h
|
||||||
|
+
|
||||||
|
+ ;;
|
||||||
|
+ no|*)
|
||||||
|
+ ;;
|
||||||
|
+ esac
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if ${MAKE:-make} supports $< with implicit rule in scope" >&5
|
||||||
|
$as_echo_n "checking if ${MAKE:-make} supports $< with implicit rule in scope... " >&6; }
|
||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index 2d88048..1207047 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -152,6 +152,13 @@ else
|
||||||
|
else on_mingw="no"; fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
+# are we on Linux?
|
||||||
|
+if uname -s 2>&1 | grep -i linux >/dev/null; then on_linux="yes"
|
||||||
|
+else
|
||||||
|
+ if echo $host $target | grep linux >/dev/null; then on_linux="yes"
|
||||||
|
+ else on_linux="no"; fi
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
#
|
||||||
|
# Determine configuration file
|
||||||
|
# the eval is to evaluate shell expansion twice
|
||||||
|
@@ -1847,6 +1854,17 @@ case "$enable_explicit_port_randomisation" in
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
+if test $on_linux = "yes"; then
|
||||||
|
+ AC_ARG_ENABLE(linux-ip-local-port-range, AC_HELP_STRING([--enable-linux-ip-local-port-range], [WARNING! This is only for the libunbound on Linux and does not affect unbound resolving daemon itself. This may severely limit the number of available outgoing ports and thus decrease randomness. Use this option only when the target system restricts the use of non-ephemeral ports. (e.g. some of SELinux enabled distributions) Enable this option to use /proc/sys/net/ipv4/ip_local_port_range as a default outgoing port range]))
|
||||||
|
+ case "$enable_linux_ip_local_port_range" in
|
||||||
|
+ yes)
|
||||||
|
+ AC_DEFINE([USE_LINUX_IP_LOCAL_PORT_RANGE], [1], [WARNING! This is only for the libunbound on Linux and does not affect unbound resolving daemon itself. This may severely limit the number of available outgoing ports and thus decrease randomness. Define this only when the target system restricts (e.g. some of SELinux enabled distributions) the use of non-ephemeral ports. Define this to enable use of /proc/sys/net/ipv4/ip_local_port_range as a default outgoing port range.])
|
||||||
|
+ ;;
|
||||||
|
+ no|*)
|
||||||
|
+ ;;
|
||||||
|
+ esac
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([if ${MAKE:-make} supports $< with implicit rule in scope])
|
||||||
|
# on openBSD, the implicit rule make $< work.
|
||||||
|
diff --git a/libunbound/context.c b/libunbound/context.c
|
||||||
|
index cff2831..48d76d9 100644
|
||||||
|
--- a/libunbound/context.c
|
||||||
|
+++ b/libunbound/context.c
|
||||||
|
@@ -69,6 +69,7 @@ context_finalize(struct ub_ctx* ctx)
|
||||||
|
} else {
|
||||||
|
log_init(cfg->logfile, cfg->use_syslog, NULL);
|
||||||
|
}
|
||||||
|
+ cfg_apply_local_port_policy(cfg, 65536);
|
||||||
|
config_apply(cfg);
|
||||||
|
if(!modstack_setup(&ctx->mods, cfg->module_conf, ctx->env))
|
||||||
|
return UB_INITFAIL;
|
||||||
|
diff --git a/util/config_file.c b/util/config_file.c
|
||||||
|
index 4d87dee..6b90e48 100644
|
||||||
|
--- a/util/config_file.c
|
||||||
|
+++ b/util/config_file.c
|
||||||
|
@@ -1681,6 +1681,37 @@ int cfg_condense_ports(struct config_file* cfg, int** avail)
|
||||||
|
return num;
|
||||||
|
}
|
||||||
|
|
||||||
|
+void cfg_apply_local_port_policy(struct config_file* cfg, int num) {
|
||||||
|
+(void)cfg;
|
||||||
|
+(void)num;
|
||||||
|
+#ifdef USE_LINUX_IP_LOCAL_PORT_RANGE
|
||||||
|
+ {
|
||||||
|
+ int i = 0;
|
||||||
|
+ FILE* range_fd;
|
||||||
|
+ if ((range_fd = fopen(LINUX_IP_LOCAL_PORT_RANGE_PATH, "r")) != NULL) {
|
||||||
|
+ int min_port = 0;
|
||||||
|
+ int max_port = num - 1;
|
||||||
|
+ if (fscanf(range_fd, "%d %d", &min_port, &max_port) == 2) {
|
||||||
|
+ for(i=0; i<min_port; i++) {
|
||||||
|
+ cfg->outgoing_avail_ports[i] = 0;
|
||||||
|
+ }
|
||||||
|
+ for(i=max_port+1; i<num; i++) {
|
||||||
|
+ cfg->outgoing_avail_ports[i] = 0;
|
||||||
|
+ }
|
||||||
|
+ } else {
|
||||||
|
+ log_err("unexpected port range in %s",
|
||||||
|
+ LINUX_IP_LOCAL_PORT_RANGE_PATH);
|
||||||
|
+ }
|
||||||
|
+ fclose(range_fd);
|
||||||
|
+ } else {
|
||||||
|
+ log_warn("failed to read from file: %s (%s)",
|
||||||
|
+ LINUX_IP_LOCAL_PORT_RANGE_PATH,
|
||||||
|
+ strerror(errno));
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/** print error with file and line number */
|
||||||
|
static void ub_c_error_va_list(const char *fmt, va_list args)
|
||||||
|
{
|
||||||
|
diff --git a/util/config_file.h b/util/config_file.h
|
||||||
|
index 7cf27cc..d091ef7 100644
|
||||||
|
--- a/util/config_file.h
|
||||||
|
+++ b/util/config_file.h
|
||||||
|
@@ -1172,6 +1172,13 @@ int cfg_mark_ports(const char* str, int allow, int* avail, int num);
|
||||||
|
*/
|
||||||
|
int cfg_condense_ports(struct config_file* cfg, int** avail);
|
||||||
|
|
||||||
|
+/**
|
||||||
|
+ * Apply system specific port range policy.
|
||||||
|
+ * @param cfg: config file.
|
||||||
|
+ * @param num: size of the array (65536).
|
||||||
|
+ */
|
||||||
|
+void cfg_apply_local_port_policy(struct config_file* cfg, int num);
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Scan ports available
|
||||||
|
* @param avail: the array from cfg.
|
||||||
|
@@ -1301,5 +1308,9 @@ void w_config_adjust_directory(struct config_file* cfg);
|
||||||
|
/** debug option for unit tests. */
|
||||||
|
extern int fake_dsa, fake_sha1;
|
||||||
|
|
||||||
|
+#ifdef USE_LINUX_IP_LOCAL_PORT_RANGE
|
||||||
|
+#define LINUX_IP_LOCAL_PORT_RANGE_PATH "/proc/sys/net/ipv4/ip_local_port_range"
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#endif /* UTIL_CONFIG_FILE_H */
|
||||||
|
|
12
SOURCES/unbound-1.13.1-rh1977400.patch
Normal file
12
SOURCES/unbound-1.13.1-rh1977400.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff --git a/util/net_help.c b/util/net_help.c
|
||||||
|
index 3b5527a..42a7666 100644
|
||||||
|
--- a/util/net_help.c
|
||||||
|
+++ b/util/net_help.c
|
||||||
|
@@ -1172,6 +1172,7 @@ void* connect_sslctx_create(char* key, char* pem, char* verifypem, int wincert)
|
||||||
|
if((SSL_CTX_set_options(ctx, SSL_OP_NO_RENEGOTIATION) &
|
||||||
|
SSL_OP_NO_RENEGOTIATION) != SSL_OP_NO_RENEGOTIATION) {
|
||||||
|
log_crypto_err("could not set SSL_OP_NO_RENEGOTIATION");
|
||||||
|
+ SSL_CTX_free(ctx);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
19
SOURCES/unbound-1.13.1-rh1977401.patch
Normal file
19
SOURCES/unbound-1.13.1-rh1977401.patch
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
diff --git a/dns64/dns64.c b/dns64/dns64.c
|
||||||
|
index c79bc9c..fddbc62 100644
|
||||||
|
--- a/dns64/dns64.c
|
||||||
|
+++ b/dns64/dns64.c
|
||||||
|
@@ -685,8 +685,12 @@ dns64_operate(struct module_qstate* qstate, enum module_ev event, int id,
|
||||||
|
switch(event) {
|
||||||
|
case module_event_new:
|
||||||
|
/* Tag this query as being new and fall through. */
|
||||||
|
- iq = (struct dns64_qstate*)regional_alloc(
|
||||||
|
- qstate->region, sizeof(*iq));
|
||||||
|
+ if (!(iq = (struct dns64_qstate*)regional_alloc(
|
||||||
|
+ qstate->region, sizeof(*iq)))) {
|
||||||
|
+ log_err("out of memory");
|
||||||
|
+ qstate->ext_state[id] = module_error;
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
qstate->minfo[id] = iq;
|
||||||
|
iq->state = DNS64_NEW_QUERY;
|
||||||
|
iq->started_no_cache_store = qstate->no_cache_store;
|
15
SOURCES/unbound-1.13.1-rh1991005.patch
Normal file
15
SOURCES/unbound-1.13.1-rh1991005.patch
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c
|
||||||
|
index d58f1b2..5bfe15b 100644
|
||||||
|
--- a/smallapp/unbound-control.c
|
||||||
|
+++ b/smallapp/unbound-control.c
|
||||||
|
@@ -492,9 +492,7 @@ static void ssl_path_err(const char* s, const char *path)
|
||||||
|
{
|
||||||
|
unsigned long err;
|
||||||
|
err = ERR_peek_error();
|
||||||
|
- if (ERR_GET_LIB(err) == ERR_LIB_SYS &&
|
||||||
|
- (ERR_GET_FUNC(err) == SYS_F_FOPEN ||
|
||||||
|
- ERR_GET_FUNC(err) == SYS_F_FREAD) ) {
|
||||||
|
+ if (ERR_GET_LIB(err) == ERR_LIB_SYS) {
|
||||||
|
fprintf(stderr, "error: %s\n%s: %s\n",
|
||||||
|
s, path, ERR_reason_error_string(err));
|
||||||
|
exit(1);
|
16
SOURCES/unbound-1.13.1.tar.gz.asc
Normal file
16
SOURCES/unbound-1.13.1.tar.gz.asc
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQIzBAABCAAdFiEE7fqj8spObrBWga+On28cLX4EX40FAmAiOawACgkQn28cLX4E
|
||||||
|
X40R5A//ex9Fe0bR/JQNcpXAFMZ8Wvj7KOW+2VhUsPqVL8s3Iew/hlIqlmP4/dIG
|
||||||
|
htygqy8I1VbyIQIJ7HSkQderPLMjyDw7+K7fCNhzzPZO+OMAiXsSslvKXrCBClGI
|
||||||
|
1MOAPsKpfV9C9yf4w8t5orvvxHlw21Vqnh9LTcAQekw1+NhCUw3uiLuIkyU4RLS8
|
||||||
|
LYdlWOuVhOe6cmR4XTZPGR8zlMZ7Owzgi+o3+g1Gknsr09B28ttJe9LuOg3jHp6I
|
||||||
|
LKRpROGZs+8iqYylb85mfEIwRO1lpj+k9D4A+CnJyhY9nUP4k9b/Ywe6qS16yWAs
|
||||||
|
s8mzZtAjAgrRCsM+C6hwVo0I2P9mVVy9WfFHNt1Mp4P4XdPbSc2CXLfyBfNkx1ty
|
||||||
|
kMnGBiehHC9oZ4QAwTnJ/Bevi0C5OlRt9BIVwvA0ymWGOOHXE4i2SxhUWMEx399s
|
||||||
|
2Uqpr3mBd0ZO0HRvKNOY14vF/O1ja+oNTPvnMJyzZKUeTRRHaKF1dr3fNrXlACtE
|
||||||
|
GgHihHGaVSM1PA5z4S5Jo6PuZqwn+QBCUYhjFjlsF5d6h8srksxJAnh4GbPRJiUl
|
||||||
|
AJEUSCQFOk6dJmrWVLDa+MP003T5DfouJzQX5WZr+M5fNVD1xhZs49Ea4ATSZPrw
|
||||||
|
SM+/n+G/UlFue89qqvCrTMErNBXKINRZlir7yIi4UsEiyDUal2E=
|
||||||
|
=n/aJ
|
||||||
|
-----END PGP SIGNATURE-----
|
9
SOURCES/unbound-anchor.service
Normal file
9
SOURCES/unbound-anchor.service
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=update of the root trust anchor for DNSSEC validation in unbound
|
||||||
|
Documentation=man:unbound-anchor(8)
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
User=unbound
|
||||||
|
ExecStart=/usr/sbin/unbound-anchor -a /var/lib/unbound/root.key -c /etc/unbound/icannbundle.pem -f /etc/resolv.conf -R
|
||||||
|
SuccessExitStatus=1
|
14
SOURCES/unbound-anchor.timer
Normal file
14
SOURCES/unbound-anchor.timer
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=daily update of the root trust anchor for DNSSEC
|
||||||
|
Documentation=man:unbound-anchor(8)
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
# Current DNSKEY TTL in root zone is 172800 seconds, i.e. 172800/60/60/24 = 2 days.
|
||||||
|
# It means that unboud-anchor should be run at least once a day.
|
||||||
|
OnCalendar=daily
|
||||||
|
Persistent=true
|
||||||
|
AccuracySec=24h
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
||||||
|
|
19
SOURCES/unbound-keygen.service
Normal file
19
SOURCES/unbound-keygen.service
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Unbound Control Key And Certificate Generator
|
||||||
|
After=syslog.target
|
||||||
|
Before=unbound.service
|
||||||
|
ConditionPathExists=|!/etc/unbound/unbound_control.pem
|
||||||
|
ConditionPathExists=|!/etc/unbound/unbound_control.key
|
||||||
|
ConditionPathExists=|!/etc/unbound/unbound_server.pem
|
||||||
|
ConditionPathExists=|!/etc/unbound/unbound_server.key
|
||||||
|
PartOf=unbound.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
Group=unbound
|
||||||
|
ExecStart=/usr/sbin/unbound-control-setup -d /etc/unbound/
|
||||||
|
ExecStart=/sbin/restorecon /etc/unbound/*
|
||||||
|
RemainAfterExit=yes
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
5
SOURCES/unbound-munin.README
Normal file
5
SOURCES/unbound-munin.README
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
To activate the munin plugins, run (as root):
|
||||||
|
|
||||||
|
cd /etc/munin/plugins
|
||||||
|
for i in /usr/share/munin/plugins/unbound_*; do ln -s $i; done
|
1184
SOURCES/unbound.conf
Normal file
1184
SOURCES/unbound.conf
Normal file
File diff suppressed because it is too large
Load Diff
11
SOURCES/unbound.munin
Normal file
11
SOURCES/unbound.munin
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#
|
||||||
|
# For this plugin to work, unbound.conf needs to have:
|
||||||
|
# remote-control: control-enable: yes
|
||||||
|
#
|
||||||
|
[unbound*]
|
||||||
|
user root
|
||||||
|
env.statefile /var/lib/munin/plugin-state/unbound-state
|
||||||
|
env.unbound_conf /etc/unbound/unbound.conf
|
||||||
|
env.unbound_control /usr/sbin/unbound-control
|
||||||
|
env.spoof_warn 1000
|
||||||
|
env.spoof_crit 100000
|
19
SOURCES/unbound.service
Normal file
19
SOURCES/unbound.service
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Unbound recursive Domain Name Server
|
||||||
|
After=network.target
|
||||||
|
After=unbound-keygen.service
|
||||||
|
Wants=unbound-keygen.service
|
||||||
|
Wants=unbound-anchor.timer
|
||||||
|
Before=nss-lookup.target
|
||||||
|
Wants=nss-lookup.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
EnvironmentFile=-/etc/sysconfig/unbound
|
||||||
|
ExecStartPre=/usr/sbin/unbound-checkconf
|
||||||
|
ExecStartPre=/bin/bash -c 'if [ ! "$DISABLE_UNBOUND_ANCHOR" == "yes" ]; then /usr/sbin/unbound-anchor -a /var/lib/unbound/root.key -c /etc/unbound/icannbundle.pem -f /etc/resolv.conf -R; else echo "Updates of root keys with unbound-anchor is disabled"; fi'
|
||||||
|
ExecStart=/usr/sbin/unbound -d $UNBOUND_OPTIONS
|
||||||
|
ExecReload=/usr/sbin/unbound-control reload
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
3
SOURCES/unbound.sysconfig
Normal file
3
SOURCES/unbound.sysconfig
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# for extra debug, add "-v -v" or change verbosity: in unbound.conf
|
||||||
|
|
||||||
|
UNBOUND_OPTIONS=""
|
553
SOURCES/unbound_munin_
Normal file
553
SOURCES/unbound_munin_
Normal file
@ -0,0 +1,553 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# plugin for munin to monitor usage of unbound servers.
|
||||||
|
#
|
||||||
|
# (C) 2008 W.C.A. Wijngaards. BSD Licensed.
|
||||||
|
#
|
||||||
|
# To install; enable statistics and unbound-control in unbound.conf
|
||||||
|
# server: extended-statistics: yes
|
||||||
|
# statistics-cumulative: no
|
||||||
|
# statistics-interval: 0
|
||||||
|
# remote-control: control-enable: yes
|
||||||
|
# Run the command unbound-control-setup to generate the key files.
|
||||||
|
#
|
||||||
|
# Environment variables for this script
|
||||||
|
# statefile - where to put temporary statefile.
|
||||||
|
# unbound_conf - where the unbound.conf file is located.
|
||||||
|
# unbound_control - where to find unbound-control executable.
|
||||||
|
# spoof_warn - what level to warn about spoofing
|
||||||
|
# spoof_crit - what level to crit about spoofing
|
||||||
|
#
|
||||||
|
# You can set them in your munin/plugin-conf.d/plugins.conf file
|
||||||
|
# with:
|
||||||
|
# [unbound*]
|
||||||
|
# user root
|
||||||
|
# env.statefile /usr/local/var/munin/plugin-state/unbound-state
|
||||||
|
# env.unbound_conf /usr/local/etc/unbound/unbound.conf
|
||||||
|
# env.unbound_control /usr/local/sbin/unbound-control
|
||||||
|
# env.spoof_warn 1000
|
||||||
|
# env.spoof_crit 100000
|
||||||
|
#
|
||||||
|
# This plugin can create different graphs depending on what name
|
||||||
|
# you link it as (with ln -s) into the plugins directory
|
||||||
|
# You can link it multiple times.
|
||||||
|
# If you are only a casual user, the _hits and _by_type are most interesting,
|
||||||
|
# possibly followed by _by_rcode.
|
||||||
|
#
|
||||||
|
# unbound_munin_hits - base volume, cache hits, unwanted traffic
|
||||||
|
# unbound_munin_queue - to monitor the internal requestlist
|
||||||
|
# unbound_munin_memory - memory usage
|
||||||
|
# unbound_munin_by_type - incoming queries by type
|
||||||
|
# unbound_munin_by_class - incoming queries by class
|
||||||
|
# unbound_munin_by_opcode - incoming queries by opcode
|
||||||
|
# unbound_munin_by_rcode - answers by rcode, validation status
|
||||||
|
# unbound_munin_by_flags - incoming queries by flags
|
||||||
|
# unbound_munin_histogram - histogram of query resolving times
|
||||||
|
#
|
||||||
|
# Magic markers - optional - used by installation scripts and
|
||||||
|
# munin-config:
|
||||||
|
#
|
||||||
|
#%# family=contrib
|
||||||
|
#%# capabilities=autoconf suggest
|
||||||
|
|
||||||
|
# POD documentation
|
||||||
|
: <<=cut
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
unbound_munin_ - Munin plugin to monitor the Unbound DNS resolver.
|
||||||
|
|
||||||
|
=head1 APPLICABLE SYSTEMS
|
||||||
|
|
||||||
|
System with unbound daemon.
|
||||||
|
|
||||||
|
=head1 CONFIGURATION
|
||||||
|
|
||||||
|
[unbound*]
|
||||||
|
user root
|
||||||
|
env.statefile /var/lib/munin/plugin-state/unbound-state
|
||||||
|
env.unbound_conf /etc/unbound/unbound.conf
|
||||||
|
env.unbound_control /usr/sbin/unbound-control
|
||||||
|
env.spoof_warn 1000
|
||||||
|
env.spoof_crit 100000
|
||||||
|
|
||||||
|
Use the .env settings to override the defaults.
|
||||||
|
|
||||||
|
=head1 USAGE
|
||||||
|
|
||||||
|
Can be used to present different graphs. Use ln -s for that name in
|
||||||
|
the plugins directory to enable the graph.
|
||||||
|
unbound_munin_hits - base volume, cache hits, unwanted traffic
|
||||||
|
unbound_munin_queue - to monitor the internal requestlist
|
||||||
|
unbound_munin_memory - memory usage
|
||||||
|
unbound_munin_by_type - incoming queries by type
|
||||||
|
unbound_munin_by_class - incoming queries by class
|
||||||
|
unbound_munin_by_opcode - incoming queries by opcode
|
||||||
|
unbound_munin_by_rcode - answers by rcode, validation status
|
||||||
|
unbound_munin_by_flags - incoming queries by flags
|
||||||
|
unbound_munin_histogram - histogram of query resolving times
|
||||||
|
|
||||||
|
=head1 AUTHOR
|
||||||
|
|
||||||
|
Copyright 2008 W.C.A. Wijngaards
|
||||||
|
|
||||||
|
=head1 LICENSE
|
||||||
|
|
||||||
|
BSD
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
state=${statefile:-/var/lib/munin/plugin-state/unbound-state}
|
||||||
|
conf=${unbound_conf:-/etc/unbound/unbound.conf}
|
||||||
|
ctrl=${unbound_control:-/usr/sbin/unbound-control}
|
||||||
|
warn=${spoof_warn:-1000}
|
||||||
|
crit=${spoof_crit:-100000}
|
||||||
|
lock=$state.lock
|
||||||
|
|
||||||
|
# number of seconds between polling attempts.
|
||||||
|
# makes the statefile hang around for at least this many seconds,
|
||||||
|
# so that multiple links of this script can share the results.
|
||||||
|
lee=55
|
||||||
|
|
||||||
|
# to keep things within 19 characters
|
||||||
|
ABBREV="-e s/total/t/ -e s/thread/t/ -e s/num/n/ -e s/query/q/ -e s/answer/a/ -e s/unwanted/u/ -e s/requestlist/ql/ -e s/type/t/ -e s/class/c/ -e s/opcode/o/ -e s/rcode/r/ -e s/edns/e/ -e s/mem/m/ -e s/cache/c/ -e s/mod/m/"
|
||||||
|
|
||||||
|
# get value from $1 into return variable $value
|
||||||
|
get_value ( ) {
|
||||||
|
value="`grep '^'$1'=' $state | sed -e 's/^.*=//'`"
|
||||||
|
if test "$value"x = ""x; then
|
||||||
|
value="0"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# download the state from the unbound server.
|
||||||
|
get_state ( ) {
|
||||||
|
# obtain lock for fetching the state
|
||||||
|
# because there is a race condition in fetching and writing to file
|
||||||
|
|
||||||
|
# see if the lock is stale, if so, take it
|
||||||
|
if test -f $lock ; then
|
||||||
|
pid="`cat $lock 2>&1`"
|
||||||
|
kill -0 "$pid" >/dev/null 2>&1
|
||||||
|
if test $? -ne 0 -a "$pid" != $$ ; then
|
||||||
|
echo $$ >$lock
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
i=0
|
||||||
|
while test ! -f $lock || test "`cat $lock 2>&1`" != $$; do
|
||||||
|
while test -f $lock; do
|
||||||
|
# wait
|
||||||
|
i=`expr $i + 1`
|
||||||
|
if test $i -gt 1000; then
|
||||||
|
sleep 1;
|
||||||
|
fi
|
||||||
|
if test $i -gt 1500; then
|
||||||
|
echo "error locking $lock" "=" `cat $lock`
|
||||||
|
rm -f $lock
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# try to get it
|
||||||
|
echo $$ >$lock
|
||||||
|
done
|
||||||
|
# do not refetch if the file exists and only LEE seconds old
|
||||||
|
if test -f $state; then
|
||||||
|
now=`date +%s`
|
||||||
|
get_value "time.now"
|
||||||
|
value="`echo $value | sed -e 's/\..*$//'`"
|
||||||
|
if test $now -lt `expr $value + $lee`; then
|
||||||
|
rm -f $lock
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
$ctrl -c $conf stats > $state
|
||||||
|
if test $? -ne 0; then
|
||||||
|
echo "error retrieving data from unbound server"
|
||||||
|
rm -f $lock
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
rm -f $lock
|
||||||
|
}
|
||||||
|
|
||||||
|
if test "$1" = "autoconf" ; then
|
||||||
|
if test ! -f $conf; then
|
||||||
|
echo no "($conf does not exist)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if test ! -d `dirname $state`; then
|
||||||
|
echo no "($state directory does not exist)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo yes
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$1" = "suggest" ; then
|
||||||
|
echo "hits"
|
||||||
|
echo "queue"
|
||||||
|
echo "memory"
|
||||||
|
echo "by_type"
|
||||||
|
echo "by_class"
|
||||||
|
echo "by_opcode"
|
||||||
|
echo "by_rcode"
|
||||||
|
echo "by_flags"
|
||||||
|
echo "histogram"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# determine my type, by name
|
||||||
|
id=`echo $0 | sed -e 's/^.*unbound_munin_//'`
|
||||||
|
if test "$id"x = ""x; then
|
||||||
|
# some default to keep people sane.
|
||||||
|
id="hits"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# if $1 exists in statefile, config is echoed with label $2
|
||||||
|
exist_config ( ) {
|
||||||
|
mn=`echo $1 | sed $ABBREV | tr . _`
|
||||||
|
if grep '^'$1'=' $state >/dev/null 2>&1; then
|
||||||
|
echo "$mn.label $2"
|
||||||
|
echo "$mn.min 0"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# print label and min 0 for a name $1 in unbound format
|
||||||
|
p_config ( ) {
|
||||||
|
mn=`echo $1 | sed $ABBREV | tr . _`
|
||||||
|
echo $mn.label "$2"
|
||||||
|
echo $mn.min 0
|
||||||
|
}
|
||||||
|
|
||||||
|
if test "$1" = "config" ; then
|
||||||
|
if test ! -f $state; then
|
||||||
|
get_state
|
||||||
|
fi
|
||||||
|
case $id in
|
||||||
|
hits)
|
||||||
|
echo "graph_title Unbound DNS traffic and cache hits"
|
||||||
|
echo "graph_args --base 1000 -l 0"
|
||||||
|
echo "graph_vlabel queries / second"
|
||||||
|
echo "graph_category DNS"
|
||||||
|
for x in thread0.num.queries thread1.num.queries \
|
||||||
|
thread2.num.queries thread3.num.queries thread4.num.queries \
|
||||||
|
thread5.num.queries thread6.num.queries thread7.num.queries; do
|
||||||
|
exist_config $x "queries handled by `basename $x .num.queries`"
|
||||||
|
done
|
||||||
|
p_config "total.num.queries" "total queries from clients"
|
||||||
|
p_config "total.num.cachehits" "cache hits"
|
||||||
|
p_config "total.num.prefetch" "cache prefetch"
|
||||||
|
p_config "num.query.tcp" "TCP queries"
|
||||||
|
p_config "num.query.ipv6" "IPv6 queries"
|
||||||
|
p_config "unwanted.queries" "queries that failed acl"
|
||||||
|
p_config "unwanted.replies" "unwanted or unsolicited replies"
|
||||||
|
echo "u_replies.warning $warn"
|
||||||
|
echo "u_replies.critical $crit"
|
||||||
|
echo "graph_info DNS queries to the recursive resolver. The unwanted replies could be innocent duplicate packets, late replies, or spoof threats."
|
||||||
|
;;
|
||||||
|
queue)
|
||||||
|
echo "graph_title Unbound requestlist size"
|
||||||
|
echo "graph_args --base 1000 -l 0"
|
||||||
|
echo "graph_vlabel number of queries"
|
||||||
|
echo "graph_category DNS"
|
||||||
|
p_config "total.requestlist.avg" "Average size of queue on insert"
|
||||||
|
p_config "total.requestlist.max" "Max size of queue (in 5 min)"
|
||||||
|
p_config "total.requestlist.overwritten" "Number of queries replaced by new ones"
|
||||||
|
p_config "total.requestlist.exceeded" "Number of queries dropped due to lack of space"
|
||||||
|
echo "graph_info The queries that did not hit the cache and need recursion service take up space in the requestlist. If there are too many queries, first queries get overwritten, and at last resort dropped."
|
||||||
|
;;
|
||||||
|
memory)
|
||||||
|
echo "graph_title Unbound memory usage"
|
||||||
|
echo "graph_args --base 1024 -l 0"
|
||||||
|
echo "graph_vlabel memory used in bytes"
|
||||||
|
echo "graph_category DNS"
|
||||||
|
p_config "mem.total.sbrk" "Total memory"
|
||||||
|
p_config "mem.cache.rrset" "RRset cache memory"
|
||||||
|
p_config "mem.cache.message" "Message cache memory"
|
||||||
|
p_config "mem.mod.iterator" "Iterator module memory"
|
||||||
|
p_config "mem.mod.validator" "Validator module and key cache memory"
|
||||||
|
echo "graph_info The memory used by unbound."
|
||||||
|
;;
|
||||||
|
by_type)
|
||||||
|
echo "graph_title Unbound DNS queries by type"
|
||||||
|
echo "graph_args --base 1000 -l 0"
|
||||||
|
echo "graph_vlabel queries / second"
|
||||||
|
echo "graph_category DNS"
|
||||||
|
for x in `grep "^num.query.type" $state`; do
|
||||||
|
nm=`echo $x | sed -e 's/=.*$//'`
|
||||||
|
tp=`echo $nm | sed -e s/num.query.type.//`
|
||||||
|
p_config "$nm" "$tp"
|
||||||
|
done
|
||||||
|
echo "graph_info queries by DNS RR type queried for"
|
||||||
|
;;
|
||||||
|
by_class)
|
||||||
|
echo "graph_title Unbound DNS queries by class"
|
||||||
|
echo "graph_args --base 1000 -l 0"
|
||||||
|
echo "graph_vlabel queries / second"
|
||||||
|
echo "graph_category DNS"
|
||||||
|
for x in `grep "^num.query.class" $state`; do
|
||||||
|
nm=`echo $x | sed -e 's/=.*$//'`
|
||||||
|
tp=`echo $nm | sed -e s/num.query.class.//`
|
||||||
|
p_config "$nm" "$tp"
|
||||||
|
done
|
||||||
|
echo "graph_info queries by DNS RR class queried for."
|
||||||
|
;;
|
||||||
|
by_opcode)
|
||||||
|
echo "graph_title Unbound DNS queries by opcode"
|
||||||
|
echo "graph_args --base 1000 -l 0"
|
||||||
|
echo "graph_vlabel queries / second"
|
||||||
|
echo "graph_category DNS"
|
||||||
|
for x in `grep "^num.query.opcode" $state`; do
|
||||||
|
nm=`echo $x | sed -e 's/=.*$//'`
|
||||||
|
tp=`echo $nm | sed -e s/num.query.opcode.//`
|
||||||
|
p_config "$nm" "$tp"
|
||||||
|
done
|
||||||
|
echo "graph_info queries by opcode in the query packet."
|
||||||
|
;;
|
||||||
|
by_rcode)
|
||||||
|
echo "graph_title Unbound DNS answers by return code"
|
||||||
|
echo "graph_args --base 1000 -l 0"
|
||||||
|
echo "graph_vlabel answer packets / second"
|
||||||
|
echo "graph_category DNS"
|
||||||
|
for x in `grep "^num.answer.rcode" $state`; do
|
||||||
|
nm=`echo $x | sed -e 's/=.*$//'`
|
||||||
|
tp=`echo $nm | sed -e s/num.answer.rcode.//`
|
||||||
|
p_config "$nm" "$tp"
|
||||||
|
done
|
||||||
|
p_config "num.answer.secure" "answer secure"
|
||||||
|
p_config "num.answer.bogus" "answer bogus"
|
||||||
|
p_config "num.rrset.bogus" "num rrsets marked bogus"
|
||||||
|
echo "graph_info answers sorted by return value. rrsets bogus is the number of rrsets marked bogus per second by the validator"
|
||||||
|
;;
|
||||||
|
by_flags)
|
||||||
|
echo "graph_title Unbound DNS incoming queries by flags"
|
||||||
|
echo "graph_args --base 1000 -l 0"
|
||||||
|
echo "graph_vlabel queries / second"
|
||||||
|
echo "graph_category DNS"
|
||||||
|
p_config "num.query.flags.QR" "QR (query reply) flag"
|
||||||
|
p_config "num.query.flags.AA" "AA (auth answer) flag"
|
||||||
|
p_config "num.query.flags.TC" "TC (truncated) flag"
|
||||||
|
p_config "num.query.flags.RD" "RD (recursion desired) flag"
|
||||||
|
p_config "num.query.flags.RA" "RA (rec avail) flag"
|
||||||
|
p_config "num.query.flags.Z" "Z (zero) flag"
|
||||||
|
p_config "num.query.flags.AD" "AD (auth data) flag"
|
||||||
|
p_config "num.query.flags.CD" "CD (check disabled) flag"
|
||||||
|
p_config "num.query.edns.present" "EDNS OPT present"
|
||||||
|
p_config "num.query.edns.DO" "DO (DNSSEC OK) flag"
|
||||||
|
echo "graph_info This graphs plots the flags inside incoming queries. For example, if QR, AA, TC, RA, Z flags are set, the query can be rejected. RD, AD, CD and DO are legitimately set by some software."
|
||||||
|
;;
|
||||||
|
histogram)
|
||||||
|
echo "graph_title Unbound DNS histogram of reply time"
|
||||||
|
echo "graph_args --base 1000 -l 0"
|
||||||
|
echo "graph_vlabel queries / second"
|
||||||
|
echo "graph_category DNS"
|
||||||
|
echo hcache.label "cache hits"
|
||||||
|
echo hcache.min 0
|
||||||
|
echo hcache.draw AREA
|
||||||
|
echo hcache.colour 999999
|
||||||
|
echo h64ms.label "0 msec - 66 msec"
|
||||||
|
echo h64ms.min 0
|
||||||
|
echo h64ms.draw STACK
|
||||||
|
echo h64ms.colour 0000FF
|
||||||
|
echo h128ms.label "66 msec - 131 msec"
|
||||||
|
echo h128ms.min 0
|
||||||
|
echo h128ms.colour 1F00DF
|
||||||
|
echo h128ms.draw STACK
|
||||||
|
echo h256ms.label "131 msec - 262 msec"
|
||||||
|
echo h256ms.min 0
|
||||||
|
echo h256ms.draw STACK
|
||||||
|
echo h256ms.colour 3F00BF
|
||||||
|
echo h512ms.label "262 msec - 524 msec"
|
||||||
|
echo h512ms.min 0
|
||||||
|
echo h512ms.draw STACK
|
||||||
|
echo h512ms.colour 5F009F
|
||||||
|
echo h1s.label "524 msec - 1 sec"
|
||||||
|
echo h1s.min 0
|
||||||
|
echo h1s.draw STACK
|
||||||
|
echo h1s.colour 7F007F
|
||||||
|
echo h2s.label "1 sec - 2 sec"
|
||||||
|
echo h2s.min 0
|
||||||
|
echo h2s.draw STACK
|
||||||
|
echo h2s.colour 9F005F
|
||||||
|
echo h4s.label "2 sec - 4 sec"
|
||||||
|
echo h4s.min 0
|
||||||
|
echo h4s.draw STACK
|
||||||
|
echo h4s.colour BF003F
|
||||||
|
echo h8s.label "4 sec - 8 sec"
|
||||||
|
echo h8s.min 0
|
||||||
|
echo h8s.draw STACK
|
||||||
|
echo h8s.colour DF001F
|
||||||
|
echo h16s.label "8 sec - ..."
|
||||||
|
echo h16s.min 0
|
||||||
|
echo h16s.draw STACK
|
||||||
|
echo h16s.colour FF0000
|
||||||
|
echo "graph_info Histogram of the reply times for queries."
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# do the stats itself
|
||||||
|
get_state
|
||||||
|
|
||||||
|
# get the time elapsed
|
||||||
|
get_value "time.elapsed"
|
||||||
|
if test $value = 0 || test $value = "0.000000"; then
|
||||||
|
echo "error: time elapsed 0 or could not retrieve data"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elapsed="$value"
|
||||||
|
|
||||||
|
# print value for $1 / elapsed
|
||||||
|
print_qps ( ) {
|
||||||
|
mn=`echo $1 | sed $ABBREV | tr . _`
|
||||||
|
get_value $1
|
||||||
|
echo "$mn.value" `echo scale=6';' $value / $elapsed | bc `
|
||||||
|
}
|
||||||
|
|
||||||
|
# print qps if line already found in $2
|
||||||
|
print_qps_line ( ) {
|
||||||
|
mn=`echo $1 | sed $ABBREV | tr . _`
|
||||||
|
value="`echo $2 | sed -e 's/^.*=//'`"
|
||||||
|
echo "$mn.value" `echo scale=6';' $value / $elapsed | bc `
|
||||||
|
}
|
||||||
|
|
||||||
|
# print value for $1
|
||||||
|
print_value ( ) {
|
||||||
|
mn=`echo $1 | sed $ABBREV | tr . _`
|
||||||
|
get_value $1
|
||||||
|
echo "$mn.value" $value
|
||||||
|
}
|
||||||
|
|
||||||
|
case $id in
|
||||||
|
hits)
|
||||||
|
for x in thread0.num.queries thread1.num.queries thread2.num.queries \
|
||||||
|
thread3.num.queries thread4.num.queries thread5.num.queries \
|
||||||
|
thread6.num.queries thread7.num.queries total.num.queries \
|
||||||
|
total.num.cachehits total.num.prefetch num.query.tcp \
|
||||||
|
num.query.ipv6 unwanted.queries unwanted.replies; do
|
||||||
|
if grep "^"$x"=" $state >/dev/null 2>&1; then
|
||||||
|
print_qps $x
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
queue)
|
||||||
|
for x in total.requestlist.avg total.requestlist.max \
|
||||||
|
total.requestlist.overwritten total.requestlist.exceeded; do
|
||||||
|
print_value $x
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
memory)
|
||||||
|
mn=`echo mem.total.sbrk | sed $ABBREV | tr . _`
|
||||||
|
get_value 'mem.total.sbrk'
|
||||||
|
if test $value -eq 0; then
|
||||||
|
chk=`echo $ctrl | sed -e 's/-control$/-checkconf/'`
|
||||||
|
pidf=`$chk -o pidfile $conf 2>&1`
|
||||||
|
pid=`cat $pidf 2>&1`
|
||||||
|
value=`ps -p "$pid" -o rss= 2>&1`
|
||||||
|
if test "`expr $value + 1 - 1 2>&1`" -eq "$value" 2>&1; then
|
||||||
|
value=`expr $value \* 1024`
|
||||||
|
else
|
||||||
|
value=0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo "$mn.value" $value
|
||||||
|
for x in mem.cache.rrset mem.cache.message \
|
||||||
|
mem.mod.iterator mem.mod.validator; do
|
||||||
|
print_value $x
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
by_type)
|
||||||
|
for x in `grep "^num.query.type" $state`; do
|
||||||
|
nm=`echo $x | sed -e 's/=.*$//'`
|
||||||
|
print_qps_line $nm $x
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
by_class)
|
||||||
|
for x in `grep "^num.query.class" $state`; do
|
||||||
|
nm=`echo $x | sed -e 's/=.*$//'`
|
||||||
|
print_qps_line $nm $x
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
by_opcode)
|
||||||
|
for x in `grep "^num.query.opcode" $state`; do
|
||||||
|
nm=`echo $x | sed -e 's/=.*$//'`
|
||||||
|
print_qps_line $nm $x
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
by_rcode)
|
||||||
|
for x in `grep "^num.answer.rcode" $state`; do
|
||||||
|
nm=`echo $x | sed -e 's/=.*$//'`
|
||||||
|
print_qps_line $nm $x
|
||||||
|
done
|
||||||
|
print_qps "num.answer.secure"
|
||||||
|
print_qps "num.answer.bogus"
|
||||||
|
print_qps "num.rrset.bogus"
|
||||||
|
;;
|
||||||
|
by_flags)
|
||||||
|
for x in num.query.flags.QR num.query.flags.AA num.query.flags.TC num.query.flags.RD num.query.flags.RA num.query.flags.Z num.query.flags.AD num.query.flags.CD num.query.edns.present num.query.edns.DO; do
|
||||||
|
print_qps $x
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
histogram)
|
||||||
|
get_value total.num.cachehits
|
||||||
|
echo hcache.value `echo scale=6';' $value / $elapsed | bc `
|
||||||
|
r=0
|
||||||
|
for x in histogram.000000.000000.to.000000.000001 \
|
||||||
|
histogram.000000.000001.to.000000.000002 \
|
||||||
|
histogram.000000.000002.to.000000.000004 \
|
||||||
|
histogram.000000.000004.to.000000.000008 \
|
||||||
|
histogram.000000.000008.to.000000.000016 \
|
||||||
|
histogram.000000.000016.to.000000.000032 \
|
||||||
|
histogram.000000.000032.to.000000.000064 \
|
||||||
|
histogram.000000.000064.to.000000.000128 \
|
||||||
|
histogram.000000.000128.to.000000.000256 \
|
||||||
|
histogram.000000.000256.to.000000.000512 \
|
||||||
|
histogram.000000.000512.to.000000.001024 \
|
||||||
|
histogram.000000.001024.to.000000.002048 \
|
||||||
|
histogram.000000.002048.to.000000.004096 \
|
||||||
|
histogram.000000.004096.to.000000.008192 \
|
||||||
|
histogram.000000.008192.to.000000.016384 \
|
||||||
|
histogram.000000.016384.to.000000.032768 \
|
||||||
|
histogram.000000.032768.to.000000.065536; do
|
||||||
|
get_value $x
|
||||||
|
r=`expr $r + $value`
|
||||||
|
done
|
||||||
|
echo h64ms.value `echo scale=6';' $r / $elapsed | bc `
|
||||||
|
get_value histogram.000000.065536.to.000000.131072
|
||||||
|
echo h128ms.value `echo scale=6';' $value / $elapsed | bc `
|
||||||
|
get_value histogram.000000.131072.to.000000.262144
|
||||||
|
echo h256ms.value `echo scale=6';' $value / $elapsed | bc `
|
||||||
|
get_value histogram.000000.262144.to.000000.524288
|
||||||
|
echo h512ms.value `echo scale=6';' $value / $elapsed | bc `
|
||||||
|
get_value histogram.000000.524288.to.000001.000000
|
||||||
|
echo h1s.value `echo scale=6';' $value / $elapsed | bc `
|
||||||
|
get_value histogram.000001.000000.to.000002.000000
|
||||||
|
echo h2s.value `echo scale=6';' $value / $elapsed | bc `
|
||||||
|
get_value histogram.000002.000000.to.000004.000000
|
||||||
|
echo h4s.value `echo scale=6';' $value / $elapsed | bc `
|
||||||
|
get_value histogram.000004.000000.to.000008.000000
|
||||||
|
echo h8s.value `echo scale=6';' $value / $elapsed | bc `
|
||||||
|
r=0
|
||||||
|
for x in histogram.000008.000000.to.000016.000000 \
|
||||||
|
histogram.000016.000000.to.000032.000000 \
|
||||||
|
histogram.000032.000000.to.000064.000000 \
|
||||||
|
histogram.000064.000000.to.000128.000000 \
|
||||||
|
histogram.000128.000000.to.000256.000000 \
|
||||||
|
histogram.000256.000000.to.000512.000000 \
|
||||||
|
histogram.000512.000000.to.001024.000000 \
|
||||||
|
histogram.001024.000000.to.002048.000000 \
|
||||||
|
histogram.002048.000000.to.004096.000000 \
|
||||||
|
histogram.004096.000000.to.008192.000000 \
|
||||||
|
histogram.008192.000000.to.016384.000000 \
|
||||||
|
histogram.016384.000000.to.032768.000000 \
|
||||||
|
histogram.032768.000000.to.065536.000000 \
|
||||||
|
histogram.065536.000000.to.131072.000000 \
|
||||||
|
histogram.131072.000000.to.262144.000000 \
|
||||||
|
histogram.262144.000000.to.524288.000000; do
|
||||||
|
get_value $x
|
||||||
|
r=`expr $r + $value`
|
||||||
|
done
|
||||||
|
echo h16s.value `echo scale=6';' $r / $elapsed | bc `
|
||||||
|
;;
|
||||||
|
esac
|
212
SOURCES/wouter.nlnetlabs.nl.key
Normal file
212
SOURCES/wouter.nlnetlabs.nl.key
Normal file
@ -0,0 +1,212 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title>Public Key Server -- Get "0x9f6f1c2d7e045f8d "</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
|
<style type="text/css">
|
||||||
|
/*<![CDATA[*/
|
||||||
|
.uid { color: green; text-decoration: underline; }
|
||||||
|
.warn { color: red; font-weight: bold; }
|
||||||
|
/*]]>*/
|
||||||
|
</style></head><body><h1>Public Key Server -- Get "0x9f6f1c2d7e045f8d "</h1>
|
||||||
|
<pre>
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
Version: SKS 1.1.6
|
||||||
|
Comment: Hostname: sks.pod02.fleetstreetops.com
|
||||||
|
|
||||||
|
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
|
||||||
|
kPS+VwgmVgNN1ewS/0oHvmEP71Q=
|
||||||
|
=ZSkT
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
</pre>
|
||||||
|
</body></html>
|
1312
SPECS/unbound.spec
Normal file
1312
SPECS/unbound.spec
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user