cliet tun core

This commit is contained in:
2026-03-05 19:55:05 +07:00
parent 9cc9b75123
commit 592005cbac
20 changed files with 525 additions and 2401 deletions
+39 -19
View File
@@ -1,34 +1,54 @@
use netrunner_client::{stack::NetStack, tun::TunBuilder};
use netrunner_client::{tun::engine::Engine, tun::tun::Tun};
use netrunner_common::{
logger_init,
proxy::{connection::connection::ConnectionRole, network::Network},
};
use tokio::io::{AsyncReadExt, AsyncWriteExt};
use smoltcp::{iface::Config, phy::DeviceCapabilities};
use tracing::{error, info};
#[tokio::main]
async fn main() {
// 1. Инициализируем систему логирования
logger_init();
info!("Initializing NetRunner Stack...");
let tun_device = Tun::create(|config| {
config
.address((10, 0, 0, 1))
.netmask((255, 255, 255, 0))
.up();
})
.expect("Failed to initialize TUN device");
let net = Network::new(8080, ConnectionRole::Client, Some("0.0.0.0:4443".into()));
info!("TUN interface is UP: 10.0.0.1/24");
let muxer = match net.initialize_client_tunnel().await {
Ok(m) => m,
Err(e) => {
error!("Failed to initialize global tunnel: {}", e);
return;
}
};
let config = Config::new(smoltcp::wire::HardwareAddress::Ip);
let mut net_handle = {
let muxer_for_net = muxer.clone();
tokio::spawn(async move {
info!("SOCKS5 server starting on 127.0.0.1:8080");
net.run_with_muxer(muxer_for_net).await;
})
};
let mut caps = DeviceCapabilities::default();
let remote_address: String = "127.0.0.1:4443".into();
caps.max_transmission_unit = 1500;
caps.medium = smoltcp::phy::Medium::Ip;
let mut net_stack = NetStack::new(muxer);
let network = Network::new(8080, ConnectionRole::Client, Some(remote_address));
loop {}
let socks_addr = network.get_self_local_address();
// 2. ВЫНОСИМ СЕТЬ В ОТДЕЛЬНЫЙ ЦИКЛ
// Это запустит SOCKS5 сервер и TLS туннель параллельно движку
tokio::spawn(async move {
info!("Network thread started");
network.run().await;
});
let mut engine = Engine::new(config, caps, socks_addr);
engine.add_address(smoltcp::wire::IpCidr::new(
smoltcp::wire::IpAddress::v4(10, 0, 0, 2),
24,
));
info!("Stack IP initialized: 10.0.0.2");
// 5. Запуск
info!("Engine starting process loop...");
engine.run(tun_device).await;
}