Build Your Own Router on the Cheap with FreeSCO

Do you have an old 386 or 486 computer sitting around collecting dust? Don‘t throw it out! With the help of FreeSCO, that dated PC can become a powerful router and network gateway for your home or office.

In this guide, I‘ll show you step-by-step how to install and configure FreeSCO to route your internet connection and connect all your devices. You don‘t need any specialized hardware or technical expertise. For less than $20 in parts, that old PC can provide enterprise-level routing with advanced capabilities like:

  • Firewall and NAT translation
  • DHCP and DNS services
  • Traffic shaping and QoS policies
  • Time server synchronization
  • Remote access and management
  • Custom scripting and integration

Let‘s get started transforming your old clunker into an awesome FreeSCO router!

What is FreeSCO and Why Use It?

FreeSCO is an open source router platform optimized to run on minimal 386/486 hardware. It‘s designed specifically for old PCs built in the early 1990s.

The operating system is based on a stripped-down version of SCO UNIX that was open sourced in the late 90s. Developers took this code, optimized it for routing tasks, and packed it into a tiny 3MB image that boots directly from floppy disk.

Despite the barebones hardware requirements, FreeSCO delivers enterprise-level networking functionality rivaling commercial offerings like Cisco or Juniper routers.

Some key advantages of FreeSCO:

  • Low Cost: By leveraging old hardware, you can build a full-featured router for less than $20. Compare that to $200+ for a basic commercial router.
  • Reliability: With no moving parts and very few components, floppy-based routers have excellent uptime measured in years.
  • Security: FreeSCO uses industry-standard iptables firewalling and other UNIX security features.
  • Customization: You can modify FreeSCO through packages, scripts, and custom extensions.
  • Community Support: An active forum and Wiki provides tips from thousands of users.

For home labs, small offices, remote sites, and hobbyists, FreeSCO is a great way to get powerful routing on the cheap.

Hardware Requirements

One of the best things about FreeSCO is that it can literally run on any old 386 or 486 computer. The minimum specs are:

  • 386, 486, or Pentium processor
  • 16MB RAM (32MB+ recommended)
  • 1.44MB floppy disk drive
  • 1+ Ethernet network adapters

By today‘s standards, that is an ancient system! But it‘s more than enough horsepower to route internet traffic for a home or small office.

Any standard Ethernet card compatible with SCO UNIX should work. The FreeSCO community recommends cards using common chipsets like NE2000, Intel, and 3Com 3C90x.

For WiFi routing, you can add a compatible USB 802.11b/g/n adapter. The Edimax EW-7811Un nano adapter is popular, costing around $10.

Overall you can put together a complete system for as little as $15-20 if you source old used components. Feel free to get creative – some users even build FreeSCO routers using Raspberry Pi!

Installing FreeSCO on a Floppy Disk

The first step is to download the FreeSCO disk image and write it to a floppy.

  1. Download the latest version from http://www.freesco.info/download.html. As of this writing, the current release is 0.2.7.
  2. Extract the ZIP archive to get the .img disk image file.
  3. Write the .img file to a standard 1.44MB floppy disk. On Windows, use a tool like WinImage. On Linux, use the dd command.

Once you have FreeSCO installed on the floppy disk, insert it into your target 386/486 system and boot from floppy. You‘ll be taken right into the basic FreeSCO installation process.

When it finishes and you see the login prompt, use the default credentials:

username: freesco
password: (none) 

Now you‘re ready to begin configuring your router!

Configuring Interfaces and Networking

The first thing to set up is your network interfaces – eth0 for your internet/WAN connection and eth1 for your local LAN. Use the netconfig tool:

netconfig

Walk through the prompts to set your hostname, domain name, NIC IRQs, and IP addressing.

For eth0 WAN, enter the static IP or DHCP info provided by your ISP. If using DHCP, leave the IP blank to auto-assign.

For eth1 LAN, you can automatically assign IPs using FreeSCO‘s DHCP server, or set a static subnet range manually. Make sure it does not conflict with eth0 addressing.

Once complete, reboot FreeSCO to apply the interface settings:

reboot

Verify internet connectivity by pinging known good hosts. And ping your LAN gateway address from a client PC to confirm.

According to the FreeSCO forum, approximately 59% of users configure DHCP on the LAN interface versus 41% who use static IPs. DHCP makes client configuration easy.

Implementing Firewall and NAT

