Building a Linux Dial-up Server, Part 1
Carla Schroder's new two-part series covers how to build both dial-up and dial-in servers for Linux. A dial-up server is used to manage and share an Internet connection, whereas a dial-in server allows users to directly dial in to your network. Any Linux distribution comes with all the tools and protocols you'll need.
Sometimes it seems that the world has moved entirely to DSL, cable, and other forms of high-speed networking. But the reality is it hasn't -- most of the world is on dial-up, and even in the US the majority of Internet users are still on dial-up. Even in areas where high-speed access is available, dial-up still plays a useful role. For example, a business may not need high-speed access -- and can spend the money saved on hardworking, worthy employees. (Stop laughing, it could happen.) Or dial-up can fill a special need, such as for nightly batch uploads, for remote access, or for building an inexpensive WAN.
In this two-part series we're going to look at both dial-up and dial-in servers. A dial-up server is used to manage and share an Internet connection, whereas a dial-in server is for users to dial in to your network directly. Any Linux distribution comes with all the tools and protocols you'll need, including PPP (Point-to-Point Protocol), dialers, and NAT (Network Address Translation).
PPP is a peer-to-peer protocol; however, it is useful to think of dial-up in terms of client/server. Generally, the client is any machine dialing in to another machine. The PC answering the call and providing authentication is the server. A PC can handle both client and server duties -- a machine on a LAN that shares a dial-up connection, for example. A Linux dial-up/dial-in server will work fine in mixed networks (as a gateway for Windows clients, for example) -- all it does is move bits.
Setting up a dial-up connection should be simple; however, this is the real world, so let's look at the common trouble spots.
Share a Dial-up Internet Account
The dial-up server needs both a modem and a NIC, and of course the configuration information from your ISP. The modem is the "outward" network device, and the Ethernet card the "inward," or the one that connects to the LAN. Give the Ethernet card a static, non-routable IP, and set this as the gateway IP on all the client PCs.
The quickest way to get up and running is to dust off any old 486, and run Freesco on it. This is perfect for building a specialized dial-up server that does not do much else. Freesco is so easy to set up, I won't weary you with needless repetition -- simply visit their Web site and take it from there, or review one of my earlier articles on this "Linux on a single floppy disk."
On any other ordinary modern Linux distribution, first set up your dial-up account. PAP/CHAP protocols are used for authentication. PAP (Password Authentication Protocol) is the simplest; it sends your login in clear text. CHAP (Challenge Handshake Authentication Protocol) is more complex, and more secure. It requires a preset shared "secret" between the client and server, and the exchange is hashed for security during transmission.
Traditionally in Linux, all of this had to be configured manually, creating much anguish, horror, and heartbreak. Fortunately, a number of GUI-based configuration tools have been released to ease your pain. kppp and gnome-ppp are a couple of useful configuration tools. Wvdial is the new kid on the block, and is the quickest and easiest to use. It runs from the command line, which makes it a good choice for a server you don't want to run X on. It's an "intelligent" dialer that figures out what sort of authentication your ISP wants, and writes the appropriate chat scripts. I know it is not always worthy to take the easy way; nevertheless, in this case, this lowly Grasshopper recommends it.