chore: move tun init from tun2socks code to ipcserver

This commit is contained in:
Yaroslav Gurov
2026-02-02 14:29:06 +01:00
parent 2aa9716cc0
commit 2276e55fdf
5 changed files with 22 additions and 4 deletions

View File

@@ -61,6 +61,11 @@ ErrorCode XrayProtocol::startTun2Sock()
if (!m_primaryDNS.contains(amnezia::protocols::dns::amneziaDnsIp)) {
dnsAddr.push_back(QHostAddress(m_secondaryDNS));
}
#ifdef Q_OS_WIN
iface->createTun("tun2", amnezia::protocols::xray::defaultLocalAddr);
iface->updateResolvers("tun2", dnsAddr);
#endif
#ifdef Q_OS_MACOS
iface->createTun("utun22", amnezia::protocols::xray::defaultLocalAddr);
iface->updateResolvers("utun22", dnsAddr);
@@ -69,9 +74,11 @@ ErrorCode XrayProtocol::startTun2Sock()
iface->createTun("tun2", amnezia::protocols::xray::defaultLocalAddr);
iface->updateResolvers("tun2", dnsAddr);
#endif
if (m_routeMode == Settings::RouteMode::VpnAllSites) {
iface->routeAddList(m_vpnGateway, QStringList() << "0.0.0.0/0");
}
iface->StopRoutingIpv6();
#ifdef Q_OS_WIN
iface->updateResolvers("tun2", dnsAddr);
iface->enablePeerTraffic(m_xrayConfig);
#endif
setConnectionState(Vpn::ConnectionState::Connected);

View File

@@ -29,9 +29,7 @@ void IpcProcessTun2Socks::start()
QString XrayConStr = "socks5://127.0.0.1:10808";
#ifdef Q_OS_WIN
QStringList arguments({"-device", "tun://tun2?guid={081A8A84-8D12-4DF5-B8C4-396D5B0053E4}", "-proxy", XrayConStr, "-tun-post-up",
QString("cmd /c netsh interface ip set address name=\"tun2\" static %1 255.255.255.255")
.arg(amnezia::protocols::xray::defaultLocalAddr)});
QStringList arguments({"-device", "tun://tun2?guid={081A8A84-8D12-4DF5-B8C4-396D5B0053E4}", "-proxy", XrayConStr});
#endif
#ifdef Q_OS_LINUX
QStringList arguments({"-device", "tun://tun2", "-proxy", XrayConStr});

View File

@@ -66,6 +66,9 @@ void Router::resetIpStack()
bool Router::createTun(const QString &dev, const QString &subnet)
{
#ifdef Q_OS_WIN
return RouterWin::Instance().createTun(dev, subnet);
#endif
#ifdef Q_OS_LINUX
return RouterLinux::Instance().createTun(dev, subnet);
#endif

View File

@@ -308,6 +308,15 @@ void RouterWin::resetIpStack()
}
}
bool RouterWin::createTun(const QString &dev, const QString &subnet)
{
const QString command = QString("netsh interface ip set address name=\"tun2\" static %1 255.255.255.255").arg(subnet);
QProcess p;
p.start(command);
return p.waitForFinished();
}
void RouterWin::suspendWcmSvc(bool suspend)
{
if (suspend == m_suspended) return;

View File

@@ -45,6 +45,7 @@ public:
bool StartRoutingIpv6();
bool StopRoutingIpv6();
bool createTun(const QString &dev, const QString &subnet);
void suspendWcmSvc(bool suspend);
bool updateResolvers(const QString& ifname, const QList<QHostAddress>& resolvers);
bool restoreResolvers();