mirror of
https://github.com/minoplhy/DNSserver.git
synced 2024-11-24 10:16:54 +00:00
commit
669770eae7
@ -1,4 +1,9 @@
|
||||
# DOT DOH with haproxy
|
||||
|
||||
**[Mozilla ssl-config](https://ssl-config.mozilla.org/)**
|
||||
|
||||
**!!! denylist.rpz and allowlist.rpz are made for my _private_ use and will _cause_ problem with _some_ domain !!!**
|
||||
|
||||
```
|
||||
Query
|
||||
Dns-over-TLS
|
||||
@ -18,3 +23,6 @@ Query
|
||||
|--------------------------------------------------------------> Dns Resolver (Knot-resolver dns local)
|
||||
|
||||
```
|
||||
|
||||
# Recommendation
|
||||
1. [knot-resolver](https://knot-resolver.cz) **Recommend** using upstream repository on debian
|
||||
|
5
addition/check.http
Normal file
5
addition/check.http
Normal file
@ -0,0 +1,5 @@
|
||||
HTTP/1.0 200 Found
|
||||
Cache-Control: no-cache
|
||||
Connection: close
|
||||
Content-Type: text/plain
|
||||
Access-Control-Allow-Origin: https://domain.tld
|
13
bright.md
Normal file
13
bright.md
Normal file
@ -0,0 +1,13 @@
|
||||
# bright!!
|
||||
***SERVER SIDE***
|
||||
1. haproxy.cfg
|
||||
- haproxy
|
||||
2. kresd.conf
|
||||
- knot-resolver
|
||||
3. doh-server.conf
|
||||
- m13253/dns-over-https **doh-server**
|
||||
|
||||
***ADDITIONAL***
|
||||
|
||||
1. *.rpz
|
||||
- response policy zone [Wikipedia](https://en.wikipedia.org/wiki/Response_policy_zone) [knot-resolver](https://knot-resolver.readthedocs.io/en/stable/modules-policy.html#response-policy-zones)
|
36
configuration/doh-server.conf
Normal file
36
configuration/doh-server.conf
Normal file
@ -0,0 +1,36 @@
|
||||
# Original author : aaflalo.me https://www.aaflalo.me/2018/10/tutorial-setup-dns-over-https-server/#Configuration
|
||||
# HTTP listen port
|
||||
listen = [
|
||||
"127.0.0.1:8053",
|
||||
"[::1]:8053",
|
||||
]
|
||||
|
||||
# TLS certification file
|
||||
# If left empty, plain-text HTTP will be used.
|
||||
# You are recommended to leave empty and to use a server load balancer (e.g.
|
||||
# Caddy, Nginx) and set up TLS there, because this program does not do OCSP
|
||||
# Stapling, which is necessary for client bootstrapping in a network
|
||||
# environment with completely no traditional DNS service.
|
||||
cert = ""
|
||||
|
||||
# TLS private key file
|
||||
key = ""
|
||||
|
||||
# HTTP path for resolve application
|
||||
path = "/dns-query"
|
||||
|
||||
# Upstream DNS resolver
|
||||
# If multiple servers are specified, a random one will be chosen each time.
|
||||
upstream = [
|
||||
"tcp:127.0.0.1:5353",
|
||||
"udp:127.0.0.1:5353",
|
||||
]
|
||||
|
||||
# Upstream timeout
|
||||
timeout = 60
|
||||
|
||||
# Number of tries if upstream DNS fails
|
||||
tries = 10
|
||||
|
||||
# Enable logging
|
||||
verbose = false
|
87
configuration/haproxy.cfg
Normal file
87
configuration/haproxy.cfg
Normal file
@ -0,0 +1,87 @@
|
||||
|
||||
global
|
||||
log /dev/log local0
|
||||
log /dev/log local1 notice
|
||||
chroot /var/lib/haproxy
|
||||
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
|
||||
stats timeout 30s
|
||||
user haproxy
|
||||
group haproxy
|
||||
daemon
|
||||
|
||||
# https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=haproxy-1.8.0&openssl=1.1.0i&hsts=yes&profile=modern
|
||||
# If you are using different version (check with `openssl version` and `haproxy -v`, go get new ciphers&options)
|
||||
# set default parameters to the intermediate configuration
|
||||
ssl-default-bind-ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
|
||||
ssl-default-bind-options no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets
|
||||
ssl-default-server-ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
|
||||
ssl-default-server-options no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets
|
||||
|
||||
# curl https://ssl-config.mozilla.org/ffdhe2048.txt > /path/to/dhparam
|
||||
ssl-dh-param-file /path/to/dhparam
|
||||
|
||||
defaults
|
||||
# enables tcplog so disabled
|
||||
# log global
|
||||
mode http
|
||||
# option httplog
|
||||
option dontlognull
|
||||
timeout connect 5000
|
||||
timeout client 50000
|
||||
timeout server 50000
|
||||
errorfile 400 /etc/haproxy/errors/400.http
|
||||
errorfile 403 /etc/haproxy/errors/403.http
|
||||
errorfile 408 /etc/haproxy/errors/408.http
|
||||
errorfile 500 /etc/haproxy/errors/500.http
|
||||
errorfile 502 /etc/haproxy/errors/502.http
|
||||
errorfile 503 /etc/haproxy/errors/503.http
|
||||
errorfile 504 /etc/haproxy/errors/504.http
|
||||
|
||||
|
||||
# TCP LB (443)
|
||||
frontend 443-in
|
||||
bind 104.244.78.187:443 tfo ssl strict-sni crt /etc/haproxy/certs/dot.domain.pem
|
||||
bind [::]:443 tfo ssl strict-sni crt /etc/haproxy/certs/dot.domain.pem
|
||||
mode tcp
|
||||
|
||||
# DoT
|
||||
use_backend dns-dot if { ssl_fc_sni dot.domain.pem }
|
||||
|
||||
# TCP LB (853)
|
||||
frontend 853-in
|
||||
bind 0.0.0.0:853 tfo ssl strict-sni crt /etc/haproxy/certs/dot.domain.pem
|
||||
bind [::]:853 tfo ssl strict-sni crt /etc/haproxy/certs/dot.domain.pem
|
||||
mode tcp
|
||||
|
||||
# DoT
|
||||
use_backend dns-dot if { ssl_fc_sni dot.domain }
|
||||
|
||||
backend dns-dot
|
||||
mode tcp
|
||||
server dot 127.0.0.1:5353 check
|
||||
|
||||
# TCP LB (443)
|
||||
frontend 443-in-doh
|
||||
bind 0.0.0.0:443 strict-sni tfo ssl crt /etc/haproxy/certs/doh.ludns.nakadlto.cz.pem
|
||||
bind [::]:443 strict-sni tfo ssl crt /etc/haproxy/certs/doh.ludns.nakadlto.cz.pem
|
||||
|
||||
mode http
|
||||
|
||||
http-response set-header Strict-Transport-Security max-age=63072000
|
||||
http-response set-header X-Frontend lv1
|
||||
|
||||
use_backend check if { path /check }
|
||||
|
||||
use_backend dns-doh if { hdr(host) -i doh.domain }
|
||||
|
||||
# default_backend nginx
|
||||
|
||||
backend dns-doh
|
||||
mode http
|
||||
server dns-doh 127.0.0.1:8053 check
|
||||
|
||||
http-response set-header Strict-Transport-Security max-age=63072000
|
||||
|
||||
backend check
|
||||
mode http
|
||||
errorfile 503 /root/dns/check.http
|
26
configuration/kresd.conf
Normal file
26
configuration/kresd.conf
Normal file
@ -0,0 +1,26 @@
|
||||
-- SPDX-License-Identifier: CC0-1.0
|
||||
-- vim:syntax=lua:set ts=4 sw=4:
|
||||
-- Refer to manual: https://knot-resolver.readthedocs.org/en/stable/
|
||||
|
||||
verbose(true)
|
||||
-- Network interface configuration
|
||||
net.listen('127.0.0.1', 5353, { kind = 'dns' })
|
||||
net.listen('::1', 5353, { kind = 'dns', freebind = true })
|
||||
|
||||
-- Load useful modules
|
||||
modules = {
|
||||
'hints > iterate', -- Load /etc/hosts and allow custom root hints
|
||||
'stats', -- Track internal statistics
|
||||
'predict', -- Prefetch expiring/frequent records
|
||||
}
|
||||
|
||||
-- Cache size
|
||||
cache.size = 100 * MB
|
||||
|
||||
-- policy help : https://knot-resolver.readthedocs.io/en/stable/modules-policy.html
|
||||
-- This is Just a Blocklist
|
||||
policy.add(policy.rpz(policy.DENY, '/etc/knot-resolver/list/energized-ultimate.rpz',true))
|
||||
policy.add(policy.rpz(policy.DENY, '/etc/knot-resolver/list/denylist.rpz',true))
|
||||
policy.add(policy.rpz(policy.DENY, '/etc/knot-resolver/list/oisd.rpz',true))
|
||||
policy.add(policy.rpz(policy.PASS, '/etc/knot-resolver/list/allowlist.rpz',true))
|
||||
policy.add(policy.all(policy.QTRACE))
|
2
filters/allowlist.rpz
Normal file
2
filters/allowlist.rpz
Normal file
@ -0,0 +1,2 @@
|
||||
*.gvt1.com CNAME rpz-passthru.
|
||||
*.play.googleapis.com CNAME rpz-passthru.
|
19
filters/denylist.rpz
Normal file
19
filters/denylist.rpz
Normal file
@ -0,0 +1,19 @@
|
||||
in-os-config-appstore.vivoglobal.com CNAME .
|
||||
asia-vcode-od.vivoglobal.com CNAME .
|
||||
excfgfile-vivofs-asia.vivo.com.cn CNAME .
|
||||
tencent.com CNAME .
|
||||
tencent.cn CNAME .
|
||||
footprints-pa.googleapis.com CNAME .
|
||||
people-pa.googleapis.com CNAME .
|
||||
lamssettings-pa.googleapis.com CNAME .
|
||||
cdn.syndication.twimg.com CNAME .
|
||||
fonts.gstatic.com CNAME .
|
||||
fonts.googleapis.com CNAME .
|
||||
platform.twitter.com CNAME .
|
||||
asia-analyzer-appstore.vivoglobal.com CNAME .
|
||||
platform.instagram.com CNAME .
|
||||
alb.reddit.com CNAME .
|
||||
s.reddit.com CNAME .
|
||||
tiktok.com CNAME .
|
||||
qq.com CNAME .
|
||||
mail.ru CNAME .
|
3
filters/lists.txt
Normal file
3
filters/lists.txt
Normal file
@ -0,0 +1,3 @@
|
||||
# List of third party filters besides my personal list
|
||||
https://block.energized.pro/ultimate/formats/rpz.txt
|
||||
https://rpz.oisd.nl/
|
Loading…
Reference in New Issue
Block a user