cliet tun core
This commit is contained in:
+39
-19
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user