mirror of
https://github.com/tun2proxy/tun2proxy.git
synced 2025-04-23 23:39:10 +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)
|
||||
}
|
||||
|
||||
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> {
|
||||
if message.response_code() != ResponseCode::NoError {
|
||||
return Err(format!("{:?}", message.response_code()));
|
||||
|
|
|
@ -771,9 +771,17 @@ impl<'a> TunToProxy<'a> {
|
|||
let buf = buf[..packet_size].to_vec();
|
||||
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
|
||||
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(());
|
||||
|
|
Loading…
Add table
Reference in a new issue