Từ xa, mô tả đặc điểm và bỏ qua sự can thiệp vào mạng bằng Outline SDK

Hướng dẫn này minh hoạ cách sử dụng các công cụ dòng lệnh của Outline SDK để tìm hiểu và ngăn chặn sự can thiệp mạng từ xa. Bạn sẽ tìm hiểu cách sử dụng các công cụ của SDK để đo lường mức độ can thiệp vào mạng, kiểm thử các chiến lược lách luật và phân tích kết quả. Hướng dẫn này sẽ tập trung vào các công cụ resolve, fetchhttp2transport.

Bắt đầu sử dụng các công cụ Outline SDK

Bạn có thể bắt đầu sử dụng các công cụ Outline SDK ngay từ dòng lệnh.

Phân giải DNS

Công cụ resolve cho phép bạn thực hiện các lệnh tra cứu DNS bằng một trình phân giải cụ thể.

Cách phân giải bản ghi A của một miền:

go run github.com/Jigsaw-Code/outline-sdk/x/tools/resolve@latest -resolver 8.8.8.8 -type A 1.2.3.4.nip.io

Cách phân giải bản ghi CNAME:

go run github.com/Jigsaw-Code/outline-sdk/x/tools/resolve@latest -resolver 8.8.8.8 -type CNAME www.google.com

Tìm nạp trang web

Bạn có thể dùng công cụ fetch để truy xuất nội dung của một trang web.

go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest https://example.com

Bạn cũng có thể buộc kết nối sử dụng QUIC.

go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -proto=h3 https://www.youtube.com

Sử dụng Proxy cục bộ

Công cụ http2transport tạo một proxy cục bộ để định tuyến lưu lượng truy cập của bạn. Cách bắt đầu một proxy cục bộ bằng phương thức truyền Shadowsocks:

go run github.com/Jigsaw-Code/outline-sdk/x/tools/http2transport@latest -localAddr 127.0.0.1:8080 -transport "ss://{your_shadowsocks_credentials}"

Sau đó, bạn có thể dùng proxy này với các công cụ khác như curl:

curl -p -x http://127.0.0.1:8080 https://ipinfo.io

Chỉ định chiến lược lách bản quyền

Outline SDK cho phép chỉ định nhiều chiến lược vượt tường lửa có thể kết hợp để vượt qua nhiều hình thức can thiệp mạng. Quy cách cho các chiến lược này nằm trong tài liệu go.

Chiến lược kết hợp

Bạn có thể kết hợp các chiến lược này để tạo ra những kỹ thuật lách luật mạnh mẽ hơn.

  • DNS-over-HTTPS có tính năng phân mảnh TLS: doh:name=cloudflare-dns.com&address=cloudflare.net:443 | tlsfrag:1
  • SOCKS5-over-TLS có tính năng che giấu nguồn gốc: tls:sni=decoy.example.com&certname=[HOST] | socks5:[HOST]:[PORT]
  • Định tuyến nhiều chặng bằng Shadowsocks: ss://[USERINFO1]@[HOST1]:[PORT1] | ss://[USERINFO2]@[HOST2]:[PORT2] | ss://[USERINFO3]@[HOST3]:[PORT3]

Truy cập và đo lường từ xa

Để đo lường sự can thiệp của mạng khi xảy ra ở các khu vực khác nhau, bạn có thể sử dụng các proxy từ xa. Bạn có thể tìm hoặc tạo các proxy từ xa để kết nối.

Các lựa chọn truy cập từ xa

Khi sử dụng công cụ fetch, bạn có thể kiểm tra các kết nối từ xa theo nhiều cách.

Máy chủ Outline

Kết nối từ xa với một máy chủ Outline tiêu chuẩn bằng phương thức truyền Shadowsocks.

go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "ss://{remote_shadowsocks_credentials}" https://ipinfo.io | jq

SOCKS5 qua SSH

Tạo một proxy SOCKS5 bằng đường hầm SSH.

ssh -D 127.0.0.1:1080 -C -N $USER@$HOST:$PORT

Kết nối với đường hầm đó bằng lệnh tìm nạp

go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "socks5://localhost:1080" https://ipinfo.io | jq

Nghiên cứu điển hình: Vượt qua lệnh chặn của YouTube ở Iran

Sau đây là một ví dụ thực tế về việc phát hiện và bỏ qua sự can thiệp của mạng.

Phát hiện khối

Khi cố gắng tìm nạp trang chủ YouTube thông qua một proxy của Iran, yêu cầu sẽ hết thời gian chờ, cho biết có một khối.

export TRANSPORT="ss://{remote_shadowsocks_credentials}"
go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "${TRANSPORT}|override:host=$(dig +short www.youtube.com | tail -1)" https://www.youtube.com

Lệnh này không thành công do hết thời gian chờ.

Bỏ qua bằng tính năng phân mảnh TLS

Bằng cách thêm phân mảnh TLS vào lớp truyền tải, chúng ta có thể bỏ qua khối này.

go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "${TRANSPORT}|override:host=$(dig +short www.youtube.com | tail -1)|tlsfrag:1" https://www.youtube.com | grep -oe '<title>.*</title>'

Lệnh này truy xuất thành công tiêu đề của trang chủ YouTube, đó là <title>YouTube</title>.

Bỏ qua bằng TLS Fragmentation và DNS-over-HTTPS

go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "${TRANSPORT}|tlsfrag:1|doh:name=cloudflare-dns.com&address=www.cloudflare.net" https://www.youtube.com | grep -oe '<title>.*</title>'

Thao tác này cũng trả về <title>YouTube</title> thành công.

Vượt qua bằng máy chủ Outline

go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "${TRANSPORT}|ss://<your_shadowsocks_credentials>" https://www.youtube.com | grep -oe '<title>.*</title>'

Thao tác này cũng trả về <title>YouTube</title>.

Phân tích và tài nguyên khác

Để thảo luận và đặt câu hỏi, hãy truy cập vào Nhóm thảo luận về Outline SDK.