Skip to main content

DnsFilter

Struct DnsFilter 

Source
pub struct DnsFilter { /* private fields */ }
Expand description

DNS leak protection filter.

Intercepts DNS queries, checks the blocklist and cache, and decides whether to forward through the tunnel or block.

Implementations§

Source§

impl DnsFilter

Source

pub fn new(config: DnsConfig) -> Self

Create a new DNS filter with the given config.

Source

pub fn is_dns_packet(data: &[u8]) -> bool

Returns true if a raw UDP payload looks like a DNS packet.

Checks minimum length and QR/opcode field sanity.

Source

pub fn decide(&mut self, domain: &str, query_type: &DnsQueryType) -> DnsAction

Decide what to do with a DNS query for the given domain.

Checks in order: cache → blocklist → split DNS → forward.

Source

pub fn cache_response(&mut self, domain: &str, addr: IpAddr)

Cache a DNS response for a domain.

Source

pub fn is_blocked(&self, domain: &str) -> bool

Returns true if the domain is in the blocklist.

Supports wildcard suffix matching: blocking “ads.com” also blocks “sub.ads.com”.

Source

pub fn is_split_dns(&self, domain: &str) -> bool

Returns true if the domain should use split DNS (bypass tunnel).

Source

pub fn block_domain(&mut self, domain: &str)

Add a domain to the blocklist at runtime.

Source

pub fn add_split_domain(&mut self, domain: &str)

Add a split DNS domain at runtime.

Source

pub fn primary_upstream(&self) -> Option<&str>

Get the first upstream DNS server address.

Source

pub fn evict_expired(&mut self)

Remove expired entries from the cache.

Source

pub fn clear_cache(&mut self)

Clear the entire DNS cache.

Source

pub fn cache_size(&self) -> usize

Returns the number of entries currently in the cache.

Source

pub fn total_intercepted(&self) -> u64

Returns total queries intercepted.

Source

pub fn total_blocked(&self) -> u64

Returns total queries blocked.

Source

pub fn total_cache_hits(&self) -> u64

Returns total cache hits.

Source

pub fn total_forwarded(&self) -> u64

Returns total queries forwarded through tunnel.

Source

pub fn config(&self) -> &DnsConfig

Returns a reference to the config.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more