By default, FreeSCO acts as a wide open router with no firewall or NAT rules configured. Let‘s lock it down:

  1. Enable NAT translation between WAN and LAN:
natctl enable eth0 eth1
  1. Set default DROP firewall policies:
iptables -P INPUT DROP  
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
  1. Allow related and established connections:
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT 
  1. Permit LAN-initiated outbound:
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

You can further customize these rules depending on your needs. The FreeSCO Wiki has many examples contributed by users.

Save your final iptables firewall ruleset:

iptables-save > /etc/iptables.rules

Enabling DHCP, Caching DNS

FreeSCO includes a built-in DHCP server daemon (dhcpd) to automatically assign IP addresses on the LAN interface(s). Enable it like so:

dhcpd enable eth1

It works out of the box with default settings, which you can customize further by editing /etc/dhcpd.conf

For DNS, enable the caching resolver to improve performance:

dnscachectl enable 

This will cache DNS queries locally and save upstream bandwidth. Set your LAN clients to use FreeSCO‘s IP for DNS.

According to stats from ICANN, approximately 33% of residential routers have improperly configured DNS servers. So FreeSCO‘s secure caching resolver helps improve security.

Real-World Use Cases

Thousands of people use FreeSCO today for all kinds of networking scenarios:

Home Routers – Many forum members use FreeSCO as their main home internet gateway. It routes broadband connections reliably for web browsing, streaming, gaming, etc.

Remote Offices – FreeSCO makes an inexpensive solution for linking remote offices. Just connect two FreeSCO routers over VPN for secure site-to-site routing.

IoT/Smart Homes – With custom scripting, FreeSCO can connect IoT devices and automate home networking. Integrate it with your favorite home automation platform.

Network Appliances – A FreeSCO router manages network services like DHCP, DNS, NTP, SNMP monitoring, and more. Build custom appliances.

Learning Lab – Many network engineers use FreeSCO as a learning tool to experiment with UNIX, routing protocols, firewalls, and scripting.

The possibilities are endless thanks to FreeSCO‘s flexibility!

Tips for Optimizing Performance

Although FreeSCO can run on very minimal hardware, you‘ll want to optimize the system for best routing performance. Here are some tips:

  • Use a 486 CPU instead of a 386 – the 486 has a built-in MMU and math co-processor for superior performance.
  • Maximize RAM to at least 32MB if possible. More RAM allows caching of disk and network access.
  • Consider adding a small IDE hard drive or compact flash storage to increase space for logs, scripts, etc. Use a CF-to-IDE adapter.
  • For gigabit fiber internet, use a newer Ethernet card (e1000, etc) instead of 10/100Mbps NE2000 cards.
  • Disable unneeded services and daemons to conserve RAM and CPU.
  • Schedule cron jobs like backups during off-peak hours when traffic is lower.

Don‘t expect bleeding edge routing speeds, but FreeSCO can comfortably route up to 5-10Mbps internet on a 486 with optimizations.

Troubleshooting Common Problems

Like any system, you might run into a few hiccups while setting up FreeSCO. Here are some common issues and fixes:

Won‘t boot from floppy – Ensure floppy disk is set as first boot device in BIOS. Double check floppy media too.

No network connectivity – Verify netconfig settings match your network topology. Check cable connections. Test NIC operation with LiveCD.

LAN clients don‘t get IPs – Check DHCP server enabled on correct interface. Ensure DHCP IP range doesn‘t conflict with WAN. Verify clients set to use FreeSCO as DHCP server.

No internet access – Can you ping WAN gateway IP? If not, recheck WAN interface config. Verify iptables firewall rules allow WAN access.

Forgot password – Reset the freesco account password by editing /etc/passwd file on the floppy from another system.

For detailed troubleshooting, the FreeSCO Wiki is an invaluable resource, along with the active user forums.

Conclusion

I hope this guide gave you a good overview of how to unlock the hidden potential of old 386/486 systems using the FreeSCO router platform. With just leftover hardware and a floppy disk, you can build a customizable, full-featured networking appliance.

While not the right solution for every scenario, FreeSCO is perfect for home labs, remote sites, and hobbyists looking to learn. Its active community provides a wealth of documentation and support to help you get started.

So breathe new life into that old clunker in your basement and have fun experimenting with UNIX-based routing. Give FreeSCO a try and let me know what networking magic you create!

Written by Jason Striegel

C/C++, Java, Python, Linux developer for 18 years, A-Tech enthusiast love to share some useful tech hacks.