Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Opt ¶
type Opt struct {
// DialAddr specifies the address the upstream will
// actually dial to in the network layer by overwriting
// the address inferred from upstream url.
// It won't affect high level layers. (e.g. SNI, HTTP HOST header won't be changed).
// Can be an IP or a domain. Port is optional.
// Tips: If the upstream url host is a domain, specific an IP address
// here can skip resolving ip of this domain.
//
// Special usage:
// If DialAddr has a "@" prefix, and the upstream protocol is stream/tcp based (tcp/tls/http/https),
// then it will dial an abstract unix socket.
DialAddr string
// IdleTimeout specifies the timeout for dialing new connection.
// Default value is about 3~5s (depending on upstream protocol and system settings).
DialTimeout time.Duration
// IdleTimeout specifies the idle timeout for long-connections.
// Default: TCP, DoT: 10s , DoH, DoH3, DoQ: 30s.
IdleTimeout time.Duration
// EnablePipeline enables query pipelining support as RFC 7766 6.2.1.1 suggested.
// Available for TCP, DoT upstream.
// Note: There is no fallback. Make sure the server supports it.
EnablePipeline bool
// EnableHTTP3 will use HTTP/3 protocol to connect a DoH upstream. (aka DoH3).
// Note: There is no fallback. Make sure the server supports it.
EnableHTTP3 bool
// TLSConfig specifies the tls.Config that the TLS client will use.
// Available for DoT, DoH, DoQ upstream.
TLSConfig *tls.Config
// Logger specifies the logger that the upstream will use.
Logger *zerolog.Logger
// Set the Control field in net.ListenConfig / net.Dialer when creating
// upstream connections.
Control func(network, address string, c syscall.RawConn) error
}
type Upstream ¶
func NewUpstream ¶
NewUpstream creates a upstream. addr has the format of: [protocol://]host[:port][/path]. Supported protocol: udp/tcp/tls/https/quic. Default protocol is udp.
Helper protocol:
- tcp+pipeline/tls+pipeline: Automatically set opt.EnablePipeline to true.
- h3: Automatically set opt.EnableHTTP3 to true.
Click to show internal directories.
Click to hide internal directories.