mirror of
https://github.com/2dust/v2rayN.git
synced 2026-11-10 06:25:00 +03:00
Replace protect-ss with protect-socks (#9052)
This commit is contained in:
@@ -62,16 +62,23 @@ public partial class CoreConfigSingboxService(CoreConfigContext context)
|
||||
|
||||
ret.Data = ApplyFullConfigTemplate();
|
||||
if (!context.AppConfig.TunModeItem.EnableLegacyProtect
|
||||
&& context.TunProtectSsPort is > 0 and <= 65535)
|
||||
&& context.TunProtectSocksPort is > 0 and <= 65535)
|
||||
{
|
||||
// Replace relay proxy outbound, avoid mux or other feature cause issue, and add a socks inbound for tun protect
|
||||
var relayProxyIndex = _coreConfig.outbounds.FindIndex(o => o.tag == Global.ProxyTag);
|
||||
_coreConfig.outbounds[relayProxyIndex] = new Outbound4Sbox()
|
||||
{
|
||||
type = Global.ProtocolTypes[EConfigType.SOCKS],
|
||||
tag = Global.ProxyTag,
|
||||
server = Global.Loopback,
|
||||
server_port = context.ProxyRelaySocksPort,
|
||||
};
|
||||
var ssInbound = new
|
||||
{
|
||||
type = "shadowsocks",
|
||||
tag = "tun-protect-ss",
|
||||
type = "socks",
|
||||
tag = "tun-protect-socks",
|
||||
listen = Global.Loopback,
|
||||
listen_port = context.TunProtectSsPort,
|
||||
method = "none",
|
||||
password = "none",
|
||||
listen_port = context.TunProtectSocksPort,
|
||||
};
|
||||
var directRule = new Rule4Sbox()
|
||||
{
|
||||
|
||||
@@ -345,14 +345,6 @@ public partial class CoreConfigSingboxService
|
||||
{
|
||||
try
|
||||
{
|
||||
// The synthetic TUN relay outbound talks to the local Xray shadowsocks relay.
|
||||
// Xray cannot terminate sing-box h2mux, so muxing here turns local relay traffic
|
||||
// into sp.mux.sing-box.arpa pseudo-destinations and breaks DNS over TUN.
|
||||
if (IsTunRelayProxyOutbound())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var muxEnabled = _node.MuxEnabled ?? _config.CoreBasicItem.MuxEnabled;
|
||||
if (muxEnabled && _config.Mux4SboxItem.Protocol.IsNotEmpty())
|
||||
{
|
||||
@@ -372,21 +364,6 @@ public partial class CoreConfigSingboxService
|
||||
}
|
||||
}
|
||||
|
||||
private bool IsTunRelayProxyOutbound()
|
||||
{
|
||||
if (!context.IsTunEnabled
|
||||
|| _node.ConfigType != EConfigType.Shadowsocks
|
||||
|| _node.Address != Global.Loopback
|
||||
|| _node.Port != context.ProxyRelaySsPort
|
||||
|| _node.Password != Global.None)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var protocolExtra = _node.GetProtocolExtra();
|
||||
return protocolExtra.SsMethod == Global.None;
|
||||
}
|
||||
|
||||
private void FillOutboundTls(Outbound4Sbox outbound)
|
||||
{
|
||||
try
|
||||
|
||||
Reference in New Issue
Block a user