兼容Android环境运行导致无法解析DNS问题,修改默认UDP队列长度从128到1024

This commit is contained in:
wenyifan 2022-08-14 12:36:36 +08:00
parent 9d2210368c
commit af51714e49
5 changed files with 34 additions and 11 deletions

View File

@ -25,6 +25,10 @@ Evan 增强版特性
* HTTP CONNECT方法支持自定义Host(常用于免流混淆)
- 例子: 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
* 兼容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参数不解码后发送问题
初步防检测防杀毒处理脚本
------

View File

@ -174,6 +174,9 @@ func (c *Chain) dialWithOptions(ctx context.Context, network, address string, op
}
default:
}
if DefaultExternalResolver != nil && ipAddr == address {
ipAddr = c.resolve(ipAddr, DefaultExternalResolver, options.Hosts)
}
d := &net.Dialer{
Timeout: timeout,
Control: controlFunction,

View File

@ -1,10 +1,12 @@
package main
import (
"context"
"crypto/tls"
"errors"
"flag"
"fmt"
"net"
"net/http"
"os"
"runtime"
@ -35,14 +37,15 @@ func init() {
flag.StringVar(&configureFile, "C", "", "configure file")
flag.BoolVar(&baseCfg.Debug, "D", false, "enable debug log")
flag.BoolVar(&printVersion, "V", false, "print version")
flag.StringVar(&baseCfg.ExternalResolver, "NS", "", "External DNS Server")
if pprofEnabled {
flag.StringVar(&pprofAddr, "P", ":6060", "profiling HTTP server address")
}
flag.Parse()
if printVersion {
fmt.Fprintf(os.Stdout, "gost %s (%s %s/%s)\nEnhanced:\n%s\n",
gost.Version, runtime.Version(), runtime.GOOS, runtime.GOARCH, gost.Enhanced)
fmt.Fprintf(os.Stdout, "gost %s (%s %s/%s)\n",
gost.Version, runtime.Version(), runtime.GOOS, runtime.GOARCH)
os.Exit(0)
}
@ -85,6 +88,17 @@ func main() {
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 {
log.Log(err)
os.Exit(1)

View File

@ -32,6 +32,7 @@ type route struct {
ChainNodes stringList
Retries int
Mark int
ExternalResolver string
}
func (r *route) parseChain() (*gost.Chain, error) {

11
gost.go
View File

@ -21,10 +21,6 @@ import (
// Version is the gost version.
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"
// Debug is a flag that enables the debug log.
@ -75,7 +71,7 @@ var (
// default udp node TTL in second for udp port forwarding.
defaultTTL = 60 * time.Second
defaultBacklog = 128
defaultQueueSize = 128
defaultQueueSize = 1024
)
var (
@ -89,6 +85,11 @@ var (
DefaultMTU = 1350
)
var (
DefaultExternalResolver Resolver
DefaultDNSServer = "114.114.114.114:53"
)
// SetLogger sets a new logger for internal log system.
func SetLogger(logger log.Logger) {
log.DefaultLogger = logger