Hervorragende Software und praktische Tutorials
Die Logik ist einfach. Suchen Sie die IP-Adresse von chat.openai.com und legen Sie die Routing-Richtlinie so fest, dass die VPN-Schnittstelle übersprungen wird. StandardmäßigWireGuard oder OpenVPN Der gesamte Datenverkehr wird über die VPN-Schnittstelle geleitet. Ich stelle die Metriken jedoch niedriger ein als bei der WireGuard- oder OpenVPN-Schnittstelle und leite den Datenverkehr von chat.openai.com direkt über meinen Router statt über das VPN. Mein Setup sieht wie folgt aus:
- Debian- oder Ubuntu-Linux-Desktop
- WireGuard oder OpenVPN auf Linode oder AWS
- Standard-Router-IPv4: 192.168.2.254
Schritt 1 – Suchen Sie die Standardrouteninformationen
Sobald eine Verbindung zu WireGuard/OpenVPN besteht, verwenden Sie den IP-Befehl, um die Routing-Tabelle aufzulisten:
Das ist, was ich sehe:$ IP-Route anzeigen
Standard über 192.168.2.254 dev enp0s31f6 Proto-DHCP-Metrik 100 10.83.200.0/24 dev lxdbr0 Proto-Kernel-Bereichslink-Quelle 10.83.200.1 169.254.0.0/16 dev ln-sg Bereichslink-Metrik 1000 172.16.0.0/24 dev ln-sg Proto-Kernel-Bereichslink-Quelle 172.16.0.6 Metrik 50 192.168.2.0/24 dev enp0s31f6 Proto-Kernel-Bereichslink-Quelle 192.168.2.25 Metrik 100
Meine WireGuard-Schnittstelle mit dem Namen „ln-sg“ verwendet die Metrik 50 über der Standardmetrik 100. Der Trick besteht also darin, die IP-Adresse chat.openai.com mit einer niedrigeren Metrik hinzuzufügen, die direkt durch die IP-Adresse des Standard-Gateways 192.168.2.254 geleitet wird.
Beschreibung der automatischen Metrikfunktion für IPv4-Routing
Router-MetrikenIst ein Konfigurationswert, der für Routing-Entscheidungen verwendet wird. Routermetriken helfen Routern, aus mehreren möglichen Routen die beste Route zu einem Ziel auszuwählen. Routen verlaufen in Richtung des Gateways mit der niedrigsten Metrik. Routermetriken basieren typischerweise auf Informationen wie Pfadlänge, Bandbreite, Auslastung, Anzahl der Hops, Pfadkosten, Latenz, Maximum Transmission Unit (MTU), Zuverlässigkeit und Kommunikationskosten.
Link/Ziel/Route | messen |
---|---|
chat.openai.com (oder eine andere IP/Domäne Ihrer Wahl) | 10 |
WireGuard/OpenVPN | 50 |
Vertragsbruch | 100 |
Schritt 2 – Suchen Sie die IP-Adresse von chat.openai.com
Verwenden Sie den Befehl „dig“ oder „host“:
$ d='chat.openai.com' $ dig +short A "$d" | grep -v '\.$' $ ips="$(dig +short A "$d" | grep -v '\.$')" $ echo "$ips"
Schritt 3 – Fügen Sie die IP-Adresse von chat.openai.com zur Routing-Tabelle hinzu
Lassen Sie uns einige Shell-Variablen festlegen:
Verwenden wir eine Bash-For-Schleife, um diese IPs hinzuzufügen:$ my_gw="192.168.2.254" #Standard-GW
$ metric="10" #Routing-Metrikwert
für i in $ips führe sudo ip route aus und füge "$i" über "$my_gw" Metrik "$metric" hinzu. Fertig
Möchten Sie neu hinzugefügte IP-Adressen auflisten? Verwenden Sie den Befehl „ip“:
Das ist, was ich sehe:
$ IP-Route anzeigen $ IP-Route anzeigen | grep -w 'Metrik 10'
104.18.2.161 über 192.168.2.254 dev enp0s31f6 Metrik 10 104.18.3.161 über 192.168.2.254 dev enp0s31f6 Metrik 10
Schritt 4 – Testen
Starten Sie einen Webbrowser und greifen Sie darauf zu https://chat.openai.com/ Zu testende URL:
Voila. Das ist alles, von dem Sie unter Linux zu WireGuard oder OpenVPN wechseln können. ChatGPT Domänenmethode.
Schritt 5 – Entfernen Sie die IP-Adresse von chat.openai.com aus der Routing-Tabelle
Verwenden Sie den IP-Befehl erneut wie folgt:
$ für i in $ips; führen Sie sudo ip route del "$i" aus; fertig
Schritt 6 – Erstellen Sie ein Shell-Skript zur Automatisierung
chat.openai.com ändert seine IP-Adresse von Zeit zu Zeit. Hier ist ein allgemeines Skript zum Hinzufügen, Entfernen und Auflisten der Domain chat.openai.com und einiger anderer Domains, die bei Verbindung mit einem VPN nicht funktionieren.
Routing.policy-Shell-Skript
#!/bin/bash # routing.policy – Hauptskript zum Hinzufügen, Entfernen und Auflisten der Routing-Richtlinie # Autor: Vivek Gite {www.cyberciti.biz} unter GPLv 2.x+ # -------------------------------------------------------------------------------- set -e # Legen Sie Metrik und Gateway nach Ihren Anforderungen fest metric="10" my_gw="192.168.2.254" domain="chat.openai.com facebook.com fbcdn.net static.xx.fbcdn.net www.facebook.com" ips="" me="${0##*/}" # Wer bin ich? get_domain_ip_lists(){ für d in $domain mache ips="${ips} $(dig +short A "$d" | grep -v '\.$')" fertig ips="${ips/$'\n'/ }" # entferne '\n' ips="$(tr ' ' '\n'<<<"${ips}" | sort -u | check_for_root_user echo "${ips/$'\n'/,} wird zur Routing-Tabelle hinzugefügt ..." 1>&2 für i in $ips do if ! is_route_exists "$i" then sudo ip route add "$i" via "$my_gw" metric "$metric" else echo "$me-Route für $i existiert bereits, wird übersprungen..." fi done } remove_opneapi_route(){ check_for_root_user echo "${ips/$'\n'/,} wird aus der Routing-Tabelle entfernt ..." 1>&2 für i in $ips do if is_route_exists "$i" then sudo ip route del "$i" via "$my_gw" else echo "$me-Route für $i nicht gefunden, überspringen …" fi erledigt } show_openapi_route_status(){ echo "Routing-Informationen für die '$domain' (${ips/$'\n'/,}) …" # entferne neue Zeile aus den ${ips} für i in $ips, führe IP-Route aus, zeige "$i" erledigt } check_for_root_user(){ wenn [[ $EUID-ne 0 ]]; dann echo "$me-Skript muss als Root ausgeführt werden" 1>&2 exit 1 fi } ## main ## get_domain_ip_lists # setze '$ips' case "$me" in routing.policy.add) add_opneapi_route;; routing.policy.delete) remove_opneapi_route;; routing.policy.remove) remove_opneapi_route;; routing.policy.show) show_openapi_route_status;; routing.policy.status) show_openapi_route_status;; *) echo "Verwendung: routing.policy.add|routing.policy.delete|routing.policy.status";;
Verwenden Sie den Befehl ln, um einen Softlink zu erstellen
Verwenden Sie zunächst den Befehl chmod
Ausführungsberechtigungen festlegen Legen Sie nun diese Links fest:
Verwenden Sie den Befehl ls, um Folgendes zu überprüfen:
Ausgabe:$ chmod +x -v routing.policy
Modus von „routing.policy“ geändert von 0664 (rw-rw-r--) auf 0775 (rwxrwxr-x)$ ln -sv routing.policy routing.policy.add
$ ln -sv routing.policy routing.policy.remove
$ ln -sv routing.policy routing.policy.delete
$ ln -sv routing.policy routing.policy.show
$ ln -sv routing.policy routing.policy.status$ ls -l routing.policy*
-rwxrwxr-x 1 Vivek Vivek 1913 3. Feb. 00:07 routing.policy lrwxrwxrwx 1 Vivek Vivek 14 3. Feb. 00:08 routing.policy.add -> routing.policy lrwxrwxrwx 1 Vivek Vivek 14 3. Feb. 00:08 routing.policy.delete -> routing.policy lrwxrwxrwx 1 Vivek Vivek 14 3. Feb. 00:08 routing.policy.remove -> routing.policy lrwxrwxrwx 1 Vivek Vivek 14 3. Feb. 00:08 routing.policy.show -> routing.policy lrwxrwxrwx 1 Vivek Vivek 14 3. Feb. 00:08 routing.policy.status -> routing.policy
Testen Sie es:
$ sudo ./routing.policy.add
$ sudo ./routing.policy.status
$ Traceroute chat.openai.com #<--test routing
$ sudo ./routing.policy.delete
Zusammenfassen
Ich habe es mit WireGuard und OpenVPN auf meinen Debian- und Ubuntu-Linux-Desktops getestet. Es funktioniert einwandfrei und sollte mit jeder anderen Linux-Distribution funktionieren, solange der IP-Befehl funktioniert. Kurz gesagt, wir können das Routing bestimmter IP-Adressen über VPN-Verbindungen unter Linux (oder jedem anderen Betriebssystem wie macOS oder BSD) überspringen, solange Sie der Routing-Tabelle des Systems Routing-Regeln hinzufügen können. Sie können dieses Skript automatisch ausführen, wenn NetworkManager eine Verbindung zu Ihrer OpenVPN- oder WireGuard-Schnittstelle herstellt, indem Sie einen Hook hinzufügen. Platzieren Sie das Skript beispielsweise in /etc/network/if-up.d/ und machen Sie es ausführbar. Dadurch wird das Skript ausgeführt, wenn die VPN-Schnittstelle online geht. Wenn Sie das Skript ausführen möchten, wenn die VPN-Schnittstelle ausgefallen ist, platzieren Sie es in /etc/network/if-down.d/. Rufen Sie die Manpage von NetworkManager mit dem Befehl „man“ auf:
$ man 8 NetworkManager