lancachenet / lancache-dns

DNS Docker service for a lancache.
https://hub.docker.com/r/lancachenet/lancache-dns/
MIT License
282 stars 74 forks source link

Steam traffic is not being sent to the cache #45

Closed golyalpha closed 4 years ago

golyalpha commented 6 years ago

Issue Description: I'm trying to get the steamcache image running, but I am currently unable to get the traffic there, and when looking at the logs from the steamcache-dns container, I don't see any LAN IPs in steam related queries.

Docker Run Command Docker Compose file: docker-compose.yml Docker Container Output:

dns_1             | 28-Aug-2018 18:07:58.793 client @0x55c0674f40 192.168.1.1#24921 (steamcdn-a.akamaihd.net): query: steamcdn-a.akamaihd.net IN A + (172.18.0.5)
dns_1             | 28-Aug-2018 18:07:58.852 client @0x55c0674f40 192.168.1.1#53993 (valve1207.steamcontent.com): query: valve1207.steamcontent.com IN A + (172.18.0.5)
dns_1             | 28-Aug-2018 18:07:59.317 client @0x55c0674f40 192.168.1.1#32952 (valve1211.steamcontent.com): query: valve1211.steamcontent.com IN A + (172.18.0.5)
dns_1             | 28-Aug-2018 18:07:59.348 client @0x55c0674f40 192.168.1.1#36479 (valve1205.steamcontent.com): query: valve1205.steamcontent.com IN A + (172.18.0.5)
dns_1             | 28-Aug-2018 18:07:59.365 client @0x55c0674f40 192.168.1.1#21008 (valve1213.steamcontent.com): query: valve1213.steamcontent.com IN A + (172.18.0.5)
JasonRivers commented 6 years ago

Have you configured your network to use the DNS? The logs say that you haven't, you probably want your DHCP server (Router) to point to the cache dns.

golyalpha commented 6 years ago

The router is using the 192.168.1.2 IP (this is the IP where it's hosted at) as the primary DNS server, how else would it receive queries to show in logs? If your issue is that the client is always 192.168.1.1, it's because the router sets itself as the primary DNS server over DHCP, and then queries 192.168.1.2 for any domains that don't end in .lan Until I set that, the container output contained only the init logs and that was it.

JasonRivers commented 6 years ago

Please could you add the environment of UPSTREAM_DNS to your compose. Is there a reason why you're building the containers rather than pulling from Dockerhub?

golyalpha commented 6 years ago

It's running on an ARM64 CPU, that's why the containers are being built locally (image namespace is steamcache-arm64). If I understood correctly, you want me to add the UPSTREAM_DNS variable to the DNS container?

If yes, this is the log output after starting a game download:

dns_1             | 31-Aug-2018 17:34:37.504 client @0x55bd92a700 192.168.1.1#50347 (valve1201.steamcontent.com): query: valve1201.steamcontent.com IN A + (172.18.0.9)
dns_1             | 31-Aug-2018 17:34:38.366 client @0x55bd91baa0 192.168.1.1#27108 (valve1211.steamcontent.com): query: valve1211.steamcontent.com IN A + (172.18.0.9)
dns_1             | 31-Aug-2018 17:34:38.391 client @0x55bd91baa0 192.168.1.1#48585 (valve1208.steamcontent.com): query: valve1208.steamcontent.com IN A + (172.18.0.9)

New docker-compose.yml

Container log with non-steam DNS queries removed dns.log

Edit: I have also just made sure that the only DNS server set on the router is 192.168.1.2, and that my computer is in fact using either 192.168.1.1 or 192.168.1.2 as the DNS server. No change.

VibroAxe commented 5 years ago

@golyalpha you should set the DNS server field in your dhcp server (on your router) not as the router's primary dns server (this should probably be your ISP's)

Once you have done that we should see queries in the container logs from your actual computer, not just from the router. (your computer shouldn't be querying 192.168.1.1 directly). I would probably then set upstream_dns to be 192.168.1.1 which will mean internal name resolution for your network will still work.

I'm going to close this issue in two weeks if there's no further issue/response

golyalpha commented 5 years ago

@VibroAxe could've used this bit of help a few months ago. No matter. I'll try to set up the box for Steam cache again, and will update if this worked. That being said, I can't seem to be able to set up DHCP on DD-WRT to set other server as the DNS, which is kind of a shame.

golyalpha commented 5 years ago

Well, I rebuilt the entire thing, ended up using Monolithic, and this is what came out: dnslogs.txt Also, I moved from the compose file to using a script to build and start the containers:

#!/bin/bash

docker kill $(docker ps -q)
docker rm $(docker ps -aq)

cd ubuntu
docker build . -t steamcache/ubuntu:latest
cd ..

cd ubuntu-nginx
docker build . -t steamcache/ubuntu-nginx:latest
cd ..

cd generic
docker build . -t steamcache/generic:latest
cd ..

HOST_IP=`hostname -I | cut -d' ' -f1`

cd steamcache-dns
docker build . -t steamcache-dns:aarch64
docker run --restart unless-stopped --name steamcache-dns --detach -p 53:53/udp -e USE_GENERIC_CACHE=true -e LANCACHE_IP=$HOST_IP steamcache-dns:aarch64
cd ..

cd monolithic
docker build . -t monolithic:aarch64
docker run --restart unless-stopped --name lancache --detach -v /cache/data:/data/cache -v /cache/logs:/data/logs -p 80:80  monolithic:aarch64
cd ..

cd sniproxy
docker build . -t steamcache/sniproxy:latest
docker run --restart unless-stopped --name sniproxy --detach -p 443:443 steamcache/sniproxy:latest
cd ..

echo Please configure your dhcp server to serve dns as $HOST_IP

Had to modify the ubuntu image slightly by removing the forced mirrors in overlay. Since it being there breaks apt on the arch I'm trying to run it on.

unspec commented 4 years ago

Closing due to inactivity, feel free to reopen if there is still something you think we can help with.