buf sizes changes and socks5 remove to rawcast

This commit is contained in:
2026-03-26 15:50:41 +07:00
parent c51c086fbc
commit b0dc3fc0a4
13 changed files with 641 additions and 945 deletions
+8 -40
View File
@@ -6,9 +6,8 @@ mod tun;
use crate::tun::{routing::reset_platform_routing, tun::Tun};
use net::engine::{EngineBuilder, EngineConfig};
// Импортируем компоненты локального прокси
use netrunner_core::net::ConnectionRole;
use netrunner_core::net::network::Network;
// Импортируем глобальный конфиг сети
use netrunner_core::net::network::NetworkConfig;
use tokio_util::sync::CancellationToken;
#[tokio::main]
@@ -17,45 +16,18 @@ async fn main() -> anyhow::Result<()> {
info!("Initializing NetRunner Stack...");
let remote_address = "147.45.43.70:443".to_string();
let local_proxy_host = "127.0.0.1".to_string();
let local_proxy_port = 8080; // Локальный порт прокси
// Токен для управления жизненным циклом фоновых задач
let cancel_token = CancellationToken::new();
// ==================================================
// 1. ЗАПУСК ЛОКАЛЬНОГО ПРОКСИ (NETWORK)
// ==================================================
let proxy_token = cancel_token.clone();
let remote_addr_clone = remote_address.clone();
tokio::spawn(async move {
info!(
"Starting Local Proxy (Network) on {}:{}",
local_proxy_host, local_proxy_port
);
let network = Network::new(
local_proxy_host,
local_proxy_port,
ConnectionRole::Client,
Some(remote_addr_clone),
);
// Эта функция заблокирует поток, пока не сработает proxy_token
network.run(proxy_token).await;
info!("Local Proxy (Network) task stopped.");
});
// Даем локальному прокси немного времени на бинд порта и установку соединения
tokio::time::sleep(tokio::time::Duration::from_millis(100)).await;
// ==================================================
// 2. ИНИЦИАЛИЗАЦИЯ ДВИЖКА И TUN
// 1. ИНИЦИАЛИЗАЦИЯ ДВИЖКА И TUN
// ==================================================
let config = EngineConfig::new(&remote_address)
.with_cache_path(".")
.with_mtu(1350);
// ВАЖНО: Инициализируем глобальные настройки сети (MTU, размеры буферов Muxer'а)
NetworkConfig::init_global(config.mtu);
let tun_device = Tun::create(|tun_cfg| {
tun_cfg
.tun_name("netr0")
@@ -75,7 +47,7 @@ async fn main() -> anyhow::Result<()> {
.await;
// ==================================================
// 3. ГЛАВНЫЙ ЦИКЛ ENGINE
// 2. ГЛАВНЫЙ ЦИКЛ ENGINE
// ==================================================
match builder_result {
Ok((mut engine, tun)) => {
@@ -87,7 +59,6 @@ async fn main() -> anyhow::Result<()> {
},
_ = tokio::signal::ctrl_c() => {
info!("Ctrl+C received, shutting down...");
// Отменяем токен, чтобы Network.run завершился
cancel_token.cancel();
}
}
@@ -99,7 +70,7 @@ async fn main() -> anyhow::Result<()> {
}
// ==================================================
// 4. ОЧИСТКА РОУТИНГА
// 3. ОЧИСТКА РОУТИНГА
// ==================================================
info!("Restoring system routing...");
let addr: std::net::SocketAddr = remote_address.parse().expect("Invalid address format");
@@ -111,8 +82,5 @@ async fn main() -> anyhow::Result<()> {
info!("System routing restored successfully.");
}
// Даем таске Network время на graceful shutdown (чтобы сокеты успели закрыться)
tokio::time::sleep(tokio::time::Duration::from_millis(100)).await;
Ok(())
}