Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Samba] Samba4 with external bind - best practices?

648 views
Skip to first unread message

Elias Pereira

unread,
Jul 25, 2016, 3:40:03 PM7/25/16
to
Hello guys,

For those who already have an external DNS server on a separate machine,
how the best way to work with Samba4 ?

How to integrate this bind server with Samba configuration ways in relation
to dns (samba_internal/bind_dlz)
--
To unsubscribe from this list go to the following URL and read the
instructions: https://lists.samba.org/mailman/options/samba

Rowland penny

unread,
Jul 25, 2016, 4:00:02 PM7/25/16
to
On 25/07/16 20:12, Elias Pereira wrote:
> Hello guys,
>
> For those who already have an external DNS server on a separate machine,
> how the best way to work with Samba4 ?
>
> How to integrate this bind server with Samba configuration ways in relation
> to dns (samba_internal/bind_dlz)

As far as I am aware, the bind9 server has to be running on the DC if
you want to use bind_dlz. This is because the DNS zones are stored in AD.

I would suggest you create a sub domain of your main domain (this is
recommended anyway) i.e. if your main domain is called 'company.com',
create a sub domain called 'samba.company.com'. Use the sub domain for
your AD domain and forward anything outside the sub domain to your main
DNS servers.

Rowland

mathias dufresne

unread,
Jul 26, 2016, 4:40:03 AM7/26/16
to
Hi Elias,

Separating DNS and AD services:
It should be possible to have AD DNS server hosted on a non-DC server.
Samba Wiki explain we just have to include
"/var/lib/samba/private/named.conf" in Bind configuration. This library can
be replaced be one of those shipped with Bind, this library will need
configuration for it can deal with remote DC(s).
Please note I never tried that, 'cause I'm a lazy guy, but that should be
possible: Bind+DLZ seems to me to be meant for that kind of job.

One (or more) non-DC DNS server dealing with AD DNS servers:
That is more simple to achieve:
- just configure AD DNS service as you want (please note that few weeks ago
Samba's internal DNS server was still not able to work as multi-masters
which is needed to avoid SPOF in AD, so IMHO the only valid DNS backend is
bind+DLZ if you want high availability)
- add a new zone to your existing DNS server (the one which is not AD DC)
like that one:
----------------------------------------------------------------------------------------------
zone "ad.domain.tld" IN {
type forward;
forward only;
forwarders {
<ip of 1st DC>;
<ip of 2nd DC>;
....
<ip of Nth DC>;
};
};
----------------------------------------------------------------------------------------------
Restart your external non-DC Bind service and it should be able to resolve
one more zone: the one from your AD.
What is nice in that is you don't need to take in account _msdcs zone as it
is a sub zone of "ad.domain.tld", your external Bind will also forward
requests regarding _msdcs to AD servers.

I did not played with that for a relatively long time and I'm just coming
back from vacations, so I'm not sure if you would need to allow forwarding
and recursion on that non-DC DNS server. It could be necessary... Anyway as
this DNS should be meant to resolve Internet addresses in addition of your
local domain(s) recursion and forwarding should be accepted already...

Hoping this clarify DNS management a little bit and that helps you,

Mathias

Rowland penny

unread,
Jul 26, 2016, 7:30:03 AM7/26/16
to
The Samba wiki page:
https://wiki.samba.org/index.php/Configure_BIND_as_backend_for_Samba_AD

Has these lines:

* Since the BIND DLZ module accesses the AD database directly, BIND
for AD zones must be on the same machine.
* Because the BIND DLZ module uses the information already stored in
AD, you do not need to create any extra databases.

Or to put it another way, if you want to use bind_dlz, you must run
Bind9 on the DC and you do not need to create any zones (except the
reverse zone and you have to do this anyway)

Rowland

Elias Pereira

unread,
Jul 26, 2016, 2:50:03 PM7/26/16
to
Thanks Mathias and Rowland for the answers.

Rowland,

You said: “Use the sub domain for your AD domain and forward anything
outside the sub domain to your main DNS servers.”

This forward I do on the settings of the bind in Samba4?

Something like:

acl goodclients {
192.168.1.0/24;
localhost;
localnets;
};

