cleverhandle
Diamond Member
I'm setting up some Linux machines on a Windows network which is out of my control. I can get the DHCP info just fine, and provide the clients with all the information they need to access the Internet. But the clients' hostnames are not resolvable internally. Is this a problem on my end or a consequence of the DNS implementation on the network? I can resolve hostnames (pinging by name) between Windows machines just fine, which I suspect is because WINS, not DNS, is handling those lookups. Is there anything I can do on the client end to make the Linux boxen recognize each other by name?
Obviously, I don't have much experience with DNS - I'm trying to get a little perspective here and make sure I'm not totally misreading the problem.
UPDATE: OK, after some mucking about, I've managed to get the Linux machines to handle name resolution through WINS, usable for all IP operations. For those interested, the key is libnss_wins.so (different than libnss_winbind.so), which is part of Samba, but not built or installed by default. A make wins will build the component. It can then be dropped into /lib, and specified as "wins" in nsswitch.conf. None of this is really documented anywhere as far as I can tell, so hopefully this will help someone else.
I still need some advice, but I should probably give a little more info first. I'm a high school teacher, and I sponsor a club of computer geeks working on various projects. One of them is to build a Linux terminal services network using old machines incapable of running recent Windows versions. The network is a 10.x.x.x run by the State Board of Ed, with our school on a 12-bit subnet of it. Now, it would be nice if our DHCP server (owned by the Board) passed updates to DNS (also owned by the Board), but it doesn't. Most likely, there's someone who could help me reserve an IP or two, but my Assistant Principal (the local "tech honcho") gives me glassy stares at the mention of such obscurities as DNS and subnets. And without his help, I won't get far with Board people. Given that background, here are my needs/wants:
1) Clients must be able to find the server by name, without a static definition in /etc/hosts. Obviously, this is essential.
2) The server should be able to find the clients by name. Not so essential, but it would make remote administration much, much easier.
3) The clients should be able to resolve each other by name. Not that important, since the clients don't have any reason to speak to one another. Would be nice for completeness, though.
4) The clients might be able to resolve Windows machines by name. Unimportant at the moment. And if it does become important, getting resolution on the server should be adequate.
OK, then. As I said, I've gotten libnss_wins to work, so I could point the machines to the WINS server address, which would handle all of the above. But I'm not sure I like that solution - the WINS server is not local, and I don't know if it's IP will change (it doesn't look like a "special" address that would be reserved). I'd prefer not to be dependent on the Board's network configuration if possible. So I was thinking about a different solution - first, modify the client boot scripts to grab the server's address via nmblookup broadcast and edit that line in /etc/hosts. This would handle #1, without any static information on the clients. If the server went down, the client would need to reboot, but that would have to happen anyway for other reasons. Second, set up nmbd on the server to act as a WINS server, and point the clients to it. This would handle #2 and #3. Important Question: Will adding a WINS server to our subnet interfere with it in any way? My impression from the MS docs is that clients must be specifically configured to find a WINS server, either manually or through DHCP, so the answer should be no. But I certainly don't want to cause network troubles. That only leaves #4, which I'm willing to let go. The most I should ever need is access to one or two particular servers, which I can handle on our server with nmblookup if necessary.
My biggest concern is whether setting up our server as a WINS server will interfere with normal operations, but if I'm missing an obviously simpler solution, I'd welcome suggestions. Thanks for reading --
Obviously, I don't have much experience with DNS - I'm trying to get a little perspective here and make sure I'm not totally misreading the problem.
UPDATE: OK, after some mucking about, I've managed to get the Linux machines to handle name resolution through WINS, usable for all IP operations. For those interested, the key is libnss_wins.so (different than libnss_winbind.so), which is part of Samba, but not built or installed by default. A make wins will build the component. It can then be dropped into /lib, and specified as "wins" in nsswitch.conf. None of this is really documented anywhere as far as I can tell, so hopefully this will help someone else.
I still need some advice, but I should probably give a little more info first. I'm a high school teacher, and I sponsor a club of computer geeks working on various projects. One of them is to build a Linux terminal services network using old machines incapable of running recent Windows versions. The network is a 10.x.x.x run by the State Board of Ed, with our school on a 12-bit subnet of it. Now, it would be nice if our DHCP server (owned by the Board) passed updates to DNS (also owned by the Board), but it doesn't. Most likely, there's someone who could help me reserve an IP or two, but my Assistant Principal (the local "tech honcho") gives me glassy stares at the mention of such obscurities as DNS and subnets. And without his help, I won't get far with Board people. Given that background, here are my needs/wants:
1) Clients must be able to find the server by name, without a static definition in /etc/hosts. Obviously, this is essential.
2) The server should be able to find the clients by name. Not so essential, but it would make remote administration much, much easier.
3) The clients should be able to resolve each other by name. Not that important, since the clients don't have any reason to speak to one another. Would be nice for completeness, though.
4) The clients might be able to resolve Windows machines by name. Unimportant at the moment. And if it does become important, getting resolution on the server should be adequate.
OK, then. As I said, I've gotten libnss_wins to work, so I could point the machines to the WINS server address, which would handle all of the above. But I'm not sure I like that solution - the WINS server is not local, and I don't know if it's IP will change (it doesn't look like a "special" address that would be reserved). I'd prefer not to be dependent on the Board's network configuration if possible. So I was thinking about a different solution - first, modify the client boot scripts to grab the server's address via nmblookup broadcast and edit that line in /etc/hosts. This would handle #1, without any static information on the clients. If the server went down, the client would need to reboot, but that would have to happen anyway for other reasons. Second, set up nmbd on the server to act as a WINS server, and point the clients to it. This would handle #2 and #3. Important Question: Will adding a WINS server to our subnet interfere with it in any way? My impression from the MS docs is that clients must be specifically configured to find a WINS server, either manually or through DHCP, so the answer should be no. But I certainly don't want to cause network troubles. That only leaves #4, which I'm willing to let go. The most I should ever need is access to one or two particular servers, which I can handle on our server with nmblookup if necessary.
My biggest concern is whether setting up our server as a WINS server will interfere with normal operations, but if I'm missing an obviously simpler solution, I'd welcome suggestions. Thanks for reading --