BIND-8/9 interface bug? Or is it FreeBSD?
Jeremy Chadwick
freebsd at jdc.parodius.com
Fri Apr 18 10:50:37 PDT 2003
Greetings. I've spoken with numerous other administrators
about the phenomenon I'm about to post, and the only answer
I've gotten so far is "Your box is broken" (how quaint). I
have two web/nameservers, both which exhibit this behaviour.
There's much mystery involved in this problem, so this post
will be long and verbose.
The problem: BIND-8 looks to be sending packets destined for
my RFC 1918 subnet (10.0.0.0/8) over my _WAN interface_.
Since I have overly anal firewall rules to block this sort-of
thing, what I see numerous times a day (at irregular intervals)
are _outgoing_ packets being blocked.
First, let's start with the machine NIC/network topology. There
are two physical NICs in my nameservers: one public interface
and one private, using entirely separate switches to segregate
the traffic. The public interface NIC has multiple IPs assigned
to it (IP aliases). Here's ifconfig:
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 64.71.184.170 netmask 0xffffffe0 broadcast 64.71.184.191
inet 64.71.184.171 netmask 0xffffffff broadcast 64.71.184.171
inet 64.71.184.172 netmask 0xffffffff broadcast 64.71.184.172
inet 64.71.184.173 netmask 0xffffffff broadcast 64.71.184.173
inet 64.71.184.175 netmask 0xffffffff broadcast 64.71.184.175
inet 64.71.184.176 netmask 0xffffffff broadcast 64.71.184.176
inet 64.71.184.177 netmask 0xffffffff broadcast 64.71.184.177
inet 64.71.184.178 netmask 0xffffffff broadcast 64.71.184.178
inet 64.71.184.179 netmask 0xffffffff broadcast 64.71.184.179
ether 00:e0:81:02:3c:88
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
fxp1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 10.0.0.1 netmask 0xff000000 broadcast 10.255.255.255
ether 00:e0:81:02:3c:89
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
My routing table:
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 64.71.184.161 UGSc 63 109070 fxp0
10 link#2 UC 3 0 fxp1
10.0.0.2 00:e0:81:04:69:e2 UHLW 8 1263590 fxp1 1053
10.0.0.128 00:04:ea:9c:2d:c1 UHLW 0 14822 fxp1 966
10.0.0.129 00:c0:05:01:60:fe UHLW 0 263 fxp1 1023
64.71.184.160/27 link#1 UC 5 0 fxp0
64.71.184.161 00:03:6b:50:1a:21 UHLW 62 0 fxp0 978
64.71.184.162 00:90:27:e0:0f:70 UHLW 0 2 fxp0 1053
64.71.184.170 00:e0:81:02:3c:88 UHLW 0 25583 lo0
64.71.184.171/32 link#1 UC 0 0 fxp0
64.71.184.172/32 link#1 UC 0 0 fxp0
64.71.184.173/32 link#1 UC 0 0 fxp0
64.71.184.175/32 link#1 UC 0 0 fxp0
64.71.184.176/32 link#1 UC 0 0 fxp0
64.71.184.177/32 link#1 UC 0 0 fxp0
64.71.184.178 00:e0:81:02:3c:88 UHLW 0 19203 lo0 =>
64.71.184.178/32 link#1 UC 1 0 fxp0
64.71.184.179/32 link#1 UC 0 0 fxp0
64.71.184.189 00:e0:81:04:69:e1 UHLW 0 99 fxp0
64.71.184.190 link#1 UHLW 1 12 fxp0
127.0.0.1 127.0.0.1 UH 2 246142 lo0
My firewalling rules are set up as follows (please note rule 400,
and the packet counters on rule 1005):
00100 580884 73786974 allow ip from any to any via lo0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 0 0 deny ip from 127.0.0.0/8 to any
00400 2507920 940337032 allow ip from any to any via fxp1
01000 0 0 deny log ip from any to 10.0.0.0/8 in recv fxp0
01005 195 52392 deny log ip from 10.0.0.0/8 to any out xmit fxp0
01100 0 0 deny log ip from any to 172.16.0.0/12 in recv fxp0
01105 0 0 deny log ip from 172.16.0.0/12 to any out xmit fxp0
01200 0 0 deny log ip from any to 192.168.0.0/16 in recv fxp0
01205 0 0 deny log ip from 192.168.0.0/16 to any out xmit fxp0
syslog security shows the following for the denied on rule 1005
(this is just a snippet):
Apr 18 08:53:45 pentarou /kernel: ipfw: 1005 Deny UDP 10.0.0.1:53 64.71.184.190:53 out via fxp0
Apr 18 09:35:13 pentarou /kernel: ipfw: 1005 Deny UDP 10.0.0.1:53 64.71.184.190:53 out via fxp0
Apr 18 10:01:21 pentarou /kernel: ipfw: 1005 Deny UDP 10.0.0.1:53 64.71.184.190:53 out via fxp0
syslog for named shows corresponding entries, verifying that BIND
does look to be sending things out on the wrong interface (the
entries below report Permission denied due to my firewalling
rules above):
Apr 18 08:53:45 pentarou named[49497]: ns_req: sendto([64.71.184.190].53): Permission denied
Apr 18 09:35:13 pentarou named[49497]: ns_req: sendto([64.71.184.190].53): Permission denied
Apr 18 10:01:21 pentarou named[49497]: ns_req: sendto([64.71.184.190].53): Permission denied
What is happening should not even be technically possible, if I
understand things correctly.
Applicable pieces of my BIND-8 configuration are as follows:
options {
query-source address 64.71.184.171;
transfer-source 10.0.0.1;
listen-on {
127.0.0.1;
10.0.0.1;
64.71.184.171;
};
};
Then, in zones I wish to slave via the WAN interface, I insert
the following into the zone block (example included):
zone "malkavian.com" in {
type slave;
notify no;
file "../zones/zone.malkavian.com";
allow-transfer { 216.66.32.72; };
masters { 216.66.32.72; };
transfer-source 64.71.184.171;
};
Non-WAN zones (which should be transferred over the private
interface) look to be as follows (I use TSIG just because):
zone "deltaplayer.com" in {
type master;
file "../zones/zone.deltaplayer.com";
allow-transfer { key pentarou-gabriel-LAN; };
};
I'd also like to throw in the fact that I have tried BIND-9
on this exact setup, adding "notify-source" entries where
appropriate, and I _still witnessed the same behaviour_ (and
on a much larger scale none the less!).
Finally, here's the twist which makes absolutely no sense
to me what-so-ever:
To try and find out what sort-of packets were being sent
across the WAN with a src address of 10.0.0.1, I ran tcpdump
as follows, and went to bed for about 8 hours:
$ tcpdump -p -ifxp0 -l -n -s8192 -X "src net 10.0.0.0/8"
During those 8 hours, ipfw reported numerous outgoing packets
being blocked (rule 1005) -- but tcpdump showed _absolutely
nothing_.
I'd _REALLY_ love to get to the bottom of this, as there is
obviously a bug somewhere, and I have a feeling this kind-of
issue could easily become one of folks saying "BIND is buggy"
and the ISC folks saying "FreeBSD is broken."
Advice/comments/questions would be greatly appreciated, as
I'm extremely frustrated with this entire situation, and not
sure where to turn.
Thanks.
--
| Jeremy Chadwick jdc at parodius.com |
| Parodius Networking http://www.parodius.com/ |
| UNIX Systems Administrator Mountain View, CA, USA |
| Making life hard for others since 1977. |
More information about the freebsd-net
mailing list