Zone transfer over VPN
Michael De Roover
isc at nixmagic.com
Tue Sep 6 22:16:23 UTC 2022
Hello everyone,
I have currently 2 internal networks under my control, both of which have BIND
name servers in them. The "main" network uses the 192.168.10.0/24 subnet,
while the "satellite" network uses the 192.168.20.0/24 subnet. Following this,
I will refer to these as main and satellite. You may consider the satellite
network sort of like a road warrior setup, though both are fully-fledged
networks with hosts in them.
The main network has a set of two gateways with IP addresses 192.168.10.51,
and 192.168.10.52. They perform VRRP to each other, with floating IP
192.168.10.9. Both of them make a VPN connection to two VPS's using WireGuard.
The VPS's have IP ranges 10.8.2.0/24 and 10.8.3.0/24 respectively. Pretty much
all traffic that's relevant here (AXFR/IXFR on TCP 53) goes through the former.
The satellite network does the same thing, it also connects to the VPS's but
does not perform VRRP with another node. The gateway on the satellite network
uses IP address 192.168.20.1.
The name servers on these networks are 192.168.10.4, 192.168.10.5 and
192.168.10.6 on the main network, and 192.168.20.3 on the satellite network.
This is running on BIND 9.16.25 for Alpine on the main network, and BIND
9.11.5-P4-5.1+deb10u7-Debian for Debian on the satellite network. All of them
are running in LXC with bridged networking.
Now I would like to get both of these networks to share their local zones. So
in the name servers' configs I would initially declare an ACL for this and add
that to the zone entries, on the main network. This worked fine for those,
being in the same subnet. But once I tried to do the same on the satellite
network, BIND on the main network would see the zone transfer as coming from
192.168.10.51 or 192.168.10.52 -- instead of coming from 192.168.20.3 -- and
refuse it. The same is true the other way around, where the name server on the
satellite network sees zone transfers from the main network as coming from
192.168.20.1 instead.
In other words, only the first hop (or the last, depending on how you look at
it) is being considered, with zone transfers seemingly being expected to occur
from within the same subnet. Surely I'm not the only one who dealt with this?
If anything, I consider myself still a newbie. Is it possible to get BIND to
consider the original source of the zone transfer instead?
For now I have added an "external" ACL to these networks, and made the
respective local zones authorized to transfer from this ACL, which has the
gateways of their local networks in there. However, this means that anything
on the main network can transfer from the satellite network, and anything from
the satellite network can transfer from the main network. After all, the name
servers have no way to tell where it's really coming from. While everything on
these networks is owned or otherwise controlled to a reasonable extent by me,
I don't like this. In my book, this is a security issue. I think I need a
better solution for this.
Configuration-wise, this would be a snippet from ns1.lan on the main network
with the relevant bits.
acl external {
admin;
192.168.10.9;
192.168.10.51;
192.168.10.52;
};
; ...
zone "lan" {
type master;
file "/etc/bind/zones/fwd.lan.db";
allow-transfer { internal; external; };
};
zone "10.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/rev.lan.db";
allow-transfer { internal; external; };
};
The satellite network's name server has a similar configuration to this, but
the other way around.
I have skimmed over these articles so far, but couldn't find anything relevant
in them.
- https://kb.isc.org/docs/aa-00726
- https://www.zytrax.com/books/dns/ch7/xfer.html
Thank you so much for taking your time to read this, and thanks in advance for
any insights.
--
Met vriendelijke groet / Best regards,
Michael De Roover
More information about the bind-users
mailing list