Cách bỏ qua ChatGPT từ WireGuard hoặc OpenVPN trên Linux

Tác giả sysadmin, T.Sáu 06, 2023, 04:32:57 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách bỏ qua ChatGPT từ WireGuard hoặc OpenVPN trên Linux


ChatGPT (viết tắt của Chat Generative Pre-training Transformer) là một chatbot của OpenAI. Nó cung cấp câu trả lời cho các truy vấn của bạn bằng cách sử dụng các kỹ thuật học tập dựa trên AI/ML. Thật không may, ChatGPT từ chối quyền truy cập khi được kết nối qua VPN (Mạng riêng ảo) như WireGuard hoặc OpenVPN và bạn sẽ bị chặn với thông báo sau:


Hãy cho chúng tôi xem cách bỏ qua miền ChatGPT khỏi quyền truy cập WireGuard hoặc OpenVPN trong khi bạn có thể truy cập tài nguyên công ty đằng sau VPN.

Logic rất đơn giản. Tìm địa chỉ IP   Đăng nhập để xem liên kết và đặt chính sách định tuyến để bỏ qua giao diện VPN. Theo mặc định, WireGuard hoặc OpenVPN sẽ định tuyến tất cả lưu lượng truy cập qua giao diện VPN nhưng tôi sẽ đặt số liệu thấp hơn giao diện WireGuard hoặc OpenVPN và định tuyến trực tiếp lưu lượng   Đăng nhập để xem liên kết qua bộ định tuyến của tôi thay vì VPN. Thiết lập của tôi như sau:

  • Máy tính để bàn Debian hoặc Ubuntu Linux
  • WireGuard hoặc OpenVPN đặt tại Linode hoặc AWS
  • Bộ định tuyến mặc định IPv4: 192.168.2.254

Nhập các lệnh này trên máy khách Linux WireGuard VPN của bạn, không phải máy chủ WireGuard Linux.

Bước 1:  Tìm thông tin định tuyến mặc định của bạn

Sau khi kết nối với WireGuard/OpenVPN, hãy sử dụng lệnh ip để liệt kê bảng định tuyến:

Mã nguồn [Chọn]
ip route show
Đây là những gì tôi thấy:

Mã nguồn [Chọn]
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
169.254.0.0/16 dev ln-sg scope link 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 scope link src 192.168.2.25 metric 100

Giao diện WireGuard của tôi có tên 'ln-sg' được ưu tiên sử dụng chỉ số 50 so với chỉ số mặc định 100. Vì vậy, mẹo là thêm địa chỉ IP   Đăng nhập để xem liên kết với chỉ số thấp hơn và chuyển trực tiếp qua địa chỉ IP cổng mặc định 192.168.2.254.

Số liệu bộ định tuyến là các giá trị cấu hình để đưa ra quyết định định tuyến. Số liệu bộ định tuyến giúp bộ định tuyến chọn tuyến đường tốt nhất trong số nhiều tuyến đường khả thi đến đích. Tuyến đường sẽ đi theo hướng cổng có chỉ số thấp nhất. Số liệu bộ định tuyến thường dựa trên thông tin như độ dài đường dẫn, băng thông, tải, số bước nhảy, chi phí đường dẫn, độ trễ, đơn vị truyền tối đa (MTU), độ tin cậy và chi phí liên lạc.

Bước 2: Tìm ra địa chỉ IP   Đăng nhập để xem liên kết

Sử dụng lệnh dig hoặc lệnh hostname

Mã nguồn [Chọn]
d='chat.openai.com'

dig +short A "$d" | grep -v '\.$'

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

echo "$ips"

Bước 3: Thêm địa chỉ IP   Đăng nhập để xem liên kết vào bảng định tuyến

Hãy để chúng tôi đặt một số biến shell:

Mã nguồn [Chọn]
my_gw="192.168.2.254" #Default GW
metric="10" #Routing metric value

Hãy để chúng tôi sử dụng vòng lặp bash for để thêm các IP đó:

Mã nguồn [Chọn]
for i in $ips
do
  sudo ip route add "$i" via "$my_gw" metric "$metric"
done

Bạn muốn liệt kê địa chỉ IP mới được thêm vào? Sử dụng lệnh ip:

Mã nguồn [Chọn]
ip route show

ip route show | grep -w 'metric 10'

Đây là những gì tôi thấy:

Mã nguồn [Chọn]
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

Bước 4: Kiểm tra nó

Kích hoạt trình duyệt web và kiểm tra nó bằng cách truy cập   Đăng nhập để xem liên kết URL:


Đó là cách bạn có thể bỏ qua miền ChatGPT từ WireGuard hoặc OpenVPN trên Linux.

Bước 5: Xóa địa chỉ IP   Đăng nhập để xem liên kết khỏi bảng định tuyến

