Documentation
¶
Overview ¶
Package dns is an implementation of core.DNS feature.
Index ¶
- Variables
- func Fqdn(domain string) string
- func NewLocalNameServer() *localNameServer
- type ClassicNameServer
- type Client
- type Config
- func (*Config) Descriptor() ([]byte, []int)
- func (m *Config) GetClientIp() []byte
- func (m *Config) GetHosts() map[string]*net.IPOrDomaindeprecated
- func (m *Config) GetNameServer() []*NameServer
- func (m *Config) GetNameServers() []*net.Endpointdeprecated
- func (m *Config) GetStaticHosts() []*Config_HostMapping
- func (m *Config) GetTag() string
- func (*Config) ProtoMessage()
- func (m *Config) Reset()
- func (m *Config) String() string
- func (m *Config) XXX_DiscardUnknown()
- func (m *Config) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *Config) XXX_Merge(src proto.Message)
- func (m *Config) XXX_Size() int
- func (m *Config) XXX_Unmarshal(b []byte) error
- type Config_HostMapping
- func (*Config_HostMapping) Descriptor() ([]byte, []int)
- func (m *Config_HostMapping) GetDomain() string
- func (m *Config_HostMapping) GetIp() [][]byte
- func (m *Config_HostMapping) GetProxiedDomain() string
- func (m *Config_HostMapping) GetType() DomainMatchingType
- func (*Config_HostMapping) ProtoMessage()
- func (m *Config_HostMapping) Reset()
- func (m *Config_HostMapping) String() string
- func (m *Config_HostMapping) XXX_DiscardUnknown()
- func (m *Config_HostMapping) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *Config_HostMapping) XXX_Merge(src proto.Message)
- func (m *Config_HostMapping) XXX_Size() int
- func (m *Config_HostMapping) XXX_Unmarshal(b []byte) error
- type DomainMatchingType
- type IPOption
- type IPRecord
- type NameServer
- func (*NameServer) Descriptor() ([]byte, []int)
- func (m *NameServer) GetAddress() *net.Endpoint
- func (m *NameServer) GetPrioritizedDomain() []*NameServer_PriorityDomain
- func (*NameServer) ProtoMessage()
- func (m *NameServer) Reset()
- func (m *NameServer) String() string
- func (m *NameServer) XXX_DiscardUnknown()
- func (m *NameServer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *NameServer) XXX_Merge(src proto.Message)
- func (m *NameServer) XXX_Size() int
- func (m *NameServer) XXX_Unmarshal(b []byte) error
- type NameServer_PriorityDomain
- func (*NameServer_PriorityDomain) Descriptor() ([]byte, []int)
- func (m *NameServer_PriorityDomain) GetDomain() string
- func (m *NameServer_PriorityDomain) GetType() DomainMatchingType
- func (*NameServer_PriorityDomain) ProtoMessage()
- func (m *NameServer_PriorityDomain) Reset()
- func (m *NameServer_PriorityDomain) String() string
- func (m *NameServer_PriorityDomain) XXX_DiscardUnknown()
- func (m *NameServer_PriorityDomain) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *NameServer_PriorityDomain) XXX_Merge(src proto.Message)
- func (m *NameServer_PriorityDomain) XXX_Size() int
- func (m *NameServer_PriorityDomain) XXX_Unmarshal(b []byte) error
- type Server
- func (s *Server) Close() error
- func (s *Server) IsOwnLink(ctx context.Context) bool
- func (s *Server) LookupIP(domain string) ([]net.IP, error)
- func (s *Server) LookupIPv4(domain string) ([]net.IP, error)
- func (s *Server) LookupIPv6(domain string) ([]net.IP, error)
- func (s *Server) Start() error
- func (*Server) Type() interface{}
- type StaticHosts
Constants ¶
This section is empty.
Variables ¶
View Source
var DomainMatchingType_name = map[int32]string{
0: "Full",
1: "Subdomain",
2: "Keyword",
3: "Regex",
}
View Source
var DomainMatchingType_value = map[string]int32{
"Full": 0,
"Subdomain": 1,
"Keyword": 2,
"Regex": 3,
}
Functions ¶
func NewLocalNameServer ¶
func NewLocalNameServer() *localNameServer
Types ¶
type ClassicNameServer ¶
type ClassicNameServer struct {
sync.RWMutex
// contains filtered or unexported fields
}
func NewClassicNameServer ¶
func NewClassicNameServer(address net.Destination, dispatcher routing.Dispatcher, clientIP net.IP) *ClassicNameServer
func (*ClassicNameServer) HandleResponse ¶
func (s *ClassicNameServer) HandleResponse(ctx context.Context, packet *udp_proto.Packet)
type Client ¶
type Client interface {
Name() string
QueryIP(ctx context.Context, domain string, option IPOption) ([]net.IP, error)
}
type Config ¶ added in v1.13.1
type Config struct {
// Nameservers used by this DNS. Only traditional UDP servers are support at the moment.
// A special value 'localhost' as a domain address can be set to use DNS on local system.
NameServers []*net.Endpoint `protobuf:"bytes,1,rep,name=NameServers,proto3" json:"NameServers,omitempty"` // Deprecated: Do not use.
// NameServer list used by this DNS client.
NameServer []*NameServer `protobuf:"bytes,5,rep,name=name_server,json=nameServer,proto3" json:"name_server,omitempty"`
// Static hosts. Domain to IP.
// Deprecated. Use static_hosts.
Hosts map[string]*net.IPOrDomain `` // Deprecated: Do not use.
/* 151-byte string literal not displayed */
// Client IP for EDNS client subnet. Must be 4 bytes (IPv4) or 16 bytes (IPv6).
ClientIp []byte `protobuf:"bytes,3,opt,name=client_ip,json=clientIp,proto3" json:"client_ip,omitempty"`
StaticHosts []*Config_HostMapping `protobuf:"bytes,4,rep,name=static_hosts,json=staticHosts,proto3" json:"static_hosts,omitempty"`
// Tag is the inbound tag of DNS client.
Tag string `protobuf:"bytes,6,opt,name=tag,proto3" json:"tag,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (*Config) Descriptor ¶
func (*Config) Descriptor() ([]byte, []int)
func (*Config) GetClientIp ¶
func (m *Config) GetClientIp() []byte
func (*Config) GetHosts
deprecated
func (m *Config) GetHosts() map[string]*net.IPOrDomain
Deprecated: Do not use.
func (*Config) GetNameServer ¶
func (m *Config) GetNameServer() []*NameServer
func (*Config) GetNameServers
deprecated
func (m *Config) GetNameServers() []*net.Endpoint
Deprecated: Do not use.
func (*Config) GetStaticHosts ¶
func (m *Config) GetStaticHosts() []*Config_HostMapping
func (*Config) ProtoMessage ¶
func (*Config) ProtoMessage()
func (*Config) XXX_DiscardUnknown ¶
func (m *Config) XXX_DiscardUnknown()
func (*Config) XXX_Marshal ¶
func (m *Config) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (*Config) XXX_Unmarshal ¶
func (m *Config) XXX_Unmarshal(b []byte) error
type Config_HostMapping ¶
type Config_HostMapping struct {
Type DomainMatchingType `protobuf:"varint,1,opt,name=type,proto3,enum=v2ray.core.app.dns.DomainMatchingType" json:"type,omitempty"`
Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"`
Ip [][]byte `protobuf:"bytes,3,rep,name=ip,proto3" json:"ip,omitempty"`
// ProxiedDomain indicates the mapped domain has the same IP address on this domain. V2Ray will use this domain for IP queries.
// This field is only effective if ip is empty.
ProxiedDomain string `protobuf:"bytes,4,opt,name=proxied_domain,json=proxiedDomain,proto3" json:"proxied_domain,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (*Config_HostMapping) Descriptor ¶
func (*Config_HostMapping) Descriptor() ([]byte, []int)
func (*Config_HostMapping) GetProxiedDomain ¶
func (m *Config_HostMapping) GetProxiedDomain() string
func (*Config_HostMapping) ProtoMessage ¶
func (*Config_HostMapping) ProtoMessage()
func (*Config_HostMapping) XXX_DiscardUnknown ¶
func (m *Config_HostMapping) XXX_DiscardUnknown()
func (*Config_HostMapping) XXX_Marshal ¶
func (m *Config_HostMapping) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (*Config_HostMapping) XXX_Unmarshal ¶
func (m *Config_HostMapping) XXX_Unmarshal(b []byte) error
type DomainMatchingType ¶
type DomainMatchingType int32
const (
DomainMatchingType_Full DomainMatchingType = 0
DomainMatchingType_Subdomain DomainMatchingType = 1
DomainMatchingType_Keyword DomainMatchingType = 2
DomainMatchingType_Regex DomainMatchingType = 3
)
func (DomainMatchingType) EnumDescriptor ¶
func (DomainMatchingType) EnumDescriptor() ([]byte, []int)
type IPOption ¶
type IPOption struct {
IPv4Enable bool
IPv6Enable bool
}
IPOption is an object for IP query options.
type NameServer ¶ added in v1.13.1
type NameServer struct {
Address *net.Endpoint `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
PrioritizedDomain []*NameServer_PriorityDomain `protobuf:"bytes,2,rep,name=prioritized_domain,json=prioritizedDomain,proto3" json:"prioritized_domain,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (*NameServer) Descriptor ¶
func (*NameServer) Descriptor() ([]byte, []int)
func (*NameServer) GetAddress ¶
func (m *NameServer) GetAddress() *net.Endpoint
func (*NameServer) GetPrioritizedDomain ¶
func (m *NameServer) GetPrioritizedDomain() []*NameServer_PriorityDomain
func (*NameServer) ProtoMessage ¶
func (*NameServer) ProtoMessage()
func (*NameServer) XXX_DiscardUnknown ¶
func (m *NameServer) XXX_DiscardUnknown()
func (*NameServer) XXX_Marshal ¶
func (m *NameServer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (*NameServer) XXX_Unmarshal ¶
func (m *NameServer) XXX_Unmarshal(b []byte) error
type NameServer_PriorityDomain ¶
type NameServer_PriorityDomain struct {
Type DomainMatchingType `protobuf:"varint,1,opt,name=type,proto3,enum=v2ray.core.app.dns.DomainMatchingType" json:"type,omitempty"`
Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (*NameServer_PriorityDomain) Descriptor ¶
func (*NameServer_PriorityDomain) Descriptor() ([]byte, []int)
func (*NameServer_PriorityDomain) GetDomain ¶
func (m *NameServer_PriorityDomain) GetDomain() string
func (*NameServer_PriorityDomain) GetType ¶
func (m *NameServer_PriorityDomain) GetType() DomainMatchingType
func (*NameServer_PriorityDomain) ProtoMessage ¶
func (*NameServer_PriorityDomain) ProtoMessage()
func (*NameServer_PriorityDomain) XXX_DiscardUnknown ¶
func (m *NameServer_PriorityDomain) XXX_DiscardUnknown()
func (*NameServer_PriorityDomain) XXX_Marshal ¶
func (m *NameServer_PriorityDomain) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (*NameServer_PriorityDomain) XXX_Merge ¶
func (m *NameServer_PriorityDomain) XXX_Merge(src proto.Message)
func (*NameServer_PriorityDomain) XXX_Unmarshal ¶
func (m *NameServer_PriorityDomain) XXX_Unmarshal(b []byte) error
type Server ¶ added in v1.13.1
type Server struct {
sync.Mutex
// contains filtered or unexported fields
}
Server is a DNS rely server.
func New ¶
func New(ctx context.Context, config *Config) (*Server, error)
New creates a new DNS server with given configuration.
func (*Server) LookupIP ¶
func (s *Server) LookupIP(domain string) ([]net.IP, error)
LookupIP implements dns.Client.
func (*Server) LookupIPv4 ¶
func (s *Server) LookupIPv4(domain string) ([]net.IP, error)
LookupIPv4 implements dns.IPv4Lookup.
func (*Server) LookupIPv6 ¶
func (s *Server) LookupIPv6(domain string) ([]net.IP, error)
LookupIPv6 implements dns.IPv6Lookup.
type StaticHosts ¶
type StaticHosts struct {
// contains filtered or unexported fields
}
StaticHosts represents static domain-ip mapping in DNS server.
func NewStaticHosts ¶
func NewStaticHosts(hosts []*Config_HostMapping, legacy map[string]*net.IPOrDomain) (*StaticHosts, error)
NewStaticHosts creates a new StaticHosts instance.
Click to show internal directories.
Click to hide internal directories.