How to Optimize Internet Speed for Remote Work

Optimize your internet speed for remote work by making two changes that cost nothing and take minutes: switch to a wired Ethernet connection for video calls and deployments, and configure a faster DNS (Cloudflare 1.1.1.1 or Google 8.8.8.8) to cut latency on every request. For remote development, latency matters more than raw throughput–a 50 Mbps connection with 15ms ping outperforms 150 Mbps with 80ms ping for SSH sessions, real-time collaboration, and git operations. This guide walks through baseline measurement, bottleneck diagnosis, Wi-Fi interference fixes, QoS configuration, VPN optimization with WireGuard, and OS-level TCP tuning.

Measuring Your Current Performance

Before optimizing, establish a baseline. Run multiple speed tests at different times of day to understand your typical performance.

Basic Speed Testing

Use Speedtest by Ookla or Fast.com for quick measurements. For more detailed analysis, use M-Lab’s NDT test:

# Install speedtest-cli if you prefer command-line testing
pip install speedtest-cli

# Run a speed test
speedtest-cli --simple

Look for three key metrics:

For remote development work, latency matters more than raw throughput. A connection with 150 Mbps download but 80ms ping feels worse for coding than 50 Mbps with 15ms ping.

Diagnosing Network Bottlenecks

If your speeds are inconsistent or slower than expected, identify the bottleneck.

Checking Your Local Network

# View network interface statistics (macOS)
netstat -i

# Check current throughput (Linux)
watch -n1 'cat /proc/net/dev'

# Test gateway latency
ping -c 10 $(route -n | grep UG | awk '{print $2}')

Your router is often the weakest link. Older routers struggle with multiple devices and modern encryption. Check your router’s firmware and consider upgrading if it’s more than five years old.

Identifying Wi-Fi Interference

Wi-Fi congestion affects urban areas particularly hard. Use these tools to find less crowded channels:

# Scan Wi-Fi networks (Linux with iw)
sudo iw wlan0 scan | grep -E "SSID:|signal:|channel:"

# macOS: use wireless diagnostics
# Hold Option and click the Wi-Fi icon, then select "Open Wireless Diagnostics"

Move your router away from microwave ovens, cordless phones, and neighboring networks on the same channel. The 5 GHz band typically offers less interference than 2.4 GHz.

Optimizing Your Connection

Once you identify issues, apply targeted fixes.

Wired Connections for Critical Work

Ethernet consistently outperforms Wi-Fi. For important calls or deployments, connect directly:

# Verify your connection is wired (Linux)
ip link show | grep -q "eth0" && echo "Wired connection active"

A gigabit Ethernet adapter costs under $20 and eliminates Wi-Fi variables entirely. This is the single biggest improvement most remote workers can make.

DNS Configuration

Slow DNS resolution adds latency to every request. Consider faster DNS servers:

# Test DNS performance (replace with your current DNS)
dig google.com | grep "Query time"

# Common fast DNS servers
# Cloudflare: 1.1.1.1
# Google: 8.8.8.8
# Quad9: 9.9.9.9

On macOS, configure DNS in System Preferences → Network → Advanced → DNS. On Linux, edit /etc/resolv.conf:

nameserver 1.1.1.1
nameserver 8.8.8.8

Quality of Service (QoS) Settings

If multiple people share your network, configure QoS on your router to prioritize work traffic. Most consumer routers support this through their web interface. Prioritize:

  1. Video conferencing (Zoom, Teams, Meet)
  2. SSH and VPN traffic
  3. Web browsing and documentation
  4. Background downloads and updates

VPN Optimization

VPNs add overhead and often route traffic through distant servers. Optimize your setup:

# Test VPN server proximity
ping -c 5 vpn-server-address

# Use WireGuard instead of OpenVPN for better performance
# WireGuard configuration example:
# [Interface]
# PrivateKey = <your-private-key>
# Address = 10.0.0.2/24
# DNS = 1.1.1.1

# [Peer]
# PublicKey = <server-public-key>
# Endpoint = vpn.example.com:51820
# AllowedIPs = 0.0.0.0/0

WireGuard typically achieves 3-4x the throughput of OpenVPN with lower latency.

Operating System Tweaks

TCP Window Scaling

For high-latency connections, TCP window scaling improves throughput:

# Check current settings (Linux)
sysctl net.ipv4.tcp_window_scaling

# Enable if not already enabled
sudo sysctl -w net.ipv4.tcp_window_scaling=1

Make this permanent by adding to /etc/sysctl.conf:

net.ipv4.tcp_window_scaling = 1

MTU Optimization

Incorrect MTU settings cause fragmentation and packet loss. Test optimal MTU:

# Find the optimal MTU (don't exceed 1500 for most networks)
ping -M do -s 1472 -c 4 google.com

If packets fragment, reduce the MTU. Set it in your network configuration or router.

Monitoring and Automation

Build monitoring into your workflow to catch issues before they impact work.

Continuous Monitoring Script

#!/bin/bash
# save as ~/bin/netmon

LOGFILE="$HOME/logs/network.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')

# Run speed test and log results
result=$(speedtest-cli --simple 2>/dev/null)
down=$(echo "$result" | grep "Download" | awk '{print $2}')
up=$(echo "$result" | grep "Upload" | awk '{print $2}')
ping=$(echo "$result" | grep "Ping" | awk '{print $2}')

echo "$DATE | Down: ${down} Mbps | Up: ${up} Mbps | Ping: ${ping} ms" >> $LOGFILE

Add this to cron for regular monitoring:

# Run every hour during work hours
0 9-17 * * 1-5 ~/bin/netmon

When to Upgrade Your Internet Plan

Sometimes hardware and software optimization hit their limits. Consider upgrading if:

Before upgrading, contact your ISP to test the actual line quality. Often, technicians can identify and fix external issues affecting your connection.

Summary

Start with baseline measurements, identify bottlenecks through local network analysis, apply wired connections and DNS optimizations for immediate gains, and use OS-level tuning for fine-tuning. Monitor continuously to catch degradation early.

Most remote workers see significant improvements from two changes: switching to Ethernet for critical work and configuring faster DNS servers. These cost nothing and take minutes to implement.

Built by theluckystrike — More at zovo.one