兼容Android环境运行导致无法解析DNS问题,修改默认UDP队列长度从128到1024
This commit is contained in:
parent
9d2210368c
commit
af51714e49
@ -25,6 +25,10 @@ Evan 增强版特性
|
|||||||
* HTTP CONNECT方法支持自定义Host(常用于免流混淆)
|
* HTTP CONNECT方法支持自定义Host(常用于免流混淆)
|
||||||
- 例子: gost -L http://:8888 -F http://evan.run:80?host=cdn.dingding.com -F socks5://127.0.0.1:1080
|
- 例子: gost -L http://:8888 -F http://evan.run:80?host=cdn.dingding.com -F socks5://127.0.0.1:1080
|
||||||
* 修改默认User Agent为Google默认浏览器的UA,修改代理默认UA为nginx
|
* 修改默认User Agent为Google默认浏览器的UA,修改代理默认UA为nginx
|
||||||
|
* 兼容Android环境,针对Android环境下无法解析域名的问题(Android环境下默认使用114.114.114.114作为DNS,可使用启动参数-NS自定义)
|
||||||
|
- 例子: gost -L http://:8888 -F http://evan.run:80 -NS 114.114.114.114:53/udp
|
||||||
|
* 修复原版DNS解析的BUG
|
||||||
|
* 修复原版websocket协议中path参数不解码后发送问题
|
||||||
|
|
||||||
初步防检测防杀毒处理脚本
|
初步防检测防杀毒处理脚本
|
||||||
------
|
------
|
||||||
|
3
chain.go
3
chain.go
@ -174,6 +174,9 @@ func (c *Chain) dialWithOptions(ctx context.Context, network, address string, op
|
|||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
if DefaultExternalResolver != nil && ipAddr == address {
|
||||||
|
ipAddr = c.resolve(ipAddr, DefaultExternalResolver, options.Hosts)
|
||||||
|
}
|
||||||
d := &net.Dialer{
|
d := &net.Dialer{
|
||||||
Timeout: timeout,
|
Timeout: timeout,
|
||||||
Control: controlFunction,
|
Control: controlFunction,
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"errors"
|
"errors"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"runtime"
|
"runtime"
|
||||||
@ -35,14 +37,15 @@ func init() {
|
|||||||
flag.StringVar(&configureFile, "C", "", "configure file")
|
flag.StringVar(&configureFile, "C", "", "configure file")
|
||||||
flag.BoolVar(&baseCfg.Debug, "D", false, "enable debug log")
|
flag.BoolVar(&baseCfg.Debug, "D", false, "enable debug log")
|
||||||
flag.BoolVar(&printVersion, "V", false, "print version")
|
flag.BoolVar(&printVersion, "V", false, "print version")
|
||||||
|
flag.StringVar(&baseCfg.ExternalResolver, "NS", "", "External DNS Server")
|
||||||
if pprofEnabled {
|
if pprofEnabled {
|
||||||
flag.StringVar(&pprofAddr, "P", ":6060", "profiling HTTP server address")
|
flag.StringVar(&pprofAddr, "P", ":6060", "profiling HTTP server address")
|
||||||
}
|
}
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
if printVersion {
|
if printVersion {
|
||||||
fmt.Fprintf(os.Stdout, "gost %s (%s %s/%s)\nEnhanced:\n%s\n",
|
fmt.Fprintf(os.Stdout, "gost %s (%s %s/%s)\n",
|
||||||
gost.Version, runtime.Version(), runtime.GOOS, runtime.GOARCH, gost.Enhanced)
|
gost.Version, runtime.Version(), runtime.GOOS, runtime.GOARCH)
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,6 +88,17 @@ func main() {
|
|||||||
|
|
||||||
gost.DefaultTLSConfig = tlsConfig
|
gost.DefaultTLSConfig = tlsConfig
|
||||||
|
|
||||||
|
if baseCfg.ExternalResolver != "" {
|
||||||
|
gost.DefaultExternalResolver = parseResolver(baseCfg.ExternalResolver)
|
||||||
|
gost.DefaultExternalResolver.Init()
|
||||||
|
} else if os.Getenv("ANDROID_ROOT") != "" {
|
||||||
|
log.Logf("Android detected modify default DNS server to %v", gost.DefaultDNSServer)
|
||||||
|
net.DefaultResolver = &net.Resolver{Dial: func(ctx context.Context, network, address string) (net.Conn, error) {
|
||||||
|
d := net.Dialer{}
|
||||||
|
return d.DialContext(ctx, network, gost.DefaultDNSServer)
|
||||||
|
}, PreferGo: true}
|
||||||
|
}
|
||||||
|
|
||||||
if err := start(); err != nil {
|
if err := start(); err != nil {
|
||||||
log.Log(err)
|
log.Log(err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
|
@ -32,6 +32,7 @@ type route struct {
|
|||||||
ChainNodes stringList
|
ChainNodes stringList
|
||||||
Retries int
|
Retries int
|
||||||
Mark int
|
Mark int
|
||||||
|
ExternalResolver string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *route) parseChain() (*gost.Chain, error) {
|
func (r *route) parseChain() (*gost.Chain, error) {
|
||||||
|
11
gost.go
11
gost.go
@ -21,10 +21,6 @@ import (
|
|||||||
|
|
||||||
// Version is the gost version.
|
// Version is the gost version.
|
||||||
const Version = "2.11.2-EvanMod-v1.2.1"
|
const Version = "2.11.2-EvanMod-v1.2.1"
|
||||||
const Enhanced = "Add parameter sni for all tls\n" +
|
|
||||||
"Add parameter header=header.txt for custom header process\n" +
|
|
||||||
"Add parameter host for http connect\n" +
|
|
||||||
"Change default user agent to Chrome"
|
|
||||||
const ProxyAgent = "nginx"
|
const ProxyAgent = "nginx"
|
||||||
|
|
||||||
// Debug is a flag that enables the debug log.
|
// Debug is a flag that enables the debug log.
|
||||||
@ -75,7 +71,7 @@ var (
|
|||||||
// default udp node TTL in second for udp port forwarding.
|
// default udp node TTL in second for udp port forwarding.
|
||||||
defaultTTL = 60 * time.Second
|
defaultTTL = 60 * time.Second
|
||||||
defaultBacklog = 128
|
defaultBacklog = 128
|
||||||
defaultQueueSize = 128
|
defaultQueueSize = 1024
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -89,6 +85,11 @@ var (
|
|||||||
DefaultMTU = 1350
|
DefaultMTU = 1350
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
DefaultExternalResolver Resolver
|
||||||
|
DefaultDNSServer = "114.114.114.114:53"
|
||||||
|
)
|
||||||
|
|
||||||
// SetLogger sets a new logger for internal log system.
|
// SetLogger sets a new logger for internal log system.
|
||||||
func SetLogger(logger log.Logger) {
|
func SetLogger(logger log.Logger) {
|
||||||
log.DefaultLogger = logger
|
log.DefaultLogger = logger
|
||||||
|
Loading…
Reference in New Issue
Block a user