mirror of
https://github.com/m13253/dns-over-https.git
synced 2026-04-01 11:45:39 +00:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
56973c827d | ||
|
|
c1be2ddd18 | ||
|
|
cb78b9b696 |
25
Readme.md
25
Readme.md
@@ -72,11 +72,26 @@ you can host DNS-over-HTTPS along with other HTTPS services.
|
|||||||
|
|
||||||
## DNSSEC
|
## DNSSEC
|
||||||
|
|
||||||
DNSSEC validation is not built-in. It is highly recommended that you install
|
DNS-over-HTTPS is compatible with DNSSEC, and requests DNSSEC signatures by
|
||||||
`unbound` or `bind` and pass results for them to validate DNS records.
|
default. However signature validation is not built-in. It is highly recommended
|
||||||
|
that you install `unbound` or `bind` and pass results for them to validate DNS
|
||||||
|
records.
|
||||||
|
|
||||||
If you are running a server without anycast, you probably want to enable EDNS0
|
## EDNS0-Client-Subnet (GeoDNS)
|
||||||
Client Subnet during your configuring `unbound` or `bind`.
|
|
||||||
|
DNS-over-HTTPS supports EDNS0-Client-Subnet protocol, which submits part of the
|
||||||
|
client's IP address (/24 for IPv4, /48 for IPv6 by default) to the upstream
|
||||||
|
server. This is useful for GeoDNS and CDNs to work, and is exactly the same
|
||||||
|
configuration as most public DNS servers.
|
||||||
|
|
||||||
|
Keep in mind that /24 is not enough to track a single user, although it is
|
||||||
|
precise enough to know the city where the user is from. If you think
|
||||||
|
EDNS0-Client-Subnet is affecting your privacy, you can set `no_ecs = true` in
|
||||||
|
`/etc/dns-over-https/doh-client.conf`, with the cost of slower video streaming
|
||||||
|
or software downloading speed.
|
||||||
|
|
||||||
|
If your server is backed by `unbound` or `bind`, you probably want to enable
|
||||||
|
the EDNS0-Client-Subnet feature in their configuration files as well.
|
||||||
|
|
||||||
## Protocol compatibility
|
## Protocol compatibility
|
||||||
|
|
||||||
@@ -99,7 +114,7 @@ Currently supported features are:
|
|||||||
|
|
||||||
- [X] IPv4 / IPv6
|
- [X] IPv4 / IPv6
|
||||||
- [X] EDNS0 large UDP packet (4 KiB by default)
|
- [X] EDNS0 large UDP packet (4 KiB by default)
|
||||||
- [X] EDNS0 Client Subnet (/24 for IPv4, /48 for IPv6 by default)
|
- [X] EDNS0-Client-Subnet (/24 for IPv4, /48 for IPv6 by default)
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ func (s *Server) handlerFunc(w http.ResponseWriter, r *http.Request) {
|
|||||||
} else if contentType == "application/dns-udpwireformat" {
|
} else if contentType == "application/dns-udpwireformat" {
|
||||||
req = s.parseRequestIETF(w, r)
|
req = s.parseRequestIETF(w, r)
|
||||||
} else {
|
} else {
|
||||||
jsonDNS.FormatError(w, fmt.Sprintf("Invalid argument value: \"ct\" = %q", contentType), 400)
|
jsonDNS.FormatError(w, fmt.Sprintf("Invalid argument value: \"ct\" = %q", contentType), 415)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if req.errcode != 0 {
|
if req.errcode != 0 {
|
||||||
|
|||||||
Reference in New Issue
Block a user