Linux in the Real World
Ever since the opening of the Internet to commercial development a few years ago, many an individual has made a living for himself by leasing a connection to the global network, establishing a local network, and tacking up his siihingle as an Internet Service Provider (ISP). ISPs, from the mighty MCI down to the most humble Mom and Pop basement organizations, offer exactly the same thing—a direct connection to the Internet. Smaller businesses do this mostly via PPP connections over modems, whereas larger ISPs tend to stick to leased-line dedicated connections.
Although this might sound daunting at first, the actual process is not impossible, even for a single individual of limited resources. The most pressing obstacle in the past has been that the resources needed to offer ISP-like services—not merely PPP connections but also e-mail, Usenet, and FTP/WWW hosting—have only been available in the form of high-end (and high-cost) Unix workstations. This translated into considerable cost for the budding entrepreneur.
The other traditional problem has been that the system- and network-administration skills needed to offer such services could only be gained on one of these high-priced workstations, creating a chicken-or-the-egg dilemma, whereby if you did not already have access to these machines through work or school, your main capital investment would have to sit idle for six months to a year while you tried to learn how to run it.
The ubiquitous nature of Intel-x86-based personal computers, the strength of their networking capabilities and, most of all, free operating systems such as Linux brought this sad state of affairs to an end. With its traditions of laissez-faire development and absolutely free access, Linux offers two qualities essential to the upstart ISP. The first of these is minimal cost. The second, and the more important, is the ability to learn all the essentials of network administration on an operating system which refuses to withhold any secrets from you.
It is hard to reinforce this latter aspect of Linux enough. As an independent Internet Service Provider, your job is network management. If your machines are not routing traffic properly, you must understand why and be able to fix it. If your Usenet feed is clogging your system, you must be able to diagnose the problem and fix it. If your DNS is not spitting out IP numbers properly, it is your problem, and yours alone. Microsoft technical support will not come down and help you figure out why. Sprint or MCI will not drop what they are doing to help you out, even if you are their customer. Good consultants (other than the author) are notoriously hard to find and (including the author) are horribly expensive.
Linux is the operating system of choice for ISPs, because it fulfills the number one requirement for an ISP's OS. You must be able to diagnose problems, and you must know enough about your system's operation to be able to fix the problems which will plague you, no matter what OS you choose. This, combined with the huge range of software available for Linux, make it the hands-down winner.
This is not to say that Linux is perfect, and indeed, there are several problems with Linux in an ISP environment. This article should help by offering a roadmap, showing both obstacles and bypasses to help you in your journey. It does not offer advice on how to connect to the Internet, but rather concentrates on using Linux to offer ISP services.
Your first step is deciding on a hardware base. What kind of machines will you run? How many of them will you have? What peripheral equipment will you need? You should have good answers to all of these questions before you buy any hardware.
In the past, the platform decision was easy. If you ran Linux, you used an Intel-based or Intel-clone 386 or greater machine. With the recent enhancements to Linux for the Sparc, MIPS, and DEC Alpha, this choice is a little more clouded. Red Hat and others are coming out with full-fledged CD-ROM distributions for these higher-powered machines. While these are in the early stages of development and I do not recommend them (yet), the price-to-performance edge of these machines, especially the DEC Alpha, means you should keep them in mind as a real option, especially for upgrading your system down the road. For startups, though, x86 machines are usually the way to go.
If you are going to concentrate on dial-up business, you will need modems. Modems can be one of your worst nightmares, and you should shop carefully. However, the modem issue is not Linux-specific. With V.34 finally having settled down to a well-established standard, most modems will do the job, and many people suggest shopping for price. Nonetheless, doing your homework by reading reviews and soliciting feedback on Usenet can pay off many times over. Just think about dedicating hundreds of man-hours and thousands of dollars to modems that refuse to work, and ask yourself if the extra initial effort might be worth it.
Of course, standard PCs can handle a pair of modems at best. How do you connect all of these modems to your PC? The answer is through one of the many port-servers (also known as terminal servers) available on the open market. Port servers connect to your modems with built-in serial ports and forward data back and forth between them and your computer, usually over a network. Alternatively, you can use an “intelligent serial board” which connects the modems directly to a PC. A good review of intelligent serial boards can be found in the June, 1995 issue of Linux Journal on page 46. Remember to include a port server or intelligent serial board in your plans.
Then there is your network itself. Unless you plan to fulfill all of your requirements with one machine (usually not a good idea), you will need a network to connect your machines. While Fast Ethernet, FDDI, and ATM are all options, plain vanilla 10 Mbps Ethernet is usually the way to go. I recommend 10-base-T (twisted-pair 4-conductor cable with a hub) over 10-base-2 (coaxial wire with T-connectors and terminators). 10b2 is simply not reliable enough to avoid service disruptions as you remove machines from the network, rearrange your network with expansion, and trip over the network cable. If you decide on the 10bT route, remember to equip all of your machines with Ethernet cards (anywhere from $30 to $300 each) and buy an Ethernet hub (between $400 and $1500). The NET-2-HOWTO includes an excellent discussion of the merits of the various ethernet cards; ISA bus ne2000 clones offer an easy and very inexpensive solution.
Presumably, you have arranged an Internet connection, either through one of the nationwide services such as Sprint, MCI, and ANS, or through another regional ISP. Traditionally, this connection is done via a dedicated router. Cisco Systems makes the best high-speed routers available, but they are usually overkill for connections of T1 speed or less. Livingston routers are a particular favorite among the Linux community, and other options also exist. An increasingly popular option is to make your own router out of a Linux-based PC, using a T1-interface card from a manufacturer like Enhanced Technologies. If you have an ISDN connection, then you can use your Linux box as a router too, through an ISDN terminal adapter from 3COM, Boca, Motorola, and others.
Finally, you have to decide how many Linux machines you will need. This all depends on how you have designed your network. There are two big mistakes that people make. On the one hand, some assume that every little network function needs a dedicated server. “We have to have a dedicated DNS, a dedicated web server, a dedicated FTP server, a dedicated mail server...” This can become very expensive, very quickly, and unnecessarily so. On the other hand, I have seen people make the mistake of cramming news, mail, PPP, and web service all on one machine, which is so slow that their customers leave as fast as they come in the door.
What hardware will younee and how should it be connected? How much will it cost? Through the rest of this article, we'll look at the service you can offer as an ISP and what kind of setup you'll need to do provide it.