@derd Du brauchst einmal eine Swiss IP auf dem API Server und auch der Client braucht ne Swiss IP (bei Ultimate bin ich mir nicht ganz sicher, aber bei Free auf jeden Fall). Dann kommt noch hinzu: Swiss IP ist nicht gleich Swiss IP. Bzw. nicht jede funktioniert. Es gibt auch Swiss IPs die von Zattoo geblockt werden. Falls du nen VPN nutzt würde ich die Swiss IP einmal per Browser testen, ob die überhaupt genommen wird.
Also, dass der Server bei dem die IP läuft eine Swiss IP benötigt war mir bisher klar (bis vorhin, als kurz das Thema aufkam, warum ich einen VPN dafür nutze). Scheinbar funktioniert Zattoo Ultimate aus Deutschland auch ohne all die Späße und auch aus dem Ausland. Das geht lt. Zattoo Website nicht. Der Client, der auf die API von Außen zugreift braucht allerdings keine schweizer IP Adresse. Das würde auch bisschen den Sinn des Skripts aushebeln oder nicht? Zattoo bekommt ja von dem Client nichts mit, da nur die API "schaut" und den Stream weiterleitet @easy4me bin ich da soweit auf dem richtigen Dampfer?!
Daran habe ich mir auf Ubuntu auch schon die Zähne ausgebissen. Erfolglos.Den einzigen Erfolg hatte ich auf meinem Windows Lappi mit ner Ubuntu VirtualBox. Da hab ich dann ein zweites Netzwerk angelegt und die entsprechenden Ports darüber geleitet. Da geht das ja auch ziemlich leicht in den Settings per Maus. Aber welche Befehle auf nem richtigen Server dafür nötig sind - 0 Ahnung.
Ich habe dazu ein Mini-Skript geschrieben, welches auf Ubuntu und mit OpenVPN bzw OpenPYN für NordVPN läuft. Sollte auch gehe wenn ihr ganz normal OpenVPN verwendet. Das ganze funktioniert so, dass OpenVPN sobald die Route hinzugefügt wird ein route-up Skript lädt. Damit eben das route-up Skript geladen wird sieht meine openpyn.service Daten im Ordner /etc/systemd/system wie folgt aus:
[Unit]
Description=NordVPN connection manager
Wants=network-online.target
After=network-online.target
After=multi-user.target
[Service]
Type=simple
User=root
WorkingDirectory=/usr/local/lib/python3.6/dist-packages/openpyn/
ExecStartPre=/bin/sleep 5
ExecStart=/usr/local/bin/openpyn ch -t 20 -o '--route-noexec --route-up /home/derd/route-up.sh --ping 10 --ping-restart 30'
ExecStop=/usr/local/bin/openpyn --kill
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
Alles anzeigen
Was wird gemacht bei ExecStart? openpyn will sich nach CH verbinden und testet randomisiert 20 Server und verbindete sich mit dem schnellsten, route-noexec bedeutet keine Route-Einträge vom OpenVPN Server werden akzeptiert und in die Routingtabelle geschrieben (wichtig), route-up bedeutet ein Skript wird geöffnet welches die Routen manuell anlegt.
Das Skript welches aufgerufen wird fragt als erstes die IPs die von Zattoo verwendet werden ab, damit genau diese und eben nur diese im weiteren Verlauf über den VPN geroutet werden. Das sieht dann wie folgt aus:
#!/bin/bash
# WICHTIG: USE –route-noexec AND THEN THIS FILE WITH –route-up
zattoo1_ranges=$(curl https://ipinfo.io/AS8302 | grep -e "^ *[0-9]\{2,3\}\.[0-9]\{2,3\}\.[0-9]\{2,3\}\.0/24" | tr -d " ")
zattoo2_ranges=$(curl https://ipinfo.io/AS16509 | grep -e "^ *[0-9]\{2,3\}\.[0-9]\{2,3\}\.[0-9]\{2,3\}\.0/24" | tr -d " ")
zattoo3_ranges=$(curl https://ipinfo.io/AS15517 | grep -e "^ *[0-9]\{2,3\}\.[0-9]\{2,3\}\.[0-9]\{2,3\}\.0/24" | tr -d " ")
zattoo4_ranges=$(curl https://ipinfo.io/AS16509 | grep -e "^ *[0-9]\{2,3\}\.[0-9]\{2,3\}\.[0-9]\{2,3\}\.0/24" | tr -d " ")
# Routes to Zattoo use VPN 1
for range in $zattoo1_ranges; do
/sbin/ip route add $range via $route_vpn_gateway dev $dev
done
# Routes to Zattoo use VPN 2
for range in $zattoo2_ranges; do
/sbin/ip route add $range via $route_vpn_gateway dev $dev
done
# Routes to Zattoo use VPN 3
for range in $zattoo3_ranges; do
/sbin/ip route add $range via $route_vpn_gateway dev $dev
done
# Routes to Zattoo use VPN 4
for range in $zattoo4_ranges; do
/sbin/ip route add $range via $route_vpn_gateway dev $dev
done
/sbin/ip route add 91.123.0.0/16 via $route_vpn_gateway dev $dev
/sbin/ip route add 79.125.22.0/24 via $route_vpn_gateway dev $dev
/sbin/ip route add 104.20.54.0/24 via $route_vpn_gateway dev $dev
/sbin/ip route add 104.103.0.0/24 via $route_vpn_gateway dev $dev
/sbin/ip route add 62.65.130.0/24 via $route_vpn_gateway dev $dev
/sbin/ip route add 52.212.210.0/24 via $route_vpn_gateway dev $dev
/sbin/ip route add 80.238.248.0/24 via $route_vpn_gateway dev $dev
/sbin/ip route add 104.26.0.0/16 via $route_vpn_gateway dev $dev
Alles anzeigen
Am Schluss des Skripts werden noch einmal von mir manuell herausgefundene IP Blöcke von Zattoo in die Routingtabelle eingetragen. Das liegt daran, dass ipinfo.io irgendwann Fehler ausgespuckt hat, weil zu viele Zugriffe auf die Free-API waren und dann die Route Einträge nicht geschrieben werden konnten. Mit den manuellen IP Blöcken am Ende hat man halt doppelte Sicherheit.
Tatsache ist aber - hin oder her - FullHD über einen NordVPN OpenVPN Tunnel so wie er hier beschrieben ist funktioniert nicht einwandfrei. Die Bandbreite scheint irgendwie das Problem zu sein. Der VPS auf dem das läuft ist mit 1Gbit angebunden, 1Core, 1GB RAM 5GB NVME SSD.