在Linux 上從WireGuard 或OpenVPN 跳過ChatGPT 的過程

邏輯很簡單。找到chat.openai.com IP位址,設定路由策略跳過VPN介面。預設情況下, 將透過VPN 介面路由所有流量,但我會設定低於WireGuard 或OpenVPN 介面的指標,並直接透過我的路由器而不是VPN 路由chat.openai.com 流量。我的設定如下:

  • Debian 或Ubuntu Linux 桌面
  • 位於Linode 或AWS 的WireGuard 或OpenVPN
  • 預設路由器IPv4:192.168.2.254
注意:在Linux WireGuard VPN 用戶端上輸入這些命令,而不是在WireGuard Linux 伺服器上輸入這些命令。換句話說,這僅適用於Linux 桌面作業系統,不適用於macOS 或Windows 10/11 桌面。

第1 步– 尋找預設路由資訊

連接到WireGuard/OpenVPN 後,使用 ip 指令列出路由表:

這是我看到的:ip route show

default via 192.168.2.254 dev enp0s31f6 proto dhcp metric 100 10.83.200.0/24 dev lxdbr0 proto kernel scope link src 10.83.200.1 169954.0. metric 1000 172.16.0.0/24 dev ln-sg proto kernel scope link src 172.16.0.6 metric 50 192.168.2.0/24 dev enp0s31f6 proto kernel scopepe 20000me 201000210 00025190000 99.

 

我名為「ln-sg」的WireGuard 介面使用指標50 優先於預設指標100。所以訣竅是加入指標較低的chat.openai.com IP 位址,直接透過192.168.2.254 預設閘道IP 位址傳遞。

IPv4 路由的自動指標功能說明

路由器指標是用於做出路由決策的設定值。路由器指標可協助路由器在到達目的地的多個可行路由中選擇最佳路由。路由將朝著指標最低的網關方向前進。路由器指標通常基於路徑長度、頻寬、負載、跳數、路徑成本、延遲、最大傳輸單元(MTU)、可靠性和通訊成本等資訊。

表1:下表概述了
我的Linux 桌面用於為路由分配指標的條件
連結/目標/路由度量
chat.openai.com(或您選擇的任何其他IP/網域)10
WireGuard/OpenVPN的50
違約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 '\.$')" 1$) 1144 eTP

步驟3 – 將chat.openai.com IP 位址新增至路由表

讓我們設定一些shell 變數:

讓我們使用 bash for 迴圈來新增這些IP:my_gw="192.168.2.254" #Default GW
metric="10" #Routing metric value

for i in $ips do sudo ip route add "$i" via "$my_gw" metric "$metric" done

想要列出新新增的IP 位址?使用ip 指令:

這是我看到的:

$ ip route show $ ip route show | grep -w 'metric 10'

 

104.18.2.161 via 192.168.2.254 dev enp0s31f6 metric 10 104.18.3.161 via 192.168.2.254 dev enp0s31f6 metric 10 

第4 步– 測試

啟動Web 瀏覽器並透過存取 https://chat.openai.com/ URL 進行測試:

在Linux 上從WireGuard 或OpenVPN 跳過ChatGPT 的過程-1

點擊放大

瞧。這就是您可以從Linux 上的WireGuard 或OpenVPN 跳過 域的方法。

 

步驟5– 從路由表中刪除chat.openai.com IP 位址

再次使用 ip 指令,如下所示:
for i in $ips; do sudo ip route del "$i"; done

步驟6 – 建立用於自動化的shell 腳本

chat.openai.com 將不時更改其IP 位址。因此,這是一個通用腳本,用於新增、刪除和列出chat.openai.com 網域和其他一些在連接到VPN 時拒絕工作的網域。

routing.policy shell 腳本

#!/bin/bash # routing.policy - Main script to add, remove and list routing policy # Author : Vivek Gite {www.cyberciti.biz} under GPLv 2.x+ 115Ttric --------------------------------15TA Sete Seteper 集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##*/" ips="" me="${0115T#7/" $domain do ips="${ips} $(dig +short A "$d" | grep -v '\.$')" done ips="${ips/$'\n'/ }" # remove 'TPn '<<<"${ips}" | sort -u | xargs)" # remove duplicate ips } is_route_exists(){ local i="$1" out="$(ip route show "$i")" if [[ "$outout" !"h 1] False fi } add_opneapi_route(){ check_for_root_user echo "Adding ${ips/$'\n'/,} to routing table ..." 1>&2 for i in $ips do if ! is_route_exists "12 for i in $ips do if ! is_route_exists "1454" 45455"y 454555" 455"pTTun "$my_gw" metric "$metric" else echo "$me route for $i already exists, skiping ..." fi done } remove_opneapi_route(){ check_for_root_user echo "Removing 144neapi_route(){ check_for_root_user echo "Removings/TP4T. 1>&2 for i in $ips do if is_route_exists "$i" then sudo ip route del "$i" via "$my_gw" else echo "$me route for $i not found, statop ..." info for the '$domain' (${ips/$'\n'/,}) ..." # remove newline from the ${ips} for i in $ips do ip route show "$i" done } for i in $ips do ip route show "$i" done }duserd - none }user_for "$me script must be run as root" 1>&2 exit 1 fi } ## main ## get_domain_ip_lists # set '$ips' caddase "$TBSS. remove_opneapi_route;; routing.policy.remove) remove_opneapi_route;; routing.policy.show) show_openapi_route_status;; routing.policy.status) show_openapi_route_status;; esac

 

使用ln 指令建立軟鏈接

首先,使用chmod 指令
設定執行權限現在設定這些連結:

使用ls 指令進行驗證:

輸出:chmod +x -v routing.policy
mode of 'routing.policy' changed from 0664 (rw-rw-r--) to 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 Feb 3 00:07 routing.policy lrwxrwxrwx 1 vivek vivek 14 Feb 3 00:08 routing.policy.add -> routing.policy 4xwiveww 108w routing.policy.delete -> routing.policy lrwxrwxrwx 1 vivek vivek 14 Feb 3 00:08 routing.policy.remove -> routing.policy lrwxrwxrwx 1 vivek viveive 14:0 30. lrwxrwxrwx 1 vivek vivek 14 Feb 3 00:08 routing.policy.status -> routing.policy

測試一下:
sudo ./routing.policy.add
sudo ./routing.policy.status
traceroute chat.openai.com #<--test routing
sudo ./routing.policy.delete

總結

我在我的Debian 和Ubuntu Linux 桌面上使用WireGuard 和OpenVPN 進行了測試。它就像一個魅力,只要 ip 指令有效,它就可以與任何其他Linux 發行版一起使用。簡而言之,只要您可以將路由規則新增至系統的路由表中,我們就可以跳過透過Linux(或任何其他作業系統,例如macOS 或BSD)上的VPN 連線路由特定的IP 位址。當NetworkManager 連接到OpenVPN 或WireGuard 介面時,您可以透過新增鉤子來自動執行此腳本。例如,將腳本放在/etc/network/if-up.d/ 中並使其可執行。這將在VPN 介面線上時執行腳本。同樣,當您想在VPN 介面關閉時執行腳本時,請將腳本放在/etc/network/if-down.d/ 中。請參閱使用 man 指令的NetworkManager 手冊頁:
man 8 NetworkManager

1/5 - (3 votes)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *