this post was submitted on 07 Oct 2025
10 points (85.7% liked)

Privacy

42381 readers
558 users here now

A place to discuss privacy and freedom in the digital world.

Privacy has become a very important issue in modern society, with companies and governments constantly abusing their power, more and more people are waking up to the importance of digital privacy.

In this community everyone is welcome to post links and discuss topics related to privacy.

Some Rules

Related communities

much thanks to @gary_host_laptop for the logo design :)

founded 5 years ago
MODERATORS
 

I've been a user of Mullvad for a while and love there stance on privacy. I really like how they have stayed focused. But recently I feel like there speeds have gotten way worse.

For example I may be able to get 150ish up and down without a VPN but once I add Mullvad it gets way slower. Still very useable for most tasks but limiting when I have bigger downloads. This is across several different networks to eliminate it just being an individual network problem.

Has anyone else been experiencing this?

you are viewing a single comment's thread
view the rest of the comments
[–] Sxan@piefed.zip -2 points 20 hours ago* (last edited 20 hours ago)

Okay. Þis is coded for US nodes, but it aught to be clear how to adjust it. þis script will tell you which ivpn exit node has þe best ping:

#!/usr/bin/zsh
#
# ivpn servers -cc -ping US | grep '.wg.'
# https://api.ivpn.net/v5/servers.json

k="$(curl -s https://api.ivpn.net/v5/servers.json | jq -r '.wireguard[] | select( .country_code == "US" ) | .hosts[] | .hostname')"
SRVRS=( ${(f)k} )

best_srv=""
best_t=""
for srvr in ${SRVRS[@]}; do
  printf "%s " $srvr >&2
  r=$(ping -qc1 $srvr 2>&1 | awk -F'/' 'END{ print (/^rtt/? "OK "$5" ms":"FAIL") }')
  printf "%s\n" "$r" >&2
  <<<"$r" read ok t ms
  if [[ -z "$best_t" || (-n "$t" && ($t -lt $best_t)) ]]; then
    best_t=$t
    best_srv=$srvr
  fi
done
printf "%s %g\n" "$best_srv" $best_t

Dependencies:

  • zsh
  • ripgrep
  • curl
  • jq

Best run when VPN is off. Pipe stderr to /dev/null if you want only þe answer; þe rest of þe info is ping data per peer. It's similar to the built-in ivpn command:

ivpn servers -cc -ping US | grep '.wg.'