diff --git a/cmd/client.go b/cmd/client.go index efd8c53..abf5d14 100644 --- a/cmd/client.go +++ b/cmd/client.go @@ -1,6 +1,7 @@ package main import ( + "context" "crypto/tls" "crypto/x509" "io" @@ -27,6 +28,16 @@ import ( func client(config *clientConfig) { logrus.WithField("config", config.String()).Info("Client configuration loaded") + // Resolver + if len(config.Resolver) > 0 { + net.DefaultResolver = &net.Resolver{ + PreferGo: true, + Dial: func(ctx context.Context, network, address string) (net.Conn, error) { + d := net.Dialer{} + return d.DialContext(ctx, "udp", config.Resolver) + }, + } + } // TLS tlsConfig := &tls.Config{ ServerName: config.ServerName, diff --git a/cmd/config.go b/cmd/config.go index 9b3c3aa..24b538b 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -48,6 +48,7 @@ type serverConfig struct { MaxConnClient int `json:"max_conn_client"` DisableMTUDiscovery bool `json:"disable_mtu_discovery"` IPv6Only bool `json:"ipv6_only"` + Resolver string `json:"resolver"` } func (c *serverConfig) Check() error { @@ -146,6 +147,7 @@ type clientConfig struct { ReceiveWindowConn uint64 `json:"recv_window_conn"` ReceiveWindow uint64 `json:"recv_window"` DisableMTUDiscovery bool `json:"disable_mtu_discovery"` + Resolver string `json:"resolver"` } func (c *clientConfig) Check() error { diff --git a/cmd/server.go b/cmd/server.go index 06cc69c..a441f97 100644 --- a/cmd/server.go +++ b/cmd/server.go @@ -1,6 +1,7 @@ package main import ( + "context" "crypto/tls" "github.com/lucas-clemente/quic-go" "github.com/lucas-clemente/quic-go/congestion" @@ -22,6 +23,16 @@ import ( func server(config *serverConfig) { logrus.WithField("config", config.String()).Info("Server configuration loaded") + // Resolver + if len(config.Resolver) > 0 { + net.DefaultResolver = &net.Resolver{ + PreferGo: true, + Dial: func(ctx context.Context, network, address string) (net.Conn, error) { + d := net.Dialer{} + return d.DialContext(ctx, "udp", config.Resolver) + }, + } + } // Load TLS config var tlsConfig *tls.Config if len(config.ACME.Domains) > 0 {