Open tazihad opened 3 years ago
well, what kind of output do you get ? i already mentioned a couple tips for debugging this in the other issue report; maybe you should try that and report back. also, is there any info about whether steam uses some sort of container ?
If I use below command. Steam download of games won't use proxy. I am using socks4 proxy from free proxy site. I can see that proxy is working in normal download manager or firefox custom proxy mode.
$ LD_PRELOAD=/usr/lib/libproxychains4.so proxychains steam
And If I use lib32 one that was build from AUR as you have mentioned in previous issued. I get this error:
$ LD_PRELOAD=/usr/lib32/libproxychains4.so proxychains steam
I hope I am giving enought information. And I am giving exact steps of what I did.
I have also tried to put LD_PRELOAD in .zshrc
but it looks like both of them give same above errors.
.zshrc
LD_PRELOAD=/usr/lib/libproxychains4.so
LD_PRELOAD=/usr/lib32/libproxychains4.so
Either the error is
ERROR: ld.so: object '/usr/lib/libproxychains4.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
or
ERROR: ld.so: object '/usr/lib32/libproxychains4.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
I tried building the 32-bit version from AUR
I also tried manually.
make clean ; CC="gcc -m32" ./configure ; make ; sudo make install
according to your own log (when you used 32 bit version) it worked:
[2021-07-21 16:15:51] Downloading manifest: https://cdn.akamai.steamstatic.com/client/steam_client_ubuntu12 Installing breakpad exception handler for appid(steam)/version(1626461631) [proxychains] Strict chain ... 160.202.145.161:3629 ... 104.97.76.202:443 ... OK [2021-07-21 16:15:51] Download skipped: /client/steam_client_ubuntu12 version 1626461631, installed v
what happens here is that steam uses a mix of 64bit and 32bit binaries, however only the 32bit ones are used to download. that means you get one error message per 64bit process started, which is annoying, but doesnt prevent it from working with the 32bit executable responsible for downloading stuff.
the optimal solution to this problem is to find out which one of the processes launched during steam startup does the internet connection and inject proxychains only into that process. if the process is started by a shell script, it should be easy to modify it. in order to find out which process is doing the connections, run strace -f -o log -s 512 steam
and then look in the result for socket(PF_INET, SOCK_STREAM
- the line is prefixed with a process id number, and using it you can find out which process was doing it by looking at the exec syscalls with that pid.
for example if the line doing the socket syscalls looks like
26240 socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = 3
the process id was 26240, so do grep '26240 execve' < log
; the last of those lines is probably the culprit.
the result from that command should look like
26240 execve("/bin/sh", ["sh", "-c", "curl google.com"], [/* 22 vars */]) = 0
26240 execve("/bin/curl", ["curl", "google.com"], [/* 22 vars */]) = 0
This is the output. I can't find socket.
$ strace -f -o log -s 512 steam
Also I think that strict chain ok line was because steam load its front page store. which is html.
the output is in the file called "log".
this is the output I get.
$ grep '28543 execve' < log
28543 execve("/home/pulsar/.local/share/Steam/ubuntu12_32/steam", ["/home/pulsar/.local/share/Steam/ubuntu12_32/steam"], 0x5578bf5ce870 /* 89 vars */) = 0
28543 is the (only) one doing a/the socket call ? if so check whether /home/pulsar/.local/share/Steam/ubuntu12_32/steam is a shell script, and if so add LD_PRELOAD=/path/to/32bit/libproxychains4.so somewhere close to the top
LD_PRELOAD=/usr/lib32/libproxychains4.so /home/pulsar/.local/share/Steam/ubuntu12_32/steam
gives me same error
There are other socket calls like this
grep '28621 execve' < log ✔ 5s
28621 execve("/bin/sh", ["sh", "-c", "LD_LIBRARY_PATH=\"$SYSTEM_LD_LIBRARY_PATH\" PATH=\"$SYSTEM_PATH\" lspci -mm -n"], 0xffc9c86c /* 89 vars */ <unfinished ...>
28621 execve("/usr/bin/lspci", ["lspci", "-mm", "-n"], 0x562d96441370 /* 89 vars */) = 0
I have tried again after restarting pc. I guess proxy connects with 32bit proxychains but fails because Failed to load steamui.so
$ LD_PRELOAD=/usr/lib32/libproxychains4.so ~/.local/share/Steam/ubuntu12_32/steam
[proxychains] DLL init: proxychains-ng 4.14
[2021-07-22 00:41:49] Startup - updater built Jul 20 2021 22:25:51
Installing breakpad exception handler for appid(steam)/version(1626824053)
Looks like steam didn't shutdown cleanly, scheduling immediate update check
[2021-07-22 00:41:50] Loading cached metrics from disk (/home/pulsar/.local/share/Steam/package/steam_client_metrics.bin)
[2021-07-22 00:41:50] Using the following download hosts for Public, Realm steamglobal
[2021-07-22 00:41:50] 1. https://cdn.akamai.steamstatic.com, /client/, Realm 'steamglobal', weight was 100, source = 'update_hosts_cached.vdf'
[2021-07-22 00:41:50] 2. https://cdn.cloudflare.steamstatic.com, /client/, Realm 'steamglobal', weight was 100, source = 'update_hosts_cached.vdf'
[2021-07-22 00:41:50] 3. http://media.steampowered.com, /client/, Realm 'steamglobal', weight was 1, source = 'baked in'
Installing breakpad exception handler for appid(steam)/version(1626824053)
[2021-07-22 00:41:50] Checking for update on startup
[2021-07-22 00:41:50] Checking for available updates...
[2021-07-22 00:41:50] Downloading manifest: https://cdn.akamai.steamstatic.com/client/steam_client_ubuntu12
Installing breakpad exception handler for appid(steam)/version(1626824053)
[proxychains] Strict chain ... 160.202.145.161:3629 ... 104.97.76.184:443 ... OK
[2021-07-22 00:41:50] Download skipped: /client/steam_client_ubuntu12 version 1626824053, installed version 1626824053, existing pending version 0
[2021-07-22 00:41:50] Nothing to do
[2021-07-22 00:41:50] Verifying installation...
[2021-07-22 00:41:50] Performing checksum verification of executable files
[2021-07-22 00:41:51] Verification complete
Failed to load steamui.so - dlerror(): steamui.so: cannot open shared object file: No such file or directory
[2021-07-22 00:42:45] Shutdown
Installing breakpad exception handler for appid(steam)/version(1626824053)
Installing breakpad exception handler for appid(steam)/version(1626824053)
LD_PRELOAD=/usr/lib32/libproxychains4.so /home/pulsar/.local/share/Steam/ubuntu12_32/steam
that's not what i said. i said:
check whether /home/pulsar/.local/share/Steam/ubuntu12_32/steam is a shell script, and if so add LD_PRELOAD=/path/to/32bit/libproxychains4.so somewhere close to the top
that means you should open the file in your editor and modify it if its a script, and then launch the main app in the usual way
you can also check in your strace log which was the original process that executed that steam program and modify that, if possible.
okay. this is an executable file. doesn't open in any editor.
so which process is starting it (it's the process that owned or created that pid, just find previous execve for that pid, or if there's none a fork or clone syscall that returned the pid)
okay. this is an executable file. doesn't open in any editor.
so which process is starting it (it's the process that owned or created that pid, just find previous execve for that pid, or if there's none a fork or clone syscall that returned the pid)
actuallcy we can fix this easier:
just mv /home/pulsar/.local/share/Steam/ubuntu12_32/steam /home/pulsar/.local/share/Steam/ubuntu12_32/real_steam
and then put a shell script to /home/pulsar/.local/share/Steam/ubuntu12_32/steam that contains
#!/bin/sh
export LD_PRELOAD=.....32...so
exec ./real_steam
and chmod +x it
I did that, But I get the same error.
I did that
you did what ? if you move the real 32bit steam binary i mentioned in https://github.com/rofl0r/proxychains-ng/issues/386#issuecomment-884955833 to another location and replace it with a shell script running ONLY that renamed binary with LD_PRELOAD and nothing else you don't need to use LD_PRELOAD=/usr/lib32/libproxychains4.so steam anymore because the script runs the right executable with it set already.
I ran without LD_PRELOAD. I always get same result. This error screen.
I couldn't run steam through proxychains-ng and use socks4 proxy. But thank you for helping me debugging things. However I am able to use socks4 proxy in steam using redsocks. I followed this easy guide.
@tazihad Were you able to just put steam through the socks proxy or did you end up having to put all traffic through the socks proxy?
@freemin7 I made a script using redsocks. Which put all traffic through socks proxy. Steam doesn't work well with proxychains. Since, steam uses 32bit packages. Here's my script
So a WONTFIX ? That is fine.
So a WONTFIX ?
OP closed the issue himself. there's nothing proxychains-ng can do to fix the situation, apart from having some kind of "how-to" for this specific scenarion. unfortunately OP didn't follow all the way through with figuring out how this could be made to work, and i don't have steam so can't try it myself.
since i spent considerable effort to help OP with debugging tips, i'll reopen this so i won't have to repeat myself when someone else comes along with the same question.
I did that
you did what ? if you move the real 32bit steam binary i mentioned in #386 (comment) to another location and replace it with a shell script running ONLY that renamed binary with LD_PRELOAD and nothing else you don't need to use LD_PRELOAD=/usr/lib32/libproxychains4.so steam anymore because the script runs the right executable with it set already.
@rofl0r This does not work because steam restores all its startup scripts and executables when it launches. But I can't tell if it's really an issue with proxychains. All I observed is steam login fails. There were messages like "strict chain ... OK" in the output. However, my socks proxy (configured in proxychains.conf) didn't receive any requests.
I just built a 32-bit proxychains and tested it again. I can confirm that proxychains works. But since steam uses both 32-bit and 64-bit binaries, programs like steamwebhelper are not handled. Maybe proxychains is not the right option for such scenarios.
This does not work because steam restores all its startup scripts and executables when it launches.
from where ?
This does not work because steam restores all its startup scripts and executables when it launches.
from where ?
From online. It does integrity check when launches. Here's the log.
[2022-05-07 11:19:58] Verifying installation...
[2022-05-07 11:19:58] BVerifyInstalledFiles: steam.sh is 22813 bytes, expected 22814
[2022-05-07 11:19:58] Verification complete
[2022-05-07 11:19:58] Downloading update...
[2022-05-07 11:19:58] Checking for available updates...
[2022-05-07 11:19:58] Downloading manifest: https://media.st.dl.pinyuncloud.com/client/steam_client_publicbeta_ubuntu12
[2022-05-07 11:19:58] Manifest download: send request
[2022-05-07 11:19:58] Manifest download: waiting for download to finish
[2022-05-07 11:19:59] Manifest download: finished
[2022-05-07 11:19:59] Downloaded new manifest: /client/steam_client_publicbeta_ubuntu12 version 1651527325, installed version 1651527325, existing pending version 0
[2022-05-07 11:19:59] Download complete.
[2022-05-07 11:19:59] uninstalled manifest found in /home/mljli/.local/share/Steam/package/steam_client_publicbeta_ubuntu12 (1).
[2022-05-07 11:20:00] Extracting package...
[2022-05-07 11:20:18] Installing update...
[2022-05-07 11:20:27] Cleaning up...
[2022-05-07 11:20:27] Update complete, launching Steam...
that's a pity. so it looks the only option left is to ask steam upstream to either
I had it working with Proxychains4 i386 for a few days. Now it refuses to login throwing me the same "finalize MOD failed with error 2" error.
Can someone with a working proxychains steam install post their proxychains.conf file here so I may copy it? Thank you.
With 64-bit Proxychains, I can log into Steam, but none of the web-pages load; I can't download any games, either. With the 32-bit lib, I can't log-in.
With steamcmd
, using 32-bit lib the initial client update/download went through my proxy but I couldn't log in. With the 64-bit lib, I can log in fine.
I tried LD_PRELOAD="/usr/lib/libproxychains4.so:/usr/lib32/libproxychains4.so" steam
(loading both 32- and 64-bit libs), but get "Could not connect to the Steam network".
anyone tried to get a pure 32bit version of steam and run it with 32 bit proxychains-ng ?
for the former there are 2 possible solutions, either use a 32 bit x86 distro like debian in a rootfs/container/vm, or run linux32 steam-installer
, which pretends to steam-installer to run on a 32 bit host.
anyone tried to get a pure 32bit version of steam and run it with 32 bit proxychains-ng ? for the former there are 2 possible solutions, either use a 32 bit x86 distro like debian in a rootfs/container/vm, or run
linux32 steam-installer
, which pretends to steam-installer to run on a 32 bit host.
I set up a 32-bit Debian VM today. Steam no longer supports 32-bit Linux - well, the web browser at least. I couldn’t see any of the normal interface when I started it (e.g Store and Library), just a window saying the web browser wouldn’t work.
People on forums said that links from a regular web browser will open in Steam, will try tomorrow to see if I can download one of my games.
i wasn't aware that the steam app uses a built-in webbrowser, but in this case it's probably necessary to use the proxy_dns_daemon method in proxychains.conf
any update on this? Would be quite useful for people doing mptcp bonding with shadowsocks
I have seen previous issue. I understand that steam is 32 bit application. I am using arch. I have build proxychains 32 bit from AUR But I am unable to figure out how to use it. It seems that socks4 proxy isn't connecting through steam. But works in browsers. It would be helpful if you elaborate about how to use proxychains through 32 bit apps