mirror of
https://github.com/tun2proxy/tun2proxy.git
synced 2025-04-24 15:56:03 +00:00
dns::remove_ipv6_entries
This commit is contained in:
parent
60b9683fac
commit
6439cc7b43
2 changed files with 15 additions and 1 deletions
|
@ -50,6 +50,12 @@ pub fn build_dns_response(mut request: Message, domain: &str, ip: IpAddr, ttl: u
|
||||||
Ok(request)
|
Ok(request)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn remove_ipv6_entries(message: &mut Message) {
|
||||||
|
message
|
||||||
|
.answers_mut()
|
||||||
|
.retain(|answer| !matches!(answer.data(), Some(RData::AAAA(_))));
|
||||||
|
}
|
||||||
|
|
||||||
pub fn extract_ipaddr_from_dns_message(message: &Message) -> Result<IpAddr, String> {
|
pub fn extract_ipaddr_from_dns_message(message: &Message) -> Result<IpAddr, String> {
|
||||||
if message.response_code() != ResponseCode::NoError {
|
if message.response_code() != ResponseCode::NoError {
|
||||||
return Err(format!("{:?}", message.response_code()));
|
return Err(format!("{:?}", message.response_code()));
|
||||||
|
|
|
@ -771,9 +771,17 @@ impl<'a> TunToProxy<'a> {
|
||||||
let buf = buf[..packet_size].to_vec();
|
let buf = buf[..packet_size].to_vec();
|
||||||
let header = UdpHeader::retrieve_from_stream(&mut &buf[..])?;
|
let header = UdpHeader::retrieve_from_stream(&mut &buf[..])?;
|
||||||
|
|
||||||
|
let buf = if info.dst.port() == 53 {
|
||||||
|
let mut message = dns::parse_data_to_dns_message(&buf[header.len()..], false)?;
|
||||||
|
dns::remove_ipv6_entries(&mut message); // TODO: Configurable
|
||||||
|
message.to_vec()?
|
||||||
|
} else {
|
||||||
|
buf[header.len()..].to_vec()
|
||||||
|
};
|
||||||
|
|
||||||
// Write to client
|
// Write to client
|
||||||
let src = state.udp_origin_dst.ok_or("udp address")?;
|
let src = state.udp_origin_dst.ok_or("udp address")?;
|
||||||
self.send_udp_packet_to_client(src, info.src, &buf[header.len()..])?;
|
self.send_udp_packet_to_client(src, info.src, &buf)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Ok(());
|
return Ok(());
|
||||||
|
|
Loading…
Add table
Reference in a new issue