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
, fetch
và http2transport
.
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.