Một lần nữa sử dụng lệnh ip như sau:

Mã nguồn [Chọn]
for i in $ips; do sudo ip route del "$i"; done
Bước 6: Tạo shell script để tự động hóa

  Đăng nhập để xem liên kết sẽ thay đổi địa chỉ IP của nó theo thời gian. Vì vậy, đây là một tập lệnh chung để thêm, xóa và liệt kê   Đăng nhập để xem liên kết cũng như một vài miền khác từ chối hoạt động khi được kết nối với VPN.

Mã nguồn [Chọn]
#!/bin/bash
# routing.policy - Main script to add, remove and list routing policy
# Author : Vivek Gite {www.cyberciti.biz} under GPLv 2.x+
# ----------------------------------------------------------------------
set -e
 
# Set metric and gateway as per your needs
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##*/}" # who am I?
 
get_domain_ip_lists(){
    for d in $domain
    do
        ips="${ips} $(dig +short A "$d" | grep -v '\.$')"
    done
    ips="${ips/$'\n'/ }" # remove '\n'
    ips="$(tr ' ' '\n'<<<"${ips}" | sort -u | xargs)" # remove duplicate ips
}
 
is_route_exists(){
    local i="$1"
    out="$(ip route show "$i")"
    if [[ "$out" != "" ]]
    then
        return 0  # True
    else
        return 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 "$i"
        then
            sudo ip route add "$i" via "$my_gw" metric "$metric"
        else
            echo "$me route for $i already exists, skiping..."
        fi
    done
}
 
remove_opneapi_route(){
    check_for_root_user
    echo "Removing ${ips/$'\n'/,} from routing table..." 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, skiping..."
        fi
    done
}
show_openapi_route_status(){
    echo "Routing info for the '$domain' (${ips/$'\n'/,})..." # remove newline from the ${ips}
    for i  in $ips
    do
        ip route show "$i"
    done
 
}
 
check_for_root_user(){
if [[ $EUID -ne 0 ]]; then
   echo "$me script must be run as root" 1>&2
   exit 1
fi
}
 
## main ##
get_domain_ip_lists # set '$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 "Usage: routing.policy.add|routing.policy.delete|routing.policy.status";;
esac

Bước 7: Tạo softlink bằng lệnh ln

Đầu tiên, thiết lập quyền thực thi bằng lệnh chmod

Mã nguồn [Chọn]
chmod +x -v routing.policy
mode of 'routing.policy' changed from 0664 (rw-rw-r--) to 0775 (rwxrwxr-x)

Bây giờ hãy đặt các liên kết đó:

Mã nguồn [Chọn]
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

Xác minh nó bằng lệnh ls:

Mã nguồn [Chọn]
ls -l routing.policy*
Đầu ra:

Mã nguồn [Chọn]
-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
lrwxrwxrwx 1 vivek vivek   14 Feb  3 00:08 routing.policy.delete -> routing.policy
lrwxrwxrwx 1 vivek vivek   14 Feb  3 00:08 routing.policy.remove -> routing.policy
lrwxrwxrwx 1 vivek vivek   14 Feb  3 00:08 routing.policy.show -> routing.policy
lrwxrwxrwx 1 vivek vivek   14 Feb  3 00:08 routing.policy.status -> routing.policy

Kiểm tra nó:

Mã nguồn [Chọn]
sudo./routing.policy.add
sudo./routing.policy.status
traceroute chat.openai.com #<--test routing
sudo./routing.policy.delete

Tôi đã thử nghiệm điều này trên máy tính để bàn Debian và Ubuntu Linux với WireGuard và OpenVPN. Nó hoạt động như một bùa mê và sẽ hoạt động với bất kỳ bản phân phối Linux nào khác miễn là lệnh ip hoạt động. Tóm lại, chúng ta có thể bỏ qua việc định tuyến các địa chỉ IP cụ thể thông qua kết nối VPN trên Linux (hoặc bất kỳ hệ điều hành nào khác như macOS hoặc BSD) miễn là bạn có thể thêm quy tắc định tuyến vào bảng định tuyến của hệ thống.

Bạn có thể tự động chạy tập lệnh này bằng cách thêm hook khi Trình quản lý mạng kết nối với giao diện OpenVPN hoặc WireGuard của bạn. Ví dụ: đặt một tập lệnh vào /etc/network/if-up.d/ và làm cho nó có thể thực thi được. Điều này sẽ chạy tập lệnh khi giao diện VPN trực tuyến. Tương tự, hãy đặt một tập lệnh vào /etc/network/if-down.d/ khi bạn muốn chạy nó khi giao diện VPN gặp sự cố. Xem trang hướng dẫn NetworkManager bằng lệnh man:

Mã nguồn [Chọn]
man 8 NetworkManager