LinuxでWireGuardまたはOpenVPNからChatGPTをスキップするプロセス

ロジックはシンプルです。chat.openai.comのIPアドレスを見つけ、VPNインターフェースをスキップするルーティングポリシーを設定します。デフォルトでは、 または すべてのトラフィックはVPNインターフェース経由でルーティングされますが、WireGuardやOpenVPNインターフェースよりも低いメトリックを設定し、chat.openai.comのトラフィックをVPNではなくルーター経由で直接ルーティングします。設定は以下の通りです。

  • Debian または Ubuntu Linux デスクトップ
  • Linode または AWS 上の WireGuard または OpenVPN
  • デフォルトルータ IPv4: 192.168.2.254
知らせ:これらのコマンドは、WireGuard Linuxサーバーではなく、Linux WireGuard VPNクライアントで入力してください。つまり、これはLinuxデスクトップオペレーティングシステムでのみ機能し、macOSやWindows 10/11デスクトップでは機能しません。

ステップ1 – デフォルトのルート情報を見つける

WireGuard/OpenVPN に接続したら、ip コマンドを使用してルーティング テーブルを一覧表示します。

私が見ているのは次の通りです:IPルート表示

デフォルト 192.168.2.254 dev enp0s31f6 proto dhcp メトリック 100 10.83.200.0/24 dev lxdbr0 proto カーネル スコープ リンク ソース 10.83.200.1 169.254.0.0/16 dev ln-sg スコープ リンク メトリック 1000 172.16.0.0/24 dev ln-sg proto カーネル スコープ リンク ソース 172.16.0.6 メトリック 50 192.168.2.0/24 dev enp0s31f6 proto カーネル スコープ リンク ソース 192.168.2.25 メトリック 100

 

「ln-sg」という名前の私のWireGuardインターフェースは、デフォルトのメトリック100ではなくメトリック50を使用します。そのため、より低いメトリックを持つchat.openai.com IPアドレスを追加し、192.168.2.254のデフォルトゲートウェイIPアドレスを直接通過させるというトリックがあります。

IPv4ルーティングの自動メトリック機能の説明

ルーターメトリックルーティングの決定に使用される設定値です。ルーターメトリックは、ルーターが宛先への複数の可能な経路の中から最適な経路を選択するのに役立ちます。経路は、メトリックが最も低いゲートウェイの方向に進みます。ルーターメトリックは通常、パス長、帯域幅、負荷、ホップ数、パスコスト、レイテンシ、最大転送単位(MTU)、信頼性、通信コストなどの情報に基づいています。

表1: 次の表は、
私のLinuxデスクトップがルートにメトリックを割り当てるために使用する条件
リンク/ターゲット/ルート測定
chat.openai.com(または任意のIP/ドメイン)10
ワイヤーガード/OpenVPN50
契約違反100

ステップ2 – chat.openai.comのIPアドレスを見つける

dig コマンドまたは host コマンドを使用します。

$ d='chat.openai.com' $ dig +short A "$d" | grep -v '\.$' $ ips="$(dig +short A "$d" | grep -v '\.$')" $ echo "$ips"

ステップ3 – chat.openai.comのIPアドレスをルーティングテーブルに追加する

シェル変数をいくつか設定してみましょう。

bash for ループを使用してこれらの IP を追加してみましょう。my_gw="192.168.2.254" #デフォルトゲートウェイ
metric="10" #Routingメトリック値

$ips の i に対して、 sudo ip route を追加し、 "$i" を "$my_gw" 経由で、 metric "$metric" を実行します。

新しく追加されたIPアドレスを一覧表示したいですか?ipコマンドを使用します。

私が見ているのは次の通りです:

$ ip ルート ショー $ ip ルート ショー | grep -w 'メトリック 10'

 

104.18.2.161 経由 192.168.2.254 dev enp0s31f6 メトリック 10 104.18.3.161 経由 192.168.2.254 dev enp0s31f6 メトリック 10 

ステップ4 – テスト

ウェブブラウザを起動してアクセスする https://chat.openai.com/ テストするURL:

LinuxでWireGuardまたはOpenVPNからChatGPTをスキップするプロセス

クリックして拡大

できました。LinuxでWireGuardまたはOpenVPNに切り替えるには、これだけです。 ドメイン方式。

 

ステップ5 – ルーティングテーブルからchat.openai.comのIPアドレスを削除する

次のように ip コマンドを再度使用します。
i in $ips; sudo ip route del "$i"; 完了

ステップ6 – 自動化のためのシェルスクリプトを作成する

chat.openai.com はIPアドレスを定期的に変更します。そのため、これはchat.openai.com ドメインや、VPN接続時に動作しないその他のドメインを追加、削除、リスト化するための汎用スクリプトです。

