Many small businesses are becoming interested in Internet connectivity, but they are unwilling (or unable) to fork over the cash for the necessary hardware. With routers costing close to $2000 and bandwidth as expensive as it is, there doesn't seem to be a viable method of putting small networks on the Internet. However, that depends on what you need—high bandwidth is not required for basic services, like e-mail, and Linux provides a very inexpensive alternative to high-cost commercial servers and routers.
About six months ago, I was sitting around drinking beer with Rob, a graphic artist friend of mine. He was complaining about the lack of connectivity at his office and trying to figure out how to get at least e-mail at work. His network consisted of Apple PowerMacs, Quadras, and Performas connected via Ethernet and speaking Appletalk, Apple's networking protocol.
A bell in my head went off, and I set about building a Linux box that would solve his problems. I went out the next weekend and bought a used 386DX25 with 4MB of RAM, a 340MB hard drive, and an NE2000 ethernet card for $600. Add to that a 28.8 modem for another $200, and the frame for “maceater” was born. I screwed everything together, and fired it up with DOS to make sure the hardware would actually function. Finding no problems, I repartitioned the drive and built a lean, mean, 1.2.13 a.out Slackware-based system with IP_FORWARD turned on.
Everything that wasn't needed for networking, system administration, and basic user functions I left out. The resulting system used very little space, leaving plenty of space for user directories, swap, and building new programs.
After some hacking with the PBX, I got the phone line hooked up and a PPP link established with our ISP (from whom we had purchased a dedicated phone line). Our domain had been registered, and we had a full class C to start assigning IPs. I gave Rob a crash course in Unix, DNS, and pico, and we were off. Several users had requested dial-in PPP, so we started assigning office workstations one end of the IP range and off-site workstations to the other.
We had to install MacTCP on all the machines and reconfigure them to speak TCP to each other (and to “maceater”, the Linux box). Setting up the Macs was fairly easy, and despite the tendency of MacTCP (and its newer sibling “Open Transport”) to puke all over System 7.5.3 at random intervals, we had everything routing internally in about four hours. We could ping all the Macs from maceater, and all the Macs could telnet into the Linux box. A word of warning: make sure you apply all the patches from Apple for MacTCP and Open Transport, as they have a number of potentially nasty bugs in them.
As we were fighting with the Macs, the topic of disk space (and the lack thereof on the Macs) came up. Another bell went off in my head, and I grabbed the source for Netatalk, a package for Unix boxes that allows them to speak Appletalk and perform a number of services, including printing from a Unix machine to an Appletalk-connected printer, printing from a Mac to a Unix printer, and accessing Unix file systems from a Mac. (Netatalk is available at www.umich.edu/~rsug/netatalk.)
Netatalk works best with a newer kernel, so I built a 1.3.74 kernel (the latest kernel available at the time of the installation) with Appletalk enabled and IP forwarding on. I started to compile Netatalk and left for dinner. Three hours later (it's a 386, remember), I installed the binaries, and fired up afsd, the apple file system daemon. After reading some of the docs and setting up a mountable volume, I re-opened the Chooser on one of the Macs and presto! There was an entry for Linux sitting amongst the other Macs. Clicking on “Linux” opened up a folder that contained /usr/local/bin, the volume that I had mounted, looking like any regular Mac folder. I copied some files back and forth, and since nothing was corrupted, declared it a success—and much easier than using something like Fetch to move files around.
It took about a full weekend of work, mostly because compiling anything on a 386 is painfully slow. We did as much remote compiling on my workstation at work (a DX4-100) as we could, transferring the resulting binaries over to the maceater.
Thus far, maceater performs the following major functions:
1. Runs sendmail for hlm.com (version 8.7.5)
2. Functions as a pop-mail server for ~20 workstations
3. Provides the primary nameservice for hlm.com (bind, version 4.9.3)
4. Runs an experimental web server (Apache 1.0.0)
5. Provides one line of dial-in PPP or shell access for employees (PPP 2.0.0e)
6. Routes packets for the entire network
7. Serves as an FTP site
8. Acts as an native Appletalk fileserver (Netatalk version 1.3.3b2)
As of this writing, maceater has been up for 82 days, during which we have compiled and upgraded sendmail, bind, and pppd. Load averages about 0.5, depending on how many people are running shells.
All in all, the hardware for maceater cost us about $800 and a weekend to get it running smoothly, although much of that was fighting with MacTCP and ironing out problems with our ISP. Hardly anyone in the office knows the Internet gateway/fileserver for their beloved Macs is an old clunky-looking PC sitting on the shelf in their supplies closet and was built in a weekend from spare parts. If only they knew...
Jonathan Gross is Editor of WEBsmith magazine and likes to infiltrate Windows and Macintosh networks with Linux boxes in his “spare” time.
|Designing Electronics with Linux||May 22, 2013|
|Dynamic DNS—an Object Lesson in Problem Solving||May 21, 2013|
|Using Salt Stack and Vagrant for Drupal Development||May 20, 2013|
|Making Linux and Android Get Along (It's Not as Hard as It Sounds)||May 16, 2013|
|Drupal Is a Framework: Why Everyone Needs to Understand This||May 15, 2013|
|Home, My Backup Data Center||May 13, 2013|
- New Products
- Linux Systems Administrator
- Senior Perl Developer
- Technical Support Rep
- UX Designer
- Designing Electronics with Linux
- Dynamic DNS—an Object Lesson in Problem Solving
- Making Linux and Android Get Along (It's Not as Hard as It Sounds)
- Using Salt Stack and Vagrant for Drupal Development
- Nice article, thanks for the
7 hours 52 min ago
- I once had a better way I
13 hours 38 min ago
- Not only you I too assumed
13 hours 55 min ago
- another very interesting
15 hours 48 min ago
- Reply to comment | Linux Journal
17 hours 42 min ago
- Reply to comment | Linux Journal
1 day 36 min ago
- Reply to comment | Linux Journal
1 day 52 min ago
- Favorite (and easily brute-forced) pw's
1 day 2 hours ago
- Have you tried Boxen? It's a
1 day 8 hours ago
- seo services in india
1 day 13 hours ago
Enter to Win an Adafruit Pi Cobbler Breakout Kit for Raspberry Pi
It's Raspberry Pi month at Linux Journal. Each week in May, Adafruit will be giving away a Pi-related prize to a lucky, randomly drawn LJ reader. Winners will be announced weekly.
Fill out the fields below to enter to win this week's prize-- a Pi Cobbler Breakout Kit for Raspberry Pi.
Congratulations to our winners so far:
- 5-8-13, Pi Starter Pack: Jack Davis
- 5-15-13, Pi Model B 512MB RAM: Patrick Dunn
- 5-21-13, Prototyping Pi Plate Kit: Philip Kirby
- Next winner announced on 5-27-13!
Free Webinar: Hadoop
How to Build an Optimal Hadoop Cluster to Store and Maintain Unlimited Amounts of Data Using Microservers
Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Some of key questions to be discussed are:
- What is the “typical” Hadoop cluster and what should be installed on the different machine types?
- Why should you consider the typical workload patterns when making your hardware decisions?
- Are all microservers created equal for Hadoop deployments?
- How do I plan for expansion if I require more compute, memory, storage or networking?