Oh boi, here I give you the solution for that. This document is based on these links:
- https://steamcommunity.com/app/221410/discussions/2/616189106498372437/?l=portuguese&ctp=8
- https://wiki.archlinux.org/title/dnsmasq#NetworkManager
- ValveSoftware/steam-for-linux#3401
My solution seems to be deprecated, there are other solution from the comment on this Gist, that actually works. So, please use that instead, it's way much simpler, and it works. https://gist.github.com/FikriRNurhidayat/ce18426ad94fff2140538c0adf0e06ec?permalink_comment_id=4806133#gistcomment-4806133
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.
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.
First you need to install dnsmasq.
sudo pacman -S dnsmasqsudo apt install dnsmasqAfter 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 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.
Restart your network manager service.
sudo systemctl restart NetworkManagerWait 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.
None of the above fixed it for me.
This did fix it for me. #12082
steam steam://open/consoledownload_sourcesinto steam console.look for steam stuck on 1 download source. If it is route it to the loopback address to stop steam from using it, and force it to use other download sources
Before blocking
cache2-den-iwst.steamcontent.comI was getting ~100 Mbps on that 1 connection.
After blocking in
/etc/hostsI was able to get 16 simultaneous connections, and I reached peak 1.6 Gbps (still about 1 Gbps lower than my 2.5 Gbps link from my ISP, but I'll take a 10x improvement)
This pic shows the end of the download where speeds start to slow down just as the download is finishing, so it's not the peak speed.
