On This Page...
DSL may be less common these days, but it is still a fact of life for some. Unfortunately, many DSL modem router combination devices are outdated and slow. This leads to many home owners being unnecessarily frustrated with the internet connection speed.
A typical internet connection speed for DSL is advertised around 30 Mbps down and 2 Mbps up. When we moved from the city and started retrofitting our cabin, this was a big challenge to work around. Even though these speeds are sufficient to stream TV, the Century Link internet connection would frequently drop out. We’d suddenly lose WiFi or internet connection in the middle of a show.
No more. Here’s how we fixed the download speeds here at the cabin…
Frontier vs. Century Link Speed Tests
Frontier and Century Link are two of the largest DSL providers.
Both are available here in Colorado, which begs the question: which is better?
Unfortunately, there’s not a good answer to this. Both Frontier and Century Link have struggled to keep up with the times. They both accepted money from the US government to achieve certain performance goals which were never met. So… there are no “good” DSL options. However, there is a general truism for DSL in particular:
The fewer of your neighbors who use it, the faster it will be.The slow speeds associated with DSL are related to its use of old technology: phone lines. This medium is especially prone to congestion, so the internet use of your neighbors will play a large role in your speed at any given time.
One quick-and-easy, obvious improvement that can be made is to buy a new modem/router. Odds are, your modem/router combo is an old an outdated model. Many people still rent their modem from the ISP, as well. It’s much cheaper to just buy your own modern modem/router:
Netgear products, such as the one above, tend to be good quality networking hardware. You should always check that the modem will work with your provider first, though.
For a more hands-on approach (and even better results)…
Using a Separate Router
It’s possible to only use the modem part of the modem/router.
This is called “transparent bridging” or “access point” mode. If you look at the instructions for your device (try googling the serial number on the modem), you should find a section devoted to enabling this feature.
Transparent bridging removes the router feature.You will need to provide your own router, instead.
The advantage is that dedicated routers are much faster. For example, the Netgear Orbi is my favorite and one of the best WiFi routers available. It has a “dedicated backhaul” channel and plenty of ethernet ports, which basically means it’s a very fast router.
Another nice thing about this router is that it supports PPP…
PPP(oE) is often used to authenticate with DSL providers.
To connect to the internet, a username/password must be provided. In many cases, the ISP (e.g., CenturyLink) provides a modem for this purpose. Said modem can usually be put into “passthrough” or “transparent bridge” mode. In this case, the PPP authentication is left to the device which is connected to the LAN port on the modem.
If you have a Mac (OSX), you can connect directly to a modem which is in “transparent bridge” mode by creating such a PPP connection. Just open the Networking Preferences pane and use the + (plus) button to create a new PPPoE connection:
After entering your username and password for the ISP, you should be able to connect directly to the internet when the modem (in transparent bridge mode) is connected to your computer.
Likewise, you’d need to configure the PPP authentication with the router. For example, if you purchased the Orbi routers above, you’d use the Netgear Orbi management page (which you accessed when setting up the router) to enable the feature.
Or… you could go one step further.
Build your Own Router
You can use a Raspberry Pi or other Linux-based home server as a router.
The trick is the ppp authentication. Thankfully, There’s a Package for That (TM).
sudo apt install pppoeconf
pppoeconf from the command line will automatically detect the DSL connection (or, you can provide e.g.
eth1 as an argument). The install wizard is pretty simple and gives advice along the way. The only place I deviated from the defaults was that I asked it to not manage
/etc/resolv.conf. There are a number of reasons for this, such as the fact that I run my own DHCP and DNS server on the Raspberry Pi as part of it’s role as a router.
In most cases, that’ll get you online… but there may be other complications.
Other DSL Weirdness
There are some extra steps to take if you encounter any bugs, especially things like if the internet connection keeps dropping and reconnecting.
The last step created the
ppp0 (WAN) interface, which is in addition to the
eth0 (LAN) interface. This exposes the problem of Maximum Transmission Units, or MTUs.
ifconfig on a raspberry pi, and you’ll see the mtu next to each network interface. Notice that pppoeconf defaults the
ppp0 interface to a mtu of 1492, rather than the “standard” value of 1500.
The PPP protocol consumes 8 bytes of data.1500 – 8 = 1492 (the standard mtu value for a PPP connection).
The problem is that
1500 is a much more common default value. So while the
ppp0 interface will have a mtu of
eth0 (LAN) interface may be
So it’s entirely possible the two interfaces have different mtus. Strange bug arise when different interfaces in the “chain” have different values, including:
- Inability to connect to certain devices.
- Failure to load certain https websites.
- Sometimes, failure to connect at all.
These bugs were hard to track down at first. With only a couple of websites, any attempts to
curl -v would indicate some sort of HTTPS termination/error. It tuns out, the HTTPS handshaking is especially brittle to mtu disruption. Check out the official Debian docs for very good information on finding and setting MTU.
It may be possible that a DSL provider will support the higher mtu, in which case you can edit
/etc/ppp/peers/dsl-provider to include the line
mtu xxxx and make the two match (and then restart). Or you can leave the
ppp0 interface at 1492, and change the
eth0 interface to the same value:
sudo ifconfig eth0 mtu 1492 up
That should immediately make the internet access bugs go away. To make it permanent, instead edit
/etc/network/interfaces to include:
iface eth0 inet dhcp pre-up /sbin/ifconfig $IFACE mtu 1492
Now when you reboot, ifconfig should show
1492 for both
This post was really a tangent from the meta-topic of building a Raspberry Pi router and setting up home networking: