Skip to content

Instantly share code, notes, and snippets.

@kotleni
Created August 11, 2024 11:06
Show Gist options
  • Save kotleni/e560f5e5cc73353e7f6571db95cd59b9 to your computer and use it in GitHub Desktop.
Save kotleni/e560f5e5cc73353e7f6571db95cd59b9 to your computer and use it in GitHub Desktop.
fix-steam-linux.md

Steam Download Speed is so slow on Linux

Oh boi, here I give you the solution for that. This document is based on these links:

Why is it slow?

I don't know, perhaps the Steam application doesn't cache the dns locally or something hence your computer will always lookup for the domain everytime you download it on each chunks. CMIIW.

Here's how you solve it

dnsmasq

This is a binary that will act as DNS server on your local machince, so whenever your machine want to know what google.com is, we will talk to this software then, they will look it up for you and save it to the local cache.

Install dnsmasq

First you need to install dnsmasq.

Arch Linux
sudo pacman -S dnsmasq
Arch
sudo pacman -Syu dnsmasq

Configure dnsmasq

After that edit /etc/dnsmasq.conf

# Tell which address should dnsmasqd listen 
listen-address=127.0.0.1

# Tell dnsmasq to not read /etc/resolv.conf
# since it will only contain itself anyway
no-resolv 

# Which port will dnsmasq run
port=0 

# Outside world nameserver,
# so when the dnsmasq don't know what domain it is,
# it will talk to 1.1.1.1 and save the answer to locally
server=1.1.1.1 

# I believe this is Google Nameserver
server=8.8.8.8
server=8.8.4.4

Network Manager

network-manager is a service that will run on systemd, it handles everything about the networking on your local machine.

The only thing that you need to configure on this service is just the dns entry. Edit this /etc/NetworkManager/NetworkManager.conf, don't forget edit it with sudo privileges. Add this following line:

[main]
dns=dnsmasq

Those line will tell network manager to use dnsmasq as dns. And it will automatically start the dnsmasq service everytime NetworkManager started.

Finally

Restart your network manager service.

sudo systemctl restart NetworkManager

Wait for a while. Then try to download it again, it may takes time to actually be on normal speed, since your local machine will lookup for a lot of address on Steam CDN/Repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment