mirror of
https://github.com/XTLS/Xray-core.git
synced 2024-08-22 20:56:26 +00:00
* DNS: add clientip for specific nameserver * Refactoring: DNS App * DNS: add DNS over QUIC support * Feat: add disableCache option for DNS * Feat: add queryStrategy option for DNS * Feat: add disableFallback & skipFallback option for DNS * Feat: DNS hosts support multiple addresses * Feat: DNS transport over TCP * DNS: fix typo & refine code * DNS: refine code * Add disableFallbackIfMatch dns option * Feat: routing and freedom outbound ignore Fake DNS Turn off fake DNS for request sent from Routing and Freedom outbound. Fake DNS now only apply to DNS outbound. This is important for Android, where VPN service take over all system DNS traffic and pass it to core. "UseIp" option can be used in Freedom outbound to avoid getting fake IP and fail connection. * Fix test * Fix dns return * Fix local dns return empty * Apply timeout to dns outbound * Update app/dns/config.go Co-authored-by: Loyalsoldier <10487845+loyalsoldier@users.noreply.github.com> Co-authored-by: Ye Zhihao <vigilans@foxmail.com> Co-authored-by: maskedeken <52683904+maskedeken@users.noreply.github.com> Co-authored-by: V2Fly Team <51714622+vcptr@users.noreply.github.com> Co-authored-by: CalmLong <37164399+calmlong@users.noreply.github.com> Co-authored-by: Shelikhoo <xiaokangwang@outlook.com> Co-authored-by: 秋のかえで <autmaple@protonmail.com> Co-authored-by: 朱聖黎 <digglife@gmail.com> Co-authored-by: rurirei <72071920+rurirei@users.noreply.github.com> Co-authored-by: yuhan6665 <1588741+yuhan6665@users.noreply.github.com> Co-authored-by: Arthur Morgan <4637240+badO1a5A90@users.noreply.github.com>
89 lines
2.0 KiB
Protocol Buffer
89 lines
2.0 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package xray.app.dns;
|
|
option csharp_namespace = "Xray.App.Dns";
|
|
option go_package = "github.com/xtls/xray-core/app/dns";
|
|
option java_package = "com.xray.app.dns";
|
|
option java_multiple_files = true;
|
|
|
|
import "common/net/address.proto";
|
|
import "common/net/destination.proto";
|
|
import "app/router/config.proto";
|
|
|
|
message NameServer {
|
|
xray.common.net.Endpoint address = 1;
|
|
bytes client_ip = 5;
|
|
bool skipFallback = 6;
|
|
|
|
message PriorityDomain {
|
|
DomainMatchingType type = 1;
|
|
string domain = 2;
|
|
}
|
|
|
|
message OriginalRule {
|
|
string rule = 1;
|
|
uint32 size = 2;
|
|
}
|
|
|
|
repeated PriorityDomain prioritized_domain = 2;
|
|
repeated xray.app.router.GeoIP geoip = 3;
|
|
repeated OriginalRule original_rules = 4;
|
|
}
|
|
|
|
enum DomainMatchingType {
|
|
Full = 0;
|
|
Subdomain = 1;
|
|
Keyword = 2;
|
|
Regex = 3;
|
|
}
|
|
|
|
enum QueryStrategy {
|
|
USE_IP = 0;
|
|
USE_IP4 = 1;
|
|
USE_IP6 = 2;
|
|
}
|
|
|
|
message Config {
|
|
// 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.
|
|
repeated xray.common.net.Endpoint NameServers = 1 [deprecated = true];
|
|
|
|
// NameServer list used by this DNS client.
|
|
repeated NameServer name_server = 5;
|
|
|
|
// Static hosts. Domain to IP.
|
|
// Deprecated. Use static_hosts.
|
|
map<string, xray.common.net.IPOrDomain> Hosts = 2 [deprecated = true];
|
|
|
|
// Client IP for EDNS client subnet. Must be 4 bytes (IPv4) or 16 bytes
|
|
// (IPv6).
|
|
bytes client_ip = 3;
|
|
|
|
message HostMapping {
|
|
DomainMatchingType type = 1;
|
|
string domain = 2;
|
|
|
|
repeated bytes ip = 3;
|
|
|
|
// ProxiedDomain indicates the mapped domain has the same IP address on this
|
|
// domain. Xray will use this domain for IP queries.
|
|
string proxied_domain = 4;
|
|
}
|
|
|
|
repeated HostMapping static_hosts = 4;
|
|
|
|
// Tag is the inbound tag of DNS client.
|
|
string tag = 6;
|
|
|
|
reserved 7;
|
|
|
|
// DisableCache disables DNS cache
|
|
bool disableCache = 8;
|
|
|
|
QueryStrategy query_strategy = 9;
|
|
|
|
bool disableFallback = 10;
|
|
bool disableFallbackIfMatch = 11;
|
|
}
|