  The big question asked in my previous post on Linux and networking was if it is possible to use one Linux box to serve as a DHCP server, an HTTP server, an FTP server, a DNS server, and a LAN server. The short answer is yes. I now have all of the daemons running on my server. It assigns IP addresses via DHCP as it is supposed to. Apache is running. Xinetd is running. Samba is running. Bind is running. Kudos to me. As an aside, this is no small undertaking. The documentation for Linux is not terribly convenient.
I had to sift through man pages, commented configuration and sample files and how tos to patch everything together. One of the less helpfully commented sample configuration files looked something like this: ; Sample .conf file ; 123 @ SOA domain.here ; declaration this is a useless line that will be ignored 111 aaa bbb ; args #ignore me So, having all of these things working on some level is an accomplishment on its own. The worst thing about the documentation is that it isn't laid out logically. Most of the information only applies to very specific parts of the process so when setting up the dhcpd module you have to hunt through a whole mess of files and folders to find the ones that need editing. It's a lucky thing to find references to other files that need to be configured while editing one.
Only by hunting through as much of the documentation as I could find did I learn that setting up Bind meant editing named.conf then creating *.zone files for my domain and then editing the named.conf.include file to point to the *.zone file. I would be disingenuous if I led you to believe that all of these things are working exactly as they ought to be. I think I'm probably trying to do to many things at one time and would have more complete success if I focused on one task at a time but I don't operate like that.
Also, it makes some things easier to get these things working at more or less the same time. For example, setting up the DHCP server makes it easier to connect clients because you don't have to worry about assigning IP addresses. Having the Apache web server running makes it easier to set up Samba because you can't use the Swat utitility to change the Samba configuration files unless the httpd process is running. Swat is a form-based utility run in a web browser that allows you to update your Samba configuration files.
It's much easier than scouring through smb.conf files. I still have some problems to work out. DHCPD doesn't start on boot. I have to manually start the dhcpd process with the command dhcpd eth0. I used the chkconfig command to change the runlevel but I haven't found where to define the interface to be used. That's why I have to manually specify the eth0 interface. Samba is running almost satisfactorily.
My windows machine detects the workgroup but I can't browse to any of the shares. I believe the problem is that user priveleges on the shares are set to deny so I need to change the user priveleges to allow remote users to access the shares. Once that is done I should be able to map the share as a network drive. Setting up DNS is the real bitch. Bind is running but I can't figure out where to specify the domain I want to use. I'm going to use ziggurat.home. I need to set it up as a zone in the named file but I'm forever getting errors about invalid syntax in my *.zone file or in the zone section of the named.conf file. The errors make no sense to me because I've even used examples that are supposed to be functional. When I do find a reference to my domain it's always Linux or localhost. Linux is not specified anywhere as a domain or as an alias that I'm aware of and localhost is simply the loopback for my Linux box. I need to dig up some more information about Bind and DNS. I just got the http daemon working so I haven't tinkered with it much so far. I think it will be something of a bitch too though. I want to be able to create subdomains for the projects I'm working on so I can have (for example) http://mysqlproj.ziggurat.home, http://phpproj.ziggurat.home, http://perlproj.ziggurat.home.
Both Apache and Bind support this, but the problem I have is that I have no idea what the directory structure will look like or where it is supposed to live, or how to specify the path. I know how the http file structure looks since I've done some web development, but not how it fits into the Linux directory structure. I'm fairly certain this information is buried somewhere in the Apache documentation or in the httpd.conf comments. It'll just take some digging and some trial and error. You can ditto all of the above for ftp. Actually, one thing I've hardly even mentioned is MySQL. I also intend for my Linux box to be a MySQL server. As things stand now I don't even know what questions to ask except how do I start the MySQLd process? All of the commands give me an error and tell me to read the manual which is over 1000 pages long. I guess I'll just have to start the long slog. I can say it is coming together. My clients are all assigned IP addresses via the DHCP daemon. I can wrestle the clients into accessing the Apache documentation pages and the Swat utility which means Apache is running as it is supposed to. I can navigate to the Samba Server, even if I can't yet access the shares. Here are the questions I intend to answer in the immediate future.
1. How do I assign the domain I want to use for my intranet? 2. How do I create subdomains? And are these zones? 3. How do I create a directory structure for my domain and for my web development projects? Where do I locate this directory structure? 4. How do I give my clients access to the Samba shares and to their own Samba directories? My best means of answering these questions is trial and error and scouring through the documentation.
I've heard and read a lot of things that rave about how well documented the linux modules are and how extensive the help, but there are a couple of problems with the documentation. A lot of it is written by and for people who already have some idea of what it is they're doing. It's also written sort of reflexively. It's like having a dictionary with circular definitions. Crotchety means grouchy. Grouchy means crotchety. A domain is a location defined by an IP address. An IP address defines the location of a domain. A domain server gives a domain an IP address and conversely assigns an IP address to a domain. Another problem is that there are often pages and pages of nuts and bolts information about how these services work. I know in excruciating detail the 4 step process that is how IP addresses are assigned using DCHP, but barely enough about the practicalities of making Linux into a DHCP server to make it happen.
It's like taking a driving course and learning about the internal combustion engine that causes vehicular perambulation. This is why Linux is not terribly popular among casual users or even professionals. It has a lot going for it in some ways but learning how to use it is a hell of a project. I've searched for a lot of information but I can seldom find things that lay out the processes logically. Nor is there much information that bridges the gap between developer and mechanic. Command line commands aren't discussed anywhere except from within Linux. The command line is very useful for setting these services up and testing them, but there aren't any references that tell you what commands to use or how to use them. Users who are new to Linux and the command line would be a complete loss as to how to use it. I've learned a number of basic commands, but know very few of the arguments. The man pages don't do much good from the command line because you can't see them and type on the command line at the same time. The command -h isn't very helpful unless you already know what the arguments do and just need a reminder of which one you want.
Like I mentioned, a lot of the manuals tell you all you could ever want to know about the processes and why they work and what they do, but it's a rare thing to find a clear cut how , which in my case is what I really want to know. Going back to the driving lesson, you could learn everything there is to know about why the internal combustion engine works and what it does, but that doesn't mean you will know how to operate it. In any case, I think it's interesting and useful enough to be worth my attention and I will keep hammering away at it. 
