diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-08-16 10:23:37 +0200 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-08-16 10:23:37 +0200 |
commit | 95a6938f3a156e488ad74ba113b28cbd0d9c2398 (patch) | |
tree | 4b54d1dd51f9ae2afc5197a12efd2d58175c48ea | |
parent | d51ea3b2670651d4a1fffa2957aca8a22e3705e3 (diff) |
don't check source address for eligibility
This change allows IPv6 clients to use native, global addresses or link-local addresses to issue DNS queries through dnsd. It does not pose a security risk when combined with netfilterd since its ruleset blocks DNS traffic from the public internet. However a standalone instance is potentially vulnerable to DNS reflection / amplification unless mitigated externally.
-rw-r--r-- | Cargo.lock | 10 | ||||
-rw-r--r-- | Cargo.toml | 1 | ||||
-rw-r--r-- | src/main.rs | 25 |
3 files changed, 0 insertions, 36 deletions
@@ -671,21 +671,11 @@ dependencies = [ "dns-message-parser", "notify", "rsdsl_dhcp4d", - "rsdsl_he_config", "serde_json", "thiserror", ] [[package]] -name = "rsdsl_he_config" -version = "0.1.0" -source = "git+https://github.com/rsdsl/he_config.git#602b64314e53db90923a32c93ebe95c12db69d4c" -dependencies = [ - "ipnet", - "serde", -] - -[[package]] name = "rsdsl_ip_config" version = "0.2.2" source = "git+https://github.com/rsdsl/ip_config.git#3239a5eeef22de4c50d4d00a9f51bebb5207633c" @@ -11,6 +11,5 @@ bytes = "1.4.0" dns-message-parser = "0.7.0" notify = "5.1.0" rsdsl_dhcp4d = { git = "https://github.com/rsdsl/dhcp4d.git", version = "0.1.6" } -rsdsl_he_config = { git = "https://github.com/rsdsl/he_config.git", version = "0.1.0" } serde_json = "1.0" thiserror = "1.0" diff --git a/src/main.rs b/src/main.rs index 890001d..4afba59 100644 --- a/src/main.rs +++ b/src/main.rs @@ -15,7 +15,6 @@ use dns_message_parser::{Dns, Flags, Opcode, RCode}; use notify::event::{AccessKind, AccessMode, CreateKind}; use notify::{Event, EventKind, RecursiveMode, Watcher}; use rsdsl_dhcp4d::lease::Lease; -use rsdsl_he_config::{Config, UsableConfig}; const UPSTREAM: &str = "8.8.8.8:53"; @@ -84,10 +83,6 @@ fn read_leases(cache: Arc<RwLock<Vec<Lease>>>) -> Result<()> { fn main() -> Result<()> { println!("init"); - let mut file = File::open("/data/he6in4.conf")?; - let he: Config = serde_json::from_reader(&mut file)?; - let he: UsableConfig = he.into(); - let leases = Arc::new(RwLock::new(Vec::new())); read_leases(leases.clone())?; @@ -104,26 +99,6 @@ fn main() -> Result<()> { let (n, raddr) = sock.recv_from(&mut buf)?; let buf = &buf[..n]; - let is_local = match raddr.ip() { - IpAddr::V4(addr) => addr.is_private() || addr.is_loopback(), - IpAddr::V6(addr) => { - he.tn64.contains(&addr) - || he.rt64.contains(&addr) - || he.rt48.contains(&addr) - || addr.is_loopback() - || if let Some(addr) = addr.to_ipv4_mapped() { - addr.is_private() || addr.is_loopback() - } else { - false - } - } - }; - - if !is_local { - println!("drop wan pkt from {}", raddr); - continue; - } - let sock2 = sock.try_clone()?; let buf = buf.to_vec(); let leases3 = leases.clone(); |