diff --git a/vnt/src/handle/tun_tap/mod.rs b/vnt/src/handle/tun_tap/mod.rs index 8659e18..eab26af 100644 --- a/vnt/src/handle/tun_tap/mod.rs +++ b/vnt/src/handle/tun_tap/mod.rs @@ -101,6 +101,7 @@ pub fn base_handle( net_packet.set_source(src_ip); net_packet.set_destination(dest_ip); if dest_ip == current_device.virtual_gateway { + // 发到网关的加密方式不一样,要单独处理 if protocol == Protocol::Icmp { net_packet.set_gateway_flag(true); server_cipher.encrypt_ipv4(&mut net_packet)?; @@ -109,16 +110,9 @@ pub fn base_handle( return Ok(()); } if dest_ip.is_multicast() { - match protocol { - Protocol::Udp => { - //当作广播处理 - net_packet.set_destination(Ipv4Addr::BROADCAST); - client_cipher.encrypt_ipv4(&mut net_packet)?; - broadcast(server_cipher, context, &mut net_packet, ¤t_device)?; - } - _ => {} - } - return Ok(()); + //当作广播处理 + dest_ip = Ipv4Addr::BROADCAST; + net_packet.set_destination(Ipv4Addr::BROADCAST); } if dest_ip.is_broadcast() || current_device.broadcast_ip == dest_ip { // 广播 发送到直连目标 @@ -149,6 +143,5 @@ pub fn base_handle( proxy_map.send_handle(&mut ipv4_packet)?; } client_cipher.encrypt_ipv4(&mut net_packet)?; - //优先发到直连到地址 context.send_ipv4_by_id(net_packet.buffer(), &dest_ip, current_device.connect_server) }