Kernel eats up DNS requests ...
Maybe I'm stupid, but this problem I never had before.
I use a Debian Etch as a router, having 5 interfaces. eth0 and eth3 for wired stuff, ppp0 for DSL, ath0 and ath1 as wifi access points. The ones in question are ath0 (NET-A) and eth0 (NET-B).
What I want to do is giving all clients NET-A access to all services in NET-B and the Internet, using the DNS server in NET-B. During my tests, I stripped down the firewall completely, so all traffic is allowed from B to A and reverse. I can ping all hosts in the other networks, trigger tcp connections and so on.
The problem is that normal UDP dns requests time out, doing them in TCP works fine. I can't find the reason why UDP is not working.
iptables-save shows that all tables accept all packets as default.
Then on the router I do a tcpdump on ath0 and run the following on a machine in NET-A:
echo huhu | netcat -u DNS-IN-NET-B 50
echo huhu | netcat -u DNS-IN-NET-B 53
echo huhu | netcat -u DNS-IN-NET-B 55
echo huhu | netcat -u DNS-IN-NET-B 1000
echo huhu | netcat -u DNS-IN-NET-B 5000
The dump shows all packets arriving at the interface.
If I do the same, dumping eth0, I can see all packets, but not the one going to port 53.
So somewhere these packets get lost and I really can't think about a reason.
Any ideas are welcome :)