options {
directory "/var/cache/bind";

recursion yes;
allow-query { goodclients; };

forwarders {
192.168.1.15; # EXTERNAL DNS SERVER
};
forward only;

dnssec-validation auto;

auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
--
Elias Pereira

Rowland penny

unread,
Jul 26, 2016, 3:10:04 PM7/26/16
to
On 26/07/16 19:42, Elias Pereira wrote:
> Thanks Mathias and Rowland for the answers.
>
> Rowland,
>
> You said: “Use the sub domain for your AD domain and forward anything
> outside the sub domain to your main DNS servers.”
>
> This forward I do on the settings of the bind in Samba4?
>
> Something like:
>
> acl goodclients {
> 192.168.1.0/24;
> localhost;
> localnets;
> };
>
> options {
> directory "/var/cache/bind";
>
> recursion yes;
> allow-query { goodclients; };
>
> forwarders {
> 192.168.1.15; # EXTERNAL DNS SERVER
> };
> forward only;
>
> dnssec-validation auto;
>
> auth-nxdomain no; # conform to RFC1035
> listen-on-v6 { any; };
> };
>
> ​
>
>

You have a line missing inside your 'options' block, it should have a
line like this:

tkey-gssapi-keytab "/path/to/dns.keytab";

But, apart from that it looks very similar to mine.

mathias dufresne

unread,
Jul 27, 2016, 8:40:03 AM7/27/16
to
This, for me, means: as long as we use the BIND DLZ module provided by
Samba, Bind must run on same host as Samba AD DC".
In other words, you should be able to move Bind to another host if, as I
said yesterday, you accept to use standard module (so not Samba's Bind
module) and configure it correctly. Of course this is more complicated to
achieve, especially compared to the forward zone I described also yesterday.

Elias Pereira

unread,
Jul 27, 2016, 12:00:03 PM7/27/16
to

Jeff Sadowski

unread,
Jul 27, 2016, 3:10:03 PM7/27/16
to
Looking over this thread it got me thinking of multiple domains and then
thinking maybe it would be better to setup the external DNS as a slave to
the AD domain?

Then you could have it resolve from the external DNS for multiple AD
domains.

mathias dufresne

unread,
Jul 28, 2016, 5:00:03 AM7/28/16
to
Here we (the DNS team of our company, not me ;) chose the zone type forward
as it is the way DNS works (one resolver on client system, this resolver
will forward requests to others DNS server to get answer) and also because
that seemed to them the strongest against failure: there is no data stored
on the client resolver, there can't be corrupted data on this DNS server
when with masters / slaves slaves have to wait for synchronization, they
host data, these data can be corrupted... in addition of the very same
problems on any masters...
And we can declare as much zone with type forward as we want so it works
also with multiple domains, AD or not.

Elias Pereira

unread,
Aug 4, 2016, 3:40:03 PM8/4/16
to
Guys,

In the clients dns settings I configure the Samba4 or external DNS IP?

On Thu, Jul 28, 2016 at 5:57 AM, mathias dufresne <infra...@gmail.com>
wrote:
--
Elias Pereira

mathias dufresne

unread,
Aug 5, 2016, 6:10:02 AM8/5/16
to
You do what you want!

The point is the clients must resolve everything.

You have two options:
A - client resolver is non-DC DNS server: here the non-DC DNS server must
be configured to forward DNS requests about AD to AD DNS servers (to DCs)
B - client resolver is AD DNS server: here AD DNS server(s) used as
resolver(s) must be configured to forward any non-AD DNS request to non-DC
DNS server.

Hoping this is clear enough...

Cheers,

mathias

Elias Pereira

unread,
Aug 5, 2016, 12:20:03 PM8/5/16
to
mathias, I believe I get it. :D

The "A" option can be "resolved" with the inclusion of the zone that you
suggested me, right?

zone "ad.domain.tld" IN {
> type forward;
> forward only;
> forwarders {
> <ip of 1st DC>;
> <ip of 2nd DC>;
> ....
> <ip of Nth DC>;
> };
> };


And in the "B" option I set up in "DNS DC" each zone belonging to the "DNS
non-DC"?

E.g:

> zone "domain.tld" {
> type forward;
> type forward;
> forward only;
> forwarders {
> <ip of DNS non-DC>;
> };
> };


The reverse zones also will be this way?

E.g:

> zone "0.168.192.in-addr.arpa" {
> type forward;
> type forward;
> forward only;
> forwarders {
> <ip of DNS non-DC>;
> };
> };


Sorry for so many questions, but maybe this will help others who are having
the same doubts. Thanks again!

On Fri, Aug 5, 2016 at 7:02 AM, mathias dufresne <infra...@gmail.com>

mathias dufresne

unread,
Aug 9, 2016, 4:50:03 AM8/9/16
to
A reverse zone is a zone as others. Configure the reverse(s) zone(s) as you
do for standard zones.

A:
Clients -> main DNS (Bind, not Samba, not DC) -> AD DNS servers

Clients know only your company's DNS server, not AD DNS servers. This name
server (the clients resolver) will send AD DNS request to AD DNS server
because of the forward zone (type forward).

B:
Clients -> AD DNS servers -> main DNS (Bind, not Samba, not DC)

Clients must be reconfigured (a bad point imho, I'm lazy) to use Samba DNS
servers as resolver.
You must also make a choice on which DC would be used to do that job if you
have more than 2 DC (with 2 DC you can set both as resolver on clients).
Samba must be configured using "dns forwarder = 192.168.0.1" where
192.168.0.1 would be your company's DNS server.

tcpdump is a very great tool to understand DNS behaviour which is not so
complex for what we generally need.
tcpdump -i eth0 port domain host <ip of client>
would be sufficient to see what happens when a client tries to resolve
something. This tcpdump could be run on the client's resolver: you will see:
- client request arriving
- forwarding request according to your own configuration if needed
- answer from others DNS servers
- answer send back to the client
All you need to make it clear ;)
0 new messages