Clarify Tun2socks runtime constants

Signed-off-by: Loren Eteval <loren.eteval@proton.me>
This commit is contained in:
Loren Eteval
2026-08-12 12:20:17 +08:00
parent fedac071f6
commit e1ed220239
3 changed files with 43 additions and 34 deletions
+31 -24
View File
@@ -178,7 +178,9 @@ class CoreManager(Mixins.CleanupOnExit):
if not proxyModeOnly and SystemRuntime.isTUNMode() and not pluginTUN:
if PLATFORM == 'Windows':
# cleanup first
SystemRoutingTable.delete('0.0.0.0', APPLICATION_TUN_GATEWAY_ADDRESS)
SystemRoutingTable.delete(
'0.0.0.0', APPLICATION_TUN2SOCKS_GATEWAY_ADDRESS
)
# Handle user defined settings
userGateway, userInterfaceIP = (
@@ -207,7 +209,7 @@ class CoreManager(Mixins.CleanupOnExit):
defaultGateway = list(
# Filter TUN Gateway
filter(
lambda x: x != APPLICATION_TUN_GATEWAY_ADDRESS,
lambda x: x != APPLICATION_TUN2SOCKS_GATEWAY_ADDRESS,
defaultGateway,
)
)
@@ -254,13 +256,13 @@ class CoreManager(Mixins.CleanupOnExit):
tcpAutoTuning = False
if PLATFORM != 'Linux':
interfaceArg = APPLICATION_TUN_NETWORK_INTERFACE_NAME
interfaceArg = APPLICATION_TUN2SOCKS_NETWORK_INTERFACE_NAME
else:
interfaceArg = interface
startTUN = functools.partial(
tun.start,
APPLICATION_TUN_DEVICE_NAME,
APPLICATION_TUN2SOCKS_DEVICE_NAME,
interfaceArg,
'error',
f'socks5://{configcopy.socksProxy()}',
@@ -333,7 +335,7 @@ class CoreManager(Mixins.CleanupOnExit):
if PLATFORM == 'Windows':
if not self.waitForTUNDeviceBroughtUp(
SystemRoutingTable.WIN32IpconfigFindContent,
APPLICATION_TUN_DEVICE_NAME,
APPLICATION_TUN2SOCKS_DEVICE_NAME,
):
return abortStart()
@@ -380,7 +382,7 @@ class CoreManager(Mixins.CleanupOnExit):
userTunInterfaceDNS = userTunAdapterInterfaceDNS()
if userTunInterfaceDNS == '':
userTunInterfaceDNS = APPLICATION_TUN_INTERFACE_DNS_ADDRESS
userTunInterfaceDNS = APPLICATION_TUN2SOCKS_INTERFACE_DNS_ADDRESS
else:
logger.info(
f'got user defined TUN settings. '
@@ -389,14 +391,14 @@ class CoreManager(Mixins.CleanupOnExit):
SystemRoutingTable.addRelations()
SystemRoutingTable.WIN32SetInterfaceDNS(
APPLICATION_TUN_DEVICE_NAME,
APPLICATION_TUN2SOCKS_DEVICE_NAME,
userTunInterfaceDNS,
False,
)
SystemRoutingTable.setDeviceGateway(
APPLICATION_TUN_DEVICE_NAME,
APPLICATION_TUN_IP_ADDRESS,
APPLICATION_TUN_GATEWAY_ADDRESS,
APPLICATION_TUN2SOCKS_DEVICE_NAME,
APPLICATION_TUN2SOCKS_IP_ADDRESS,
APPLICATION_TUN2SOCKS_GATEWAY_ADDRESS,
)
SystemRoutingTable.WIN32FlushDNSCache()
@@ -407,7 +409,7 @@ class CoreManager(Mixins.CleanupOnExit):
'198.18.0.0/15',
]:
SystemRoutingTable.Relations.append(
[address, APPLICATION_TUN_GATEWAY_ADDRESS]
[address, APPLICATION_TUN2SOCKS_GATEWAY_ADDRESS]
)
servers = SystemRoutingTable.DarwinGetDNSServers()
@@ -423,7 +425,7 @@ class CoreManager(Mixins.CleanupOnExit):
userTunInterfaceDNS = userTunAdapterInterfaceDNS()
if userTunInterfaceDNS == '':
userTunInterfaceDNS = APPLICATION_TUN_INTERFACE_DNS_ADDRESS
userTunInterfaceDNS = APPLICATION_TUN2SOCKS_INTERFACE_DNS_ADDRESS
else:
logger.info(
f'got user defined TUN settings. '
@@ -437,9 +439,9 @@ class CoreManager(Mixins.CleanupOnExit):
)
SystemRoutingTable.setDeviceGateway(
APPLICATION_TUN_DEVICE_NAME,
APPLICATION_TUN_IP_ADDRESS,
APPLICATION_TUN_GATEWAY_ADDRESS,
APPLICATION_TUN2SOCKS_DEVICE_NAME,
APPLICATION_TUN2SOCKS_IP_ADDRESS,
APPLICATION_TUN2SOCKS_GATEWAY_ADDRESS,
)
SystemRoutingTable.addRelations()
@@ -448,31 +450,36 @@ class CoreManager(Mixins.CleanupOnExit):
def _linuxCleanup():
"""Handle linux cleanup for the core manager."""
SystemRoutingTable.LinuxDeleteTUNDevice(APPLICATION_TUN_DEVICE_NAME)
SystemRoutingTable.LinuxDeleteTUNDevice(
APPLICATION_TUN2SOCKS_DEVICE_NAME
)
tun.cleanup = functools.partial(_linuxCleanup)
if SystemRoutingTable.LinuxFindTUNDevice(APPLICATION_TUN_DEVICE_NAME):
if SystemRoutingTable.LinuxFindTUNDevice(
APPLICATION_TUN2SOCKS_DEVICE_NAME
):
logger.info(
f'find TUN device {APPLICATION_TUN_DEVICE_NAME} success. '
f'find TUN device {APPLICATION_TUN2SOCKS_DEVICE_NAME} success. '
f'Will not try to bring up TUN device again'
)
commandBringUpTUN = ''
else:
logger.info(
f'find TUN device {APPLICATION_TUN_DEVICE_NAME} failed. '
f'find TUN device {APPLICATION_TUN2SOCKS_DEVICE_NAME} failed. '
f'Will try to bring up TUN device'
)
commandBringUpTUN = (
f'ip tuntap add mode tun dev {APPLICATION_TUN_DEVICE_NAME}\n'
f'ip addr add 10.10.10.10/24 dev {APPLICATION_TUN_DEVICE_NAME}\n'
f'ip link set dev {APPLICATION_TUN_DEVICE_NAME} up'
f'ip tuntap add mode tun dev {APPLICATION_TUN2SOCKS_DEVICE_NAME}\n'
f'ip addr add 10.10.10.10/24 dev {APPLICATION_TUN2SOCKS_DEVICE_NAME}\n'
f'ip link set dev {APPLICATION_TUN2SOCKS_DEVICE_NAME} up'
)
commandAddDefaultRoute = (
f'ip route add default dev {APPLICATION_TUN_DEVICE_NAME} metric 5'
f'ip route add default dev {APPLICATION_TUN2SOCKS_DEVICE_NAME} '
'metric 5'
)
def route(source, destination) -> str:
@@ -514,7 +521,7 @@ class CoreManager(Mixins.CleanupOnExit):
if not self.waitForTUNDeviceBroughtUp(
SystemRoutingTable.LinuxFindTUNDevice,
APPLICATION_TUN_DEVICE_NAME,
APPLICATION_TUN2SOCKS_DEVICE_NAME,
):
return abortStart()
+9 -9
View File
@@ -95,23 +95,23 @@ if PLATFORM == 'Windows':
CORE_CHECK_ALIVE_INTERVAL = 2500
if PLATFORM == 'Windows':
APPLICATION_TUN_DEVICE_NAME = APPLICATION_NAME
APPLICATION_TUN2SOCKS_DEVICE_NAME = APPLICATION_NAME
elif PLATFORM == 'Darwin':
APPLICATION_TUN_DEVICE_NAME = 'utun777'
APPLICATION_TUN2SOCKS_DEVICE_NAME = 'utun777'
elif PLATFORM == 'Linux':
APPLICATION_TUN_DEVICE_NAME = 'utun777'
APPLICATION_TUN2SOCKS_DEVICE_NAME = 'utun777'
else:
APPLICATION_TUN_DEVICE_NAME = ''
APPLICATION_TUN2SOCKS_DEVICE_NAME = ''
APPLICATION_TUN_NETWORK_INTERFACE_NAME = 'en0' if PLATFORM == 'Darwin' else ''
APPLICATION_TUN_GATEWAY_ADDRESS = '10.0.68.1'
APPLICATION_TUN2SOCKS_NETWORK_INTERFACE_NAME = 'en0' if PLATFORM == 'Darwin' else ''
APPLICATION_TUN2SOCKS_GATEWAY_ADDRESS = '10.0.68.1'
if PLATFORM == 'Windows':
APPLICATION_TUN_IP_ADDRESS = '10.0.68.10'
APPLICATION_TUN2SOCKS_IP_ADDRESS = '10.0.68.10'
else:
APPLICATION_TUN_IP_ADDRESS = APPLICATION_TUN_GATEWAY_ADDRESS
APPLICATION_TUN2SOCKS_IP_ADDRESS = APPLICATION_TUN2SOCKS_GATEWAY_ADDRESS
APPLICATION_TUN_INTERFACE_DNS_ADDRESS = '1.1.1.1'
APPLICATION_TUN2SOCKS_INTERFACE_DNS_ADDRESS = '1.1.1.1'
ADMINISTRATOR_NAME = 'Administrator' if PLATFORM == 'Windows' else 'Superuser'
+3 -1
View File
@@ -690,7 +690,9 @@ class SystemRoutingTable:
"""Delete relations."""
if PLATFORM == 'Windows':
if len(SystemRoutingTable.Relations):
SystemRoutingTable.delete('0.0.0.0', APPLICATION_TUN_GATEWAY_ADDRESS)
SystemRoutingTable.delete(
'0.0.0.0', APPLICATION_TUN2SOCKS_GATEWAY_ADDRESS
)
for sourceIP, destinationIP in SystemRoutingTable.Relations[::-1]:
SystemRoutingTable.delete(sourceIP, destinationIP)