mirror of
https://github.com/bolucat/Archive.git
synced 2025-12-24 13:28:37 +08:00
Update On Fri Aug 9 20:33:45 CEST 2024
This commit is contained in:
23
echo/examples/mptcp.json
Normal file
23
echo/examples/mptcp.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"log_level": "info",
|
||||
"relay_configs": [
|
||||
{
|
||||
"label": "client",
|
||||
"listen": "127.0.0.1:1234",
|
||||
"listen_type": "raw",
|
||||
"transport_type": "raw",
|
||||
"tcp_remotes": [
|
||||
"0.0.0.0:1235"
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "server",
|
||||
"listen": "127.0.0.1:1235",
|
||||
"listen_type": "raw",
|
||||
"transport_type": "raw",
|
||||
"tcp_remotes": [
|
||||
"0.0.0.0:5201"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -30,6 +30,7 @@ func newRawClient(cfg *conf.Config) (*RawClient, error) {
|
||||
cfg: cfg,
|
||||
dialer: &net.Dialer{Timeout: constant.DialTimeOut},
|
||||
}
|
||||
r.dialer.SetMultipathTCP(true)
|
||||
return r, nil
|
||||
}
|
||||
|
||||
@@ -59,7 +60,7 @@ func (raw *RawClient) HealthCheck(ctx context.Context, remote *lb.Node) error {
|
||||
|
||||
type RawServer struct {
|
||||
*baseTransporter
|
||||
lis *net.TCPListener
|
||||
lis net.Listener
|
||||
}
|
||||
|
||||
func newRawServer(base *baseTransporter) (*RawServer, error) {
|
||||
@@ -67,7 +68,9 @@ func newRawServer(base *baseTransporter) (*RawServer, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
lis, err := net.ListenTCP("tcp", addr)
|
||||
cfg := net.ListenConfig{}
|
||||
cfg.SetMultipathTCP(true)
|
||||
lis, err := cfg.Listen(context.TODO(), "tcp", addr.String())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -83,10 +86,15 @@ func (s *RawServer) Close() error {
|
||||
|
||||
func (s *RawServer) ListenAndServe() error {
|
||||
for {
|
||||
c, err := s.lis.AcceptTCP()
|
||||
c, err := s.lis.Accept()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
isMultipathTCP, err := c.(*net.TCPConn).MultipathTCP()
|
||||
if err != nil {
|
||||
s.l.Errorf("MultipathTCP error: %s", err.Error())
|
||||
}
|
||||
s.l.Debugf("isMultipathTCP: %b", isMultipathTCP)
|
||||
go func(c net.Conn) {
|
||||
defer c.Close()
|
||||
if err := s.RelayTCPConn(c, s.relayer.TCPHandShake); err != nil {
|
||||
|
||||
@@ -31,6 +31,13 @@ func buildXrayInstanceCfg(cfg *conf.Config) (*core.Config, error) {
|
||||
},
|
||||
}
|
||||
inbound.StreamSetting.TLSSettings.Certs = tlsConfigs
|
||||
if inbound.StreamSetting.SocketSettings != nil {
|
||||
inbound.StreamSetting.SocketSettings.TcpMptcp = true
|
||||
} else {
|
||||
inbound.StreamSetting.SocketSettings = &conf.SocketConfig{
|
||||
TcpMptcp: true,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
coreCfg, err := cfg.Build()
|
||||
|
||||
Reference in New Issue
Block a user