Script um schnellsten Server per Ping zu ermitteln für VPN

Hans Dampf

Cadet 3rd Year
Registriert
Apr. 2014
Beiträge
49
Hi!

Ich nutze unter Linux OpenVPN.

Jetzt suche ich eine Möglichkeit, beim Start eine Sammlung von Servern, sagen wir mal ca. 10 Stück anzupingen, um dann anschließend die VPN Verbindung mit dem schnellsten Server aufzubauen.

Kann mir einer sagen, wie ich das am besten anstellen kann?

Danke!

Hans
 
Außer er will via VPN Online-Spiele spielen ;) In allen anderen Fällen wäre mir Bandbreite wichtiger als Ping.
 
HaZu schrieb:
Ob ein Server "schnell" ist hat doch nichts mit dem Ping zu tun :confused_alt:

Ich brauche nur den schnellsten Server nach PING. Der Rest ist relativ uninterssant, es muss nur schnell geantwortet werden. ;)

Bandbreite ist absolut uninteressant.
 
Zuletzt bearbeitet:
HaZu hat vollkommen recht. Wie schnell ein Server ICMP Pakete abarbeitet, sagt noch lange nichts über dessen tatsächliche Geschwindigkeit beim Aufbauen einer VPN Verbindung aus
 
Leute, irgendwie kommen wir hier vom Thema ab.

Ich habe doch gesagt, was ich gerne hätte. Wieso, weshalb und warum, das solltet Ihr meine Sorge sein lassen. ;)
Ergänzung ()

So, ich habe jetzt via Google dieses passende Skript gefunden

Code:
#!/bin/bash
  
# add ip / hostname separated by white space
HOSTS="newyork-1a.vtnoc.net richmond-1a.vtnoc.net richmond-1b.vtnoc.net houston-1a.vtnoc.net houston-1b.vtnoc.net chicago-1a.vtnoc
.net chicago-1b.vtnoc.net chicago-1c.vtnoc.net chicago-1d.vtnoc.net chicago-1e.vtnoc.net chicago-1f.vtnoc.net chicago-1g.vtnoc.net
 sanjose-1a.vtnoc.net sanfrancisco-1a.vtnoc.net"
  
Smallest="200000"
Server=""
  
for myHost in $HOSTS
do
  Current1=` ping -c 4 -q -i .2 $myHost | grep avg | awk -F'/' '{print $5 }'`
  Current=${Current1/./}
  
  #echo $myHost $Current
  if [ "$Current" -lt "$Smallest" ]
 then
      Server=$myHost
      Smallest=$Current
  fi
done
echo "Smallest = $Smallest @ $Server"

Openvpn starte ich via openvpn client.conf

Wie stelle ich das jetzt am besten an?

Ich dachte daran, das Ergebnis des Speedtests in eine .txt Datei zu schreiben und den Server aus der Textdatei dann
in der client.conf auslesen?

Müsste doch funktionieren, oder?
 
Ich wuerd die IP des schnellsten Servers einfach in die /etc/hosts eintragen.
 
Aber die Server ändern sich ja bzw. es kann auch mal einer down sein.

Ich habe jetzt auch nicht wirklich Ahnung vom Skript erstellen. ;)
 
Ja und?
Beim connecten liest du mit "dig" die IPs fuer vpn.anbieter.de aus, diese pingst du durch, und den schnellsten traegst du in der /etc/hosts ein.
Das machst du einfach bei jedem connecten.
 
Ulukay schrieb:
Ja und?
Beim connecten liest du mit "dig" die IPs fuer vpn.anbieter.de aus, diese pingst du durch, und den schnellsten traegst du in der /etc/hosts ein.
Das machst du einfach bei jedem connecten.

Er möge mir bitte erklären, wie das geht. Soweit reichen meine Kenntnisse nicht. ;)
 
Naja, z.b.:
Code:
dig pw.openvpn.ipredator.se | grep '^pw.openvpn.ipredator.se' | awk '{print $5}' | while read line; do ping -q -c2 $line|egrep 'statistic|mdev'|tr -d '\n'| awk '{print $2" "$8}'; done| sort -t '/' -k 2

Liefert dir eine Liste an IP Adressen, sortiert nach average ping.

Da nimmst dir die erste, und schreibst einen Eintrag in deine /etc/hosts.

Dazu gaebe es eine haessliche Loesung, aber die wuerde funktionieren.
Schreibe einfach die gesamte /etc/hosts jedesmal neu.

Code:
echo "127.0.0.1 localhost" > /etc/hosts
echo "192.168.1.1 rechnername rechnername.domain" >> /etc/hosts
dig pw.openvpn.ipredator.se | grep '^pw.openvpn.ipredator.se' | awk '{print $5}' | while read line; do ping -q -c2 $line|egrep 'statistic|mdev'|tr -d '\n'| awk '{print $2" "$8}'; done| sort -t '/' -k 2 | head -n 1 | awk '{print $1 " pw.openvpn.ipredator.se"}' >> /etc/hosts

Das packst in dein Script und fertig. Dann kann der vpn daemon naemlich immer auf diesselben Hostname connecten.
 
Sind das im Skript in Beitrag #6 die tatsächlichen Hosts? Hinter all diesen Hostnamen steckt die gleiche IP, was den Nutzen eines Ping-Wettbewerbs "leicht" senkt. :)
 
Zurück
Oben