routing.policy シェルスクリプト

#!/bin/bash # routing.policy - ルーティング ポリシーを追加、削除、および一覧表示するメイン スクリプト # 作成者: Vivek Gite {www.cyberciti.biz}、GPLv 2.x+ に基づく # ------------------------------------------------------------------------------- set -e # 必要に応じてメトリックとゲートウェイを設定します 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##*/" # 私は誰ですか? get_domain_ip_lists(){ for d in $domain do ips="${ips} $(dig +short A "$d" | grep -v '\.$')" done ips="${ips/$'\n'/ }" # '\n' を削除 ips="$(tr ' ' '\n'<<<"${ips}" | sort -u | check_for_root_user echo "${ips/$'\n'/,} をルーティングテーブルに追加しています..." 1>&2 for i in $ips do if ! is_route_exists "$i" then sudo ip route add "$i" via "$my_gw" metric "$metric" else echo "$i の $me ルートは既に存在するため、スキップします..." fi done } Remove_opneapi_route(){ check_for_root_user echo "${ips/$'\n'/,} をルーティングテーブルから削除しています..." 1>&2 for i in $ips do if is_route_exists "$i" then sudo ip route del "$i" via "$my_gw" else echo "$iの$meルートが見つからないため、スキップします..." fi done } show_openapi_route_status(){ echo "'$domain'のルーティング情報(${ips/$'\n'/,}) ..." # ${ips}から改行を削除します for i in $ips do ip route show "$i" done } check_for_root_user(){ if [[ $EUID-ne 0 ]]; then echo "$meスクリプトはrootとして実行する必要があります" 1>&2 exit 1 fi } ## main ## get_domain_ip_lists # set '$ips' case "$me" in routing.policy.add) add_openapi_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 "使用方法: routing.policy.add|routing.policy.delete|routing.policy.status";;

 

lnコマンドを使用してソフトリンクを作成します

まず、chmodコマンドを使用します
実行権限を設定する 次に、次のリンクを設定します。

ls コマンドを使用して確認します。

出力:chmod +x -v ルーティングポリシー
'routing.policy' のモードが 0664 (rw-rw-r--) から 0775 (rwxrwxr-x) に変更されました
ln -sv ルーティング.ポリシー ルーティング.ポリシー.add
ln -sv ルーティング.ポリシー ルーティング.ポリシー.削除
ln -sv ルーティングポリシー ルーティングポリシー.delete
ln -sv ルーティング.ポリシー ルーティング.ポリシー.show
ln -sv ルーティング.ポリシー ルーティング.ポリシー.ステータス
ls -l ルーティングポリシー*

-rwxrwxr-x 1 vivek vivek 1913 2月 3日 00:07 routing.policy lrwxrwxrwx 1 vivek vivek 14 2月 3日 00:08 routing.policy.add -> routing.policy lrwxrwxrwx 1 vivek vivek 14 2月 3日 00:08 routing.policy.delete -> routing.policy lrwxrwxrwx 1 vivek vivek 14 2月 3日 00:08 routing.policy.remove -> routing.policy lrwxrwxrwx 1 vivek vivek 14 2月 3日 00:08 routing.policy.show -> routing.policy lrwxrwxrwx 1 vivek vivek 14 2月 3日 00:08ルーティング.ポリシー.ステータス -> ルーティング.ポリシー

テストしてみましょう:
sudo ./routing.policy.add
sudo ./routing.policy.status
トレースルート chat.openai.com #<--test routing
sudo ./routing.policy.delete

要約する

Debian および Ubuntu Linux デスクトップで WireGuard と OpenVPN を使用してテストしました。これは見事に動作し、ip コマンドが機能する限り、他の Linux ディストリビューションでも動作するはずです。簡単に言うと、システムのルーティングテーブルにルーティングルールを追加できる限り、Linux (または macOS や BSD などの他の OS) 上の VPN 接続で特定の IP アドレスのルーティングをスキップできます。フックを追加することで、NetworkManager が OpenVPN または WireGuard インターフェースに接続したときに、このスクリプトを自動的に実行できます。たとえば、スクリプトを /etc/network/if-up.d/ に配置し、実行可能にします。これにより、VPN インターフェースがオンラインになったときにスクリプトが実行されます。同様に、VPN インターフェースがダウンしたときにスクリプトを実行したい場合は、スクリプトを /etc/network/if-down.d/ に配置します。NetworkManager のマニュアルページは、man コマンドを使用して参照できます。
man 8 ネットワークマネージャー

1/5 - (3票)

手紙への返信

メールアドレスが変更されることはありません。 支払い欄に必須の項目は必須です