Skip to content

Commit 2fbdfe9

Browse files
committed
增加绑定网卡
1 parent 7901407 commit 2fbdfe9

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

vnt/src/core/conn.rs

+12-4
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ use crate::channel::context::ChannelContext;
1212
use crate::channel::idle::Idle;
1313
use crate::channel::punch::{NatInfo, Punch};
1414
use crate::channel::sender::IpPacketSender;
15+
use crate::channel::socket::LocalInterface;
1516
use crate::channel::{init_channel, init_context, Route, RouteKey};
1617
use crate::cipher::Cipher;
1718
#[cfg(feature = "server_encrypt")]
@@ -29,7 +30,7 @@ use crate::tun_tap_device::tun_create_helper::{DeviceAdapter, TunDeviceHelper};
2930
use crate::tun_tap_device::vnt_device::DeviceWrite;
3031
use crate::util::limit::TrafficMeterMultiAddress;
3132
use crate::util::{Scheduler, StopManager};
32-
use crate::{nat, VntCallback};
33+
use crate::{channel, nat, VntCallback};
3334

3435
#[derive(Clone)]
3536
pub struct Vnt {
@@ -137,9 +138,16 @@ impl VntInner {
137138
} else {
138139
nat::local_ipv4()
139140
};
140-
141-
let default_interface = config.local_interface.clone();
142-
log::info!("default_interface = {:?}", default_interface);
141+
let default_interface = if config.in_ips.is_empty() {
142+
//没有改变路由,不需要绑定网卡
143+
LocalInterface::default()
144+
} else {
145+
//vnt的流量都走这个接口
146+
let default_interface =
147+
channel::socket::get_best_interface(local_ipv4.unwrap_or(Ipv4Addr::UNSPECIFIED))?;
148+
log::info!("default_interface = {:?}", default_interface);
149+
default_interface
150+
};
143151

144152
//基础信息
145153
let config_info = BaseConfigInfo::new(

0 commit comments

Comments
 (0)