mirror of
https://github.com/coredns/coredns.git
synced 2025-11-02 18:23:25 -05:00
[RFC-9250]: Add QUIC server support (#6182)
Add DNS-over-QUIC server Signed-off-by: jaehnri <joao.henri.cr@gmail.com> Signed-off-by: João Henri <joao.henri.cr@gmail.com>
This commit is contained in:
@@ -21,6 +21,7 @@ the following metrics are exported:
|
||||
* `coredns_dns_response_size_bytes{server, zone, view, proto}` - response size in bytes.
|
||||
* `coredns_dns_responses_total{server, zone, view, rcode, plugin}` - response per zone, rcode and plugin.
|
||||
* `coredns_dns_https_responses_total{server, status}` - responses per server and http status code.
|
||||
* `coredns_dns_quic_responses_total{server, status}` - responses per server and QUIC application code.
|
||||
* `coredns_plugin_enabled{server, zone, view, name}` - indicates whether a plugin is enabled on per server, zone and view basis.
|
||||
|
||||
Almost each counter has a label `zone` which is the zonename used for the request/response.
|
||||
|
||||
@@ -72,6 +72,13 @@ var (
|
||||
Name: "https_responses_total",
|
||||
Help: "Counter of DoH responses per server and http status code.",
|
||||
}, []string{"server", "status"})
|
||||
|
||||
QUICResponsesCount = promauto.NewCounterVec(prometheus.CounterOpts{
|
||||
Namespace: plugin.Namespace,
|
||||
Subsystem: subsystem,
|
||||
Name: "quic_responses_total",
|
||||
Help: "Counter of DoQ responses per server and QUIC application code.",
|
||||
}, []string{"server", "status"})
|
||||
)
|
||||
|
||||
const (
|
||||
|
||||
@@ -61,6 +61,8 @@ func HostPortOrFile(s ...string) ([]string, error) {
|
||||
ss = net.JoinHostPort(host, transport.Port)
|
||||
case transport.TLS:
|
||||
ss = transport.TLS + "://" + net.JoinHostPort(host, transport.TLSPort)
|
||||
case transport.QUIC:
|
||||
ss = transport.QUIC + "://" + net.JoinHostPort(host, transport.QUICPort)
|
||||
case transport.GRPC:
|
||||
ss = transport.GRPC + "://" + net.JoinHostPort(host, transport.GRPCPort)
|
||||
case transport.HTTPS:
|
||||
|
||||
@@ -19,6 +19,10 @@ func Transport(s string) (trans string, addr string) {
|
||||
s = s[len(transport.DNS+"://"):]
|
||||
return transport.DNS, s
|
||||
|
||||
case strings.HasPrefix(s, transport.QUIC+"://"):
|
||||
s = s[len(transport.QUIC+"://"):]
|
||||
return transport.QUIC, s
|
||||
|
||||
case strings.HasPrefix(s, transport.GRPC+"://"):
|
||||
s = s[len(transport.GRPC+"://"):]
|
||||
return transport.GRPC, s
|
||||
|
||||
@@ -4,6 +4,7 @@ package transport
|
||||
const (
|
||||
DNS = "dns"
|
||||
TLS = "tls"
|
||||
QUIC = "quic"
|
||||
GRPC = "grpc"
|
||||
HTTPS = "https"
|
||||
UNIX = "unix"
|
||||
@@ -15,6 +16,8 @@ const (
|
||||
Port = "53"
|
||||
// TLSPort is the default port for DNS-over-TLS.
|
||||
TLSPort = "853"
|
||||
// QUICPort is the default port for DNS-over-QUIC.
|
||||
QUICPort = "853"
|
||||
// GRPCPort is the default port for DNS-over-gRPC.
|
||||
GRPCPort = "443"
|
||||
// HTTPSPort is the default port for DNS-over-HTTPS.
|
||||
|
||||
Reference in New Issue
Block a user