pre saved

This commit is contained in:
2026-03-06 00:12:55 +07:00
parent 592005cbac
commit 4a789dd128
11 changed files with 300 additions and 81 deletions
+35 -1
View File
@@ -1,5 +1,5 @@
use std::io;
use tracing::error;
use tracing::{error, info, warn};
use tun::{AsyncDevice, Configuration, DeviceReader, DeviceWriter, create_as_async};
pub struct Tun {
@@ -42,4 +42,38 @@ impl Tun {
let (writer, reader) = self.device.split()?;
Ok((writer, reader))
}
pub fn setup_linux_routes(&self) -> io::Result<()> {
use std::process::Command;
// Направляем трафик через IP, который слушает твой smoltcp Engine
// Предположим, smoltcp настроен на 10.0.0.2
let status = Command::new("ip")
.args(&["route", "add", "default", "via", "10.0.0.2", "dev", "tun0"])
.status()?;
if !status.success() {
return Err(io::Error::new(
io::ErrorKind::Other,
"Failed to setup routes",
));
}
Ok(())
}
pub fn clear_default_route(&self) -> io::Result<()> {
use std::process::Command;
info!("Removing existing default route...");
// Удаляем текущий маршрут по умолчанию
let status = Command::new("sudo")
.args(&["ip", "route", "del", "default"])
.status()?;
if !status.success() {
warn!("Could not delete default route (maybe it doesn't exist?)");
}
Ok(())
}
}