Simon Kelley on 09/09/07 16:02, wrote:
Adam Hardy wrote:
Hi DNSmasq List
I have a small network with a slightly different setup for the
internet broadband from usual. I'm having problems working out how to
set up a DHCP service with dnsmasq to provide workstations with
permanent host names.
Instead of the usual router providing DHCP and DNS services, I just
have a simple DSL modem attached to eth2 on my gateway server
(isengard). Using dhclient3, isengard grabs itself a public ip for
eth2 via DHCP on the modem.
isengard also runs dnsmasq on eth1 for the internal network, and I run
iptables as my firewall to protect it. I gave eth1 the IP 192.168.0.2
I have 2 more linux boxes, a windows machine and a mac, and the
potential for other random laptops to come and go. What I want to do
is set it up so that I can refer to boxes by their hostname at least
in linux wherever I am on the network, since I do alot of ftp'ing and
ssh'ing and I want to set up a samba share for backups and cups for
printing.
I've reached the point where dnsmasq tells every client to use
192.168.0.2 as the nameserver. These clients run dhclient3 (and
windows and the mac are happy too)
But this naive approach obviously doesn't cut the mustard. Can I
instruct dnsmasq to be nameserver of all my hosts for each other?
Thanks and regards
Adam Hardy
PS this is the hosts and resolv.conf from one client:
adam@gondor:~$ cat /etc/hosts
127.0.0.1 localhost gondor.localdomain.net gondor
adam@gondor:~$ cat /etc/resolv.conf
search localdomain.net
nameserver 192.168.0.2
and /etc/dhcp3/dhclient.conf:
send dhcp-lease-time 3600;
supersede domain-name "localdomain.net";
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, host-name,
netbios-name-servers, netbios-scope, interface-mtu;
send fqdn.fqdn "gondor.localdomain.net";
send fqdn.encoded on;
send fqdn.server-update off;
isengard /etc/dnsmasq.conf:
domain-needed
bogus-priv
filterwin2k
dhcp-range=192.168.0.3,192.168.0.254,12h
All your hosts are using dnsmasq as their nameserver, so once it knows
the hostnames associated with particular DHCP leases, everything will
just work.
Broadly, there's two ways to do this. The first is to add names to the
dnsmasq configuration, associating MAC addresses with names using
dhcp-host configuration directives or in /etc/ethers. The second, and
more common, is for the host to know its hostname, and send it to the
DHCP server when it requests a lease: Windows (and, I'm fairly certain,
Macs) do this always. dhclient3 needs to be told to do it with something
like
send host-name "myname"
in /etc/dhcp3/dhclient.conf. Some distros are clever and configure this
automatically: most (still) don't. Sigh.
STOP PRESS. Looking again, I see you're ahead of me, and sending the
fqdn instead of the hostname. That should be fine, but you need to tell
dnsmasq that "localdomain.net" is a valid network for it to accept for
local hosts. Adding
domain=localdomain.net
to /etc/dnsmasq.conf will do the trick.
Thanks for the responses, I've just tried again, but didn't succeed. I get 'name
or service unknown' response from ssh, ping etc.
I put in the "send host-name" option, as well as explicitly defining the
defaults for dhcp-option 1, 3 and 6.
Presumably if dnsmasq is meant to resolve/name-serve my clients, it will put
their hostnames in isengard's /etc/resolv.conf?
I am probably totally wide of the mark here, but isn't dhclient3 constantly
rewriting /etc/resolv.conf on isengard (gateway / dnsmasq server) to set up eth2
on the internet?
I am using the example dnsmasq.conf that came with the package, but I just
parsed out the comments. And unlike Jan, I'm not using pppoe so I'm not sure
what approach to take.
Thanks and regards
Adam