I need to start out with a bit of explanation. Like the other files in this collection, this file is mainly about my family network, and expresses my prejudices about how I think a family network ought to be set up. Along the way I also say a bit about the alternatives, so you may find it useful even if your setup or prejudices are rather different from mine. But your mileage may vary.
There's no point in sending me hate mail if you disagree with me (and yes,
I've been flamed in
misc.kids.computer for so much as
suggesting that Linux is suitable for a family environment). Fan
mail, additional (helpful) suggestions, and large donations of cash will
be gleefully accepted, however.
This one's easy: if you have more than one computer and only one of some resource, like a printer or internet connection, that you want to share, you can use a network to share that resource. If computers have been in your family for more than a year or so, you've probably upgraded at least one computer, so you probably do have more than one box sitting around. And unless you have a separate phone line to each one, you probably need to share your net connection, too.
As for me, I seem to have accumulated one or two computers a year for the last decade; the limiting factor in my case is not how many computers I have but how much desk space I have for monitors and keyboards. (And I just installed a wall-mounted arm in the sewing room so my wife can download embroidery files...)
Besides, if you didn't suspect that you might need a family network, you probably wouldn't have looked in this file, would you? So that's settled, then.
As I've already suggested, you can share resources. In fact, this is the main reason to have a network: you can share printers, an internet connection, and disk space over it.
Sharing disk space warrants a little more discussion: what you're actually doing is sharing files. This means that you can store files on one machine and use them on another. In particular, you can have a big collection of files that everyone in the house can share, plus a private space called a ``home directory'' for every user. The biggest advantage of this arrangement is that you only have to back up one machine! Instead of having to go to each machine in the house and figuring out which files to save on a floppy or CD-R, you just let everyone know that, if they put their important documents in the shared folder, they'll always get backed up.
In addition, you can run applications over the network. X is a a network-oriented windowing system, which means that you can have programs running on machines all over the network and have them display on your desktop. If that's all you do, your machine is behaving as an ``X terminal.'' If you're running most of your applications locally and only using files on the server, your machine is a ``workstation.''
Finally, you can run ``groupware'' -- multiuser applications where the users are communicating over the network. Instant messaging is a familiar instance; so are certain multiuser games, like Quake.
Basically, you need several computers, a network card for each, and some cable. At least one of the computers needs to be running Linux full time -- that's your server. (Just because it's your server, however, doesn't mean that you can't hang a monitor on it and use it as a workstation, too. )
For cable you can either use ``thinwire'' -- coaxial ``coax'' cable, now also called ``10base2'', or ``Cat5'' -- Category 5 twisted pair originally intended for advanced phone systems, and now called ``10baseT'', or ``100baseTX'' if it's running at 100MHz. Thinwire has a number of technical advantages, but fell out of favor a few years ago when the manufacturers realized that most office buildings were already wired with Cat5. So most new equipment is wired for 10/100 Cat5 cable.
If you go Cat5 you'll have to buy a hub -- each machine is wired to a hub in a ``hub-and-spokes'' configuration. This is painless and convenient if all the machines are located in one room. If they're not, one option is to put a hub at each end of the house. Older hubs could be connected with coax; for newer ones you'll need a piece of Cat5.
Fortunately, networking hardware has become dirt cheap recently. Dual-speed network cards are selling new for $10-20 (more recently I've seen them for as low as $2.99, and occasionally $10 with a $10 rebate), hubs for $30-40. If you want to go thinwire you'll probably have to go to the surplus market, where you may be forced to pay as much as $2 for an old "NE2000-compatible" card. Life's tough.
The expensive option is to go wireless. The recent ``WiFi'' standard (the brand name for IEEE Standard 802-11b) runs as fast as ethernet, but it's nowhere near as cheap -- or as secure. Every machine connected to a wireless network has to be set up as securely as if it was connected directly to the Internet. Nevertheless, wireless has its uses -- we'll get to some later on.
Colin Mattoon has an excellent series at linuxworld.com/ entitled How to create a Linux-based network of computers for peanuts, which is all about using really cheap old PC's as X-terminals on a server-based network. Go read the intro -- I'll wait.
My family network isn't like that. Yours probably won't be, either. You see, I have a wife and kids. They all want to play games, and most of the games they want are only available on Windows. So is my wife's embroidery software. And the younger kid has a slightly older friend who likes to download anime screensavers and similar fluff for her. Then there's that old Mac in the corner. So a homogeneous Linux/X network isn't really an option.
It's close, though: what I do is make all the Windows machines dual-boot, and all resources are shared on a couple of dedicated Linux servers. There's one full-time, dedicated Linux workstation in "my" corner, which more-or-less means that I'll be able to find a computer I can use most of the time. (Except Wednesday evenings, when we have a housefull of friends over. On Wednesdays I sometimes bring a laptop home from work.)
When the dual-boot client machines are in Windows mode, they're practically stand-alone. Users just install apps (well, OK, I install apps) as usual on one big C partition. All they use the network for is sharing the printer (on the Linux server) and one big disk partition that's mainly used for downloaded software packages like Mozilla that every PC needs to install. It also serves as a convenient dropbox for moving files (like digital photos or scanned images) between OSs.
If there's enough disk -- two or three gigabytes -- I install a recent
version of RedHat on the Linux partition of each client machine. Home
/home) and the shared directories
/opt are all mounted from the
file server, as is the mail ``spool'' directory
If there isn't enough disk for a complete install, I'll set up a small Linux partition as an X terminal (it only takes 100Mb or less), and set it up to run applications on either my workstation or the server. Right now only the 9-year-old's machine is in this condition, and she rarely, if ever, uses Linux on it anyway.
Something to consider, as some of your users show signs of moving to Linux full-time, is diskless workstations or ``network computers.'' These are now obtainable, e.g. from thinknic.com, for as little as $200 each. On the other hand junk PC's are even cheaper if you don't mind the power drain, and low-end computers with Linux installed are also available in the $200 price range. Diskless workstations are really useful only if you want the additional control and simplicity that comes from not allowing users to install software. They're great in schools.
I don't really need three servers. In fact, for many years a single machine served as my file server, the firewall, and as my main workstation. But I got the DSL line shortly after I decided to split the fileserver off from the dialup/mail/news machine, and while I was actually in the process of upgrading my workstation. So it was simpler to add the old workstation as a firewall/router/web server than to try to figure out how to combine it with one of the others.
Actually, I'd identified a really wimpy old machine (a Pentium 90) to use as the firewall, but this was January 2000 and it had Y2K problems that I was too lazy to work around at the time. This was also before the California power crisis of 2001. I'm now trying to figure out what I can do to move the dialup connection from the current 233MHz K6 tower (read power-hog) to something significantly smaller, or eliminate it altogether and put both internet interfaces on one box.
But to continue...
The main thing about the file server is to plan for expansion. My real needs (space for software development and writing, and my mail archives) don't expand very quickly, but they do keep on expanding. Downloads are more of a load, especially when they include images and music. Creating your own art and music is worse still: a high-quality image from a digital camera is a megabyte or so, and uncompressed, CD-quality sound is 5MB/minute per track. And let's not even think about video, at 4GB/hour.
As fast as the requirements are growing, though, disk is getting cheaper exponentially. The amount of disk you can buy for $100 has been reliably doubling every year for the last two decades, and the trend shows no sign of stopping in the next few years, at least. The doubling time for RAM, by contrast, is more like every 18 months. So every once in a while, when things are getting tight and my local Fry's has a closeout sale on the disks that were cutting-edge a year or so ago, I go out and buy a couple.
For high-speed working storage on the server I like SCSI disks. They're designed for that kind of service, and you can hang up to 15 on one cable. The limit for IDE drives is 2, and even then you can only operate on one at a time. With SCSI you can be seeking on one drive while reading from another. But SCSI drives are more than twice as expensive as the ubiquitous IDE drives that are universal in desktop PC's these days. If I were starting out now I probably wouldn't bother.
What I buy the cheaper IDE drives for is backup, downloads, archives, and other places where low performance isn't a requirement, just lots and lots of capacity. My main ``backup'' device, in fact, is just an IDE drive in a $15 removable tray -- it's significantly cheaper per gigabyte than any of the removable cartridge drives, and faster and more reliable to boot.
Nothing prevents you from hanging a printer -- or anything else, for that matter -- on a PC and sharing it from there. Linux is perfectly happy to share printers in this way, and there are plenty of cheap scanners that only run on Windows.
The main printer, though, I prefer to put on my Linux server.
Needless to say, you want to connect your dialup modem and your DSL or
cable modem to Linux boxes -- and preferably not to your main
server. What you really want is a firewall: a machine that sits between
your network (which you want to protect) and the wild, wild Internet.
Firewalls have gotten extremely easy to set up these days; recent Linux
distributions come with a Gnome application called
In my case I have two firewalls, one for DSL and one for dialup.
Most people won't need this, but my hacker-friendly ISP relays e-mail to
sendmail, and I like to send mail out through
his network as well, figuring that he's less likely to appear in any
spam-blocking lists than a large telco that doesn't care how badly
messed-up their servers are. I may change my mind, though: three servers
are a bit excessive.
In either case, the main thing about a firewall is that it has (at least)
two network connections, and ships packets between them as
required. For the DSL firewall, this means two ethernet cards.
Fortunately Linux handles this just fine. The firewall you use to send
e-mail from should have its copy of
sendmail identify itself
as whatever name your ISP calls it, not your internal name. Some
mail servers are picky, and want a name that can be resolved back into an
There are two basic ways you can organize your network:
There isn't a single correct answer to this question, and in fact I've had my network set up both ways at various times. A good compromise might be to use my workstation as the application server instead of the file server. It's a bigger, faster machine, too, which helps. But I don't, because I also want to use my workstation for experimentation with, for example, different distributions and other things that may require bouncing it up and down, and I don't want to inconvenience anyone else in the family who might be using it. They know where I live!
For the moment (and the foreseeable future) disk is cheap, so I'll just keep upgrading the four main client machines and my workstation.