浏览代码

Disable DF on direct outbound by default

世界 3 年之前
父节点
当前提交
a006627795
共有 4 个文件被更改,包括 20 次插入14 次删除
  1. 7 1
      common/dialer/default.go
  2. 0 2
      common/tls/ech_client.go
  3. 12 11
      option/outbound.go
  4. 1 0
      outbound/direct.go

+ 7 - 1
common/dialer/default.go

@@ -110,7 +110,13 @@ func NewDefault(router adapter.Router, options option.DialerOptions) *DefaultDia
 	if options.TCPFastOpen {
 		warnTFOOnUnsupportedPlatform.Check()
 	}
-	if !options.UDPFragment {
+	var udpFragment bool
+	if options.UDPFragment != nil {
+		udpFragment = *options.UDPFragment
+	} else {
+		udpFragment = options.UDPFragmentDefault
+	}
+	if !udpFragment {
 		dialer.Control = control.Append(dialer.Control, control.DisableUDPFragment())
 		listener.Control = control.Append(listener.Control, control.DisableUDPFragment())
 	}

+ 0 - 2
common/tls/ech_client.go

@@ -165,8 +165,6 @@ func newECHClient(router adapter.Router, serverAddress string, options option.Ou
 	return &echClientConfig{&tlsConfig}, nil
 }
 
-const typeHTTPS = 65
-
 func fetchECHClientConfig(router adapter.Router) func(ctx context.Context, serverName string) ([]cftls.ECHConfig, error) {
 	return func(ctx context.Context, serverName string) ([]cftls.ECHConfig, error) {
 		message := &mDNS.Msg{

+ 12 - 11
option/outbound.go

@@ -120,17 +120,18 @@ func (h *Outbound) UnmarshalJSON(bytes []byte) error {
 }
 
 type DialerOptions struct {
-	Detour         string         `json:"detour,omitempty"`
-	BindInterface  string         `json:"bind_interface,omitempty"`
-	BindAddress    *ListenAddress `json:"bind_address,omitempty"`
-	ProtectPath    string         `json:"protect_path,omitempty"`
-	RoutingMark    int            `json:"routing_mark,omitempty"`
-	ReuseAddr      bool           `json:"reuse_addr,omitempty"`
-	ConnectTimeout Duration       `json:"connect_timeout,omitempty"`
-	TCPFastOpen    bool           `json:"tcp_fast_open,omitempty"`
-	UDPFragment    bool           `json:"udp_fragment,omitempty"`
-	DomainStrategy DomainStrategy `json:"domain_strategy,omitempty"`
-	FallbackDelay  Duration       `json:"fallback_delay,omitempty"`
+	Detour             string         `json:"detour,omitempty"`
+	BindInterface      string         `json:"bind_interface,omitempty"`
+	BindAddress        *ListenAddress `json:"bind_address,omitempty"`
+	ProtectPath        string         `json:"protect_path,omitempty"`
+	RoutingMark        int            `json:"routing_mark,omitempty"`
+	ReuseAddr          bool           `json:"reuse_addr,omitempty"`
+	ConnectTimeout     Duration       `json:"connect_timeout,omitempty"`
+	TCPFastOpen        bool           `json:"tcp_fast_open,omitempty"`
+	UDPFragment        *bool          `json:"udp_fragment,omitempty"`
+	UDPFragmentDefault bool           `json:"-"`
+	DomainStrategy     DomainStrategy `json:"domain_strategy,omitempty"`
+	FallbackDelay      Duration       `json:"fallback_delay,omitempty"`
 }
 
 type ServerOptions struct {

+ 1 - 0
outbound/direct.go

@@ -35,6 +35,7 @@ type Direct struct {
 }
 
 func NewDirect(router adapter.Router, logger log.ContextLogger, tag string, options option.DirectOutboundOptions) (*Direct, error) {
+	options.UDPFragmentDefault = true
 	outbound := &Direct{
 		myOutboundAdapter: myOutboundAdapter{
 			protocol: C.TypeDirect,