GOST proxy: nối cổng HTTP sang SOCKS5 bằng YAML bản v3
GOST proxy là cách dựng một cổng proxy cục bộ bằng GO Simple Tunnel, rồi nối cổng đó sang proxy cấp trên qua chuỗi chuyển tiếp. ProxyVN đọc tài liệu GOST v3 ngày 27/10/2026 và ghi lại cấu hình HTTP vào SOCKS5 bằng YAML, kèm script soát lỗi đã chạy. Bài nêu rõ thế hệ phiên bản, và phần nào chưa chạy thử trên công cụ gốc.
GOST proxy là gì và khác gì proxy IP mua ngoài
GOST là viết tắt của GO Simple Tunnel, một công cụ tạo đường hầm và proxy viết bằng ngôn ngữ Go. Trang chủ GOST mô tả ba cách dùng chính: làm dịch vụ proxy, chuyển tiếp cổng, và reverse proxy kèm xuyên mạng nội bộ. Bài này chỉ bàn cách dùng đầu tiên.
Điểm cần phân biệt ngay từ đầu: GOST không bán IP. Nó là phần mềm đứng ở máy của anh em, nhận kết nối từ ứng dụng ở phía vào, rồi đẩy tiếp sang một máy khác ở phía ra. IP mà website nhìn thấy vẫn là IP của proxy cấp trên mà anh em mua hoặc tự thuê.
Vai trò của GOST khi đã có proxy thương mại
Ví dụ quen thuộc: công cụ thu thập dữ liệu chỉ hỗ trợ proxy HTTP, trong khi gói proxy anh em mua cấp SOCKS5 có tài khoản. GOST đứng giữa, mở cổng HTTP cục bộ cho công cụ và nối sang SOCKS5 của nhà cung cấp. Công cụ không cần biết gì về SOCKS5.
Tình huống thứ hai là gom nhiều dịch vụ vào một chỗ. Một tiến trình GOST có thể nghe nhiều cổng cùng lúc, mỗi cổng một giao thức, và mỗi cổng đi theo một chuỗi riêng. Anh em quản một file cấu hình thay vì năm công cụ rời.
Ba thứ GOST không làm thay anh em
GOST không đổi IP thoát. Nếu chuỗi chỉ gồm máy của anh em, website vẫn thấy IP máy đó. GOST cũng không vượt CAPTCHA hay tránh dấu vân tay trình duyệt, và không thay được điều khoản sử dụng của website đích.
Điều thứ ba hay bị quên: GOST không tự bảo vệ cổng nghe. Cổng mở ra mạng mà không có tài khoản là một proxy mở, bị người lạ dùng ngay. Phần quyền truy cập bên dưới xử lý đúng chuyện này. Bài open proxy là gì giải thích vì sao proxy mở hay bị lạm dụng.
Phạm vi bài này
Bài chỉ nói về GOST v3, đọc từ tài liệu chính thức. Mình chưa chạy GOST: lần viết này mình không tải hay chạy tệp thực thi từ bên ngoài. Phần "đã chạy" trong bài là một script Python mình viết để soát file cấu hình, và các kết quả của script đó là kết quả thật.
Chọn đúng thế hệ GOST proxy: v2 hay v3

Chọn đúng thế hệ GOST v2 hay v3
Lỗi phổ biến nhất khi làm theo hướng dẫn GOST trên mạng là chép nhầm cấu hình giữa hai thế hệ. Tài liệu v3 và v2 nằm ở hai địa chỉ khác nhau, và cách tổ chức cấu hình không giống nhau.
Nhận biết qua nơi đọc tài liệu
Tài liệu v3 ở gost.run, trang đầu ghi dòng "Legacy version: v2.gost.run". Tài liệu v2 ở v2.gost.run mở đầu bằng dòng báo rằng GOST V3 đã có và mời dùng thử. Hai trang cũng dẫn tới hai kho mã và hai ảnh Docker khác nhau: v3 dùng gogost/gost, v2 dùng ginuerzh/gost.
Muốn biết máy đang chạy bản nào, chạy lệnh gost -V rồi đối chiếu số phiên bản. Bài này không đoán bản từ tên tệp. Nếu lệnh in ra bản 2.x, các ví dụ YAML trong bài không áp dụng được.
Khác biệt thấy được trong tài liệu
Trang v2 mô tả proxy gồm hai lớp độc lập, giao thức và vận chuyển, ghép bằng cú pháp như socks5+wss. Trang v3 vẫn dùng cú pháp ghép đó trên dòng lệnh, nhưng thêm một cách mô tả bằng file với các khối services, chains, hops, nodes.
Trong v3, mọi thứ là một dịch vụ. Trang khái niệm Service viết rằng máy khách và máy chủ chỉ là tương đối, vì bản thân máy khách cũng là một dịch vụ. Một dịch vụ gồm listener là kênh dữ liệu, handler xử lý dữ liệu, và forwarder tùy chọn cho chuyển tiếp cổng.
Hạng mục |
GOST v2 |
GOST v3 |
|---|---|---|
Nơi đọc tài liệu |
v2.gost.run |
gost.run |
Ảnh Docker trong tài liệu |
ginuerzh/gost |
gogost/gost |
Cấu hình dạng file |
Menu trang v2 không có trang riêng |
Khối services, chains, hops, nodes |
Tính năng gắn số phiên bản |
Mốc 2.x trên từng giao thức |
Mốc 3.x trên từng tùy chọn |
Nguồn của bảng là hai trang trang chủ và các trang cấu hình đã đọc. Mình chỉ ghi những gì hiện trên trang, không suy ra phần v2 mà tài liệu v2 không nói.
Số phiên bản nhỏ trong v3 cũng quan trọng
Ngay trong v3, nhiều tùy chọn gắn nhãn phiên bản. Đọc từ chính tài liệu: auth.file ghi 3.1.0, matcher và probe cho nhóm chuỗi ghi 3.3.0, giới hạn hạn mức quota ghi 3.3.0, nhãn labels cho dịch vụ ghi 3.3.0. Máy chạy bản 3.0 sẽ không hiểu các khóa này.
Quy tắc đơn giản: trước khi chép một khóa cấu hình, nhìn xem trang có ghi số phiên bản bên cạnh không, rồi so với kết quả của gost -V trên máy.
Script nhận ra file sai thế hệ
Để khỏi nhìn bằng mắt, mình viết gost_check.py. Script đọc file YAML hoặc JSON, kiểm khóa cấp trên cùng có nằm trong sơ đồ v3 của trang tham chiếu file cấu hình không, rồi soát vài lỗi hay gặp. Script chỉ đọc file, không chạy GOST.
TOP_V3 = {"services", "chains", "hops", "tls", "authers", "admissions", "bypasses",
"resolvers", "hosts", "recorders", "log", "profiling", "api", "metrics",
"limiters", "rlimiters", "climiters", "loggers", "ingresses", "routers",
"sds", "observers", "quotas"}
unknown = sorted(set(cfg) - TOP_V3)
if unknown:
out.append(("LOI", f"khoa cap tren cung khong co trong so do cau hinh v3: {unknown}"))
Trên file JSON giả lập kiểu cấu hình cũ có khóa ServeNodes, ChainNodes và Debug, script báo lỗi vì cả ba khóa đều nằm ngoài sơ đồ v3. Mình không khẳng định các khóa này là của v2, vì menu tài liệu v2 không có trang cấu hình dạng file. Script chỉ nói rằng chúng không thuộc v3.
Dựng topology lab cho GOST proxy: listener, forwarder, backend
Một bài kiểm thử có giá trị khi anh em biết chính xác ai nói chuyện với ai. Với GOST, topology tối thiểu có bốn thành phần, và tất cả có thể nằm trên một máy bằng địa chỉ loopback.
Bốn thành phần
Thành phần đầu là client, ví dụ curl hoặc công cụ thu thập dữ liệu. Thành phần thứ hai là GOST với một dịch vụ HTTP nghe ở 127.0.0.1:8080. Thành phần thứ ba là proxy cấp trên SOCKS5 nghe ở 127.0.0.1:1080 có tài khoản. Thành phần cuối là trang đích trả về thông tin người gọi.
Trong lab này, proxy cấp trên đóng vai gói proxy anh em mua. Khi dùng thật, thay 127.0.0.1:1080 bằng địa chỉ, cổng và tài khoản nhà cung cấp cấp. Bài định dạng proxy hướng dẫn tách chuỗi ip:port:user:pass thành từng trường.
Vì sao nên giữ mọi thứ trên loopback
Địa chỉ 127.0.0.1 chỉ nhận kết nối từ chính máy đó. Nếu anh em ghi addr là :8080, trang Service cho thấy dịch vụ ghi trạng thái "listening on [::]:8080", tức nghe mọi giao diện mạng. Dấu hai chấm đứng đầu không có địa chỉ nghĩa là địa chỉ đại diện.
Trong ví dụ trạng thái ở trang Service, dòng sự kiện đúng là "service service-0 is listening on [::]:8080". Đây là bằng chứng ngay trong tài liệu rằng một addr bắt đầu bằng dấu hai chấm mở cổng cho cả mạng.
Các việc cần có trước khi cấu hình
- Ghi lại kết quả gost -V và nơi tải bản đó.
- Kiểm hash của tệp tải về nếu trang phát hành cung cấp.
- Chọn cổng không trùng dịch vụ khác, ví dụ 8080 cho vào và 1080 cho proxy cấp trên.
- Tạo tài khoản lab riêng, không dùng mật khẩu của hệ thống thật.
- Quyết định nơi ghi log và mức log trước khi chạy.
Nếu cần danh sách tên miền không đi qua proxy, đọc thêm bài no_proxy là gì. Ứng dụng của anh em có thể bỏ qua cổng GOST ở những tên miền đó.
Cấu hình GOST proxy tối thiểu bằng CLI và YAML
Phần này là lõi của bài. Mỗi cấu hình có hai dạng, dòng lệnh và YAML, và hai dạng này tương đương theo chính tài liệu.
Một cổng HTTP đơn
Trang Quick Start cho ví dụ ngắn nhất. Lệnh gost -L http://:8080 mở một dịch vụ proxy HTTP ở cổng 8080. Dạng YAML cùng nghĩa như sau.
services:
- name: service-0
addr: ":8080"
handler:
type: http
listener:
type: tcp
Dạng này chưa có tài khoản và chưa giới hạn địa chỉ nghe. Anh em dùng nó để xem GOST chạy, đừng để nguyên trên máy nối mạng.
Nối cổng HTTP sang proxy SOCKS5 cấp trên
Ví dụ Forwarding trên cùng trang dùng -F để chỉ proxy cấp trên. Mình đổi sang SOCKS5 và thêm địa chỉ loopback, đúng topology ở phần trước. Lệnh dòng lệnh là gost -L http://127.0.0.1:8080 -F socks5://lab:[email protected]:1080.
Dạng YAML, theo đúng sơ đồ services, chains, hops, nodes của tài liệu, như sau.
services:
- name: http-vao
addr: 127.0.0.1:8080
handler:
type: http
chain: chain-0
auth:
username: lab
password: doi-mat-khau-lab
listener:
type: tcp
chains:
- name: chain-0
hops:
- name: hop-0
nodes:
- name: socks-len-tren
addr: 127.0.0.1:1080
connector:
type: socks5
auth:
username: lab
password: doi-mat-khau-lab
dialer:
type: tcp
log:
level: debug
format: json
output: stderr
Khối services nói GOST nghe ở đâu và nói giao thức nào với client. Khối chains nói đi tiếp thế nào. Cầu nối giữa hai khối là dòng chain: chain-0 trong handler. Thiếu dòng này, dịch vụ chạy nhưng không đi qua proxy cấp trên.
Tách connector và dialer
Mỗi node có hai phần. Connector là giao thức nói chuyện với node, ở đây là socks5. Dialer là kênh dữ liệu bên dưới, ở đây là tcp. Trang Forwarding Chain có ví dụ http qua tls và socks5 qua ws ở hai hop khác nhau, cho thấy hai phần này đổi độc lập.
Với proxy mua ngoài, dialer thường để tcp, connector chọn theo loại gói: http hoặc socks5. Không cần nghĩ tới tls hay ws trừ khi nhà cung cấp ghi rõ.
Chuỗi nhiều hop
Tài liệu cho ví dụ gost -L :8080 -F http://192.168.1.1:8080 -F socks5://192.168.1.2:1080. GOST chuyển yêu cầu theo thứ tự các tham số -F, tức hop đầu là HTTP rồi tới SOCKS5. Trong YAML, mỗi -F thành một hop trong cùng chuỗi.
Mỗi hop còn có thể chứa nhiều node. Khi đó selector chọn node theo chiến lược mặc định là round-robin, với maxFails và failTimeout để loại node lỗi tạm thời. Mình giữ lab ở một hop một node cho dễ đọc log.
Bẫy ignoreChain trên dòng lệnh
Trang Service có một câu quan trọng: ở chế độ dòng lệnh, nếu có chuỗi chuyển tiếp thì mọi dịch vụ dùng chuỗi đó theo mặc định. Muốn một dịch vụ đi thẳng, thêm ignoreChain=true vào dịch vụ đó.
Ví dụ trong tài liệu: dịch vụ HTTP ở cổng 8080 có ignoreChain=true nên không dùng chuỗi, còn dịch vụ SOCKS ở cổng 1080 thì dùng. Quên tùy chọn này, anh em có thể đẩy luôn cả lưu lượng nội bộ qua proxy trả phí.
Kiểm IP thoát sau khi nối chuỗi
Chạy xong chuỗi, việc đầu tiên là hỏi một trang trả về IP người gọi, qua đúng cổng GOST. Lệnh curl -x http://lab:[email protected]:8080 kèm địa chỉ trang kiểm IP mà anh em tin cậy sẽ in ra IP thoát. Giá trị đó phải là IP của proxy cấp trên, không phải IP nhà mạng của máy anh em.
Nếu hai giá trị trùng nhau, dịch vụ đang đi thẳng. Nguyên nhân thường gặp là thiếu dòng chain trong handler, hoặc đã bật ignoreChain nhầm. Hãy so sánh với một lần curl không qua proxy để thấy hai kết quả thật sự khác nhau.
Đặt tên dịch vụ và node cho dễ đọc log
Tài liệu cho phép đặt tên tùy ý cho service, chain, hop và node. Mình đặt tên có nghĩa, ví dụ http-vao và socks-len-tren, thay vì service-0 và node-0. Khi log có nhiều dòng, tên có nghĩa giúp anh em biết dòng nào thuộc chặng nào mà không phải đếm thứ tự.
Mật khẩu có ký tự đặc biệt
Mật khẩu kiểu p@ss#2026 có ký tự @ và #, dễ làm vỡ URL. Trang Authentication hướng dẫn dùng tùy chọn auth, giá trị là chuỗi username:password đã mã hóa base64. Ví dụ trong tài liệu: echo -n user:pass | base64 cho dXNlcjpwYXNz.
Áp vào lab, chuỗi lab:p@ss#2026 mã hóa thành bGFiOnBAc3MjMjAyNg==. Mình tính bằng Python và chép nguyên. Khi viết vào dòng lệnh, đặt cả URL trong dấu nháy để shell không hiểu nhầm ký tự #.
Quyền truy cập GOST proxy: auth, admission, limiter

Ba lớp quyền truy cập: auth, admission, limiter
Cấu hình chạy được chưa đủ. Một GOST proxy an toàn có ba lớp: ai được vào, ai được nối, và dùng được bao nhiêu.
Lớp một: tài khoản cho cổng vào
Trong YAML, khối auth đặt ở handler hoặc listener, gồm username và password. Với nhiều người dùng, trang Authentication giới thiệu authenticator và ghi chú rằng authenticator chỉ hỗ trợ cách dùng file cấu hình. Sơ đồ file có khối authers với danh sách auths.
Ở phía chuỗi, tài khoản của proxy cấp trên đặt trong connector.auth của node. Từ 3.1.0, client có thể nạp tài khoản từ file bằng auth.file, mỗi dòng là một cặp user và mật khẩu cách nhau dấu cách, dòng bắt đầu bằng # là chú thích. Tài liệu nói nếu file có nhiều dòng thì chỉ dòng đầu được dùng.
Lớp hai: admission cho địa chỉ client
Trang Admission Control cho phép gắn bộ kiểm soát vào dịch vụ. Mỗi quy tắc là một IP, một CIDR hoặc một tên miền, và tên miền được phân giải ra IP. Mặc định là danh sách đen. Thêm tiền tố ~ trên dòng lệnh, hoặc đặt whitelist: true trong YAML, để chuyển sang danh sách trắng.
services:
- name: http-vao
addr: 127.0.0.1:8080
admission: admission-0
handler:
type: http
listener:
type: tcp
admissions:
- name: admission-0
whitelist: true
matchers:
- 127.0.0.1
- 192.168.0.0/16
Nếu dùng nhiều bộ kiểm soát qua admissions, tài liệu ghi rằng chỉ cần một bộ từ chối là yêu cầu bị từ chối. Cách này tiện để ghép một danh sách trắng chung với danh sách chặn riêng.
Lớp ba: giới hạn băng thông, tốc độ và số kết nối
Trang Limiting có ba loại giới hạn: băng thông, tốc độ yêu cầu và số kết nối tối đa. Mỗi loại có cấp dịch vụ và cấp IP. Băng thông còn có cấp từng kết nối.
Mỗi dòng giới hạn gồm phạm vi, tốc độ vào và tốc độ ra. Phạm vi là IP, CIDR hoặc hai giá trị đặc biệt: dấu đô la cho cả dịch vụ, hai dấu đô la cho từng kết nối. Với giới hạn số kết nối và tốc độ yêu cầu, hai dấu đô la nghĩa là mức cho từng IP.
Loại giới hạn |
Khóa trên dòng lệnh |
Ví dụ giá trị |
|---|---|---|
Băng thông dịch vụ |
limiter.in, limiter.out |
100MB |
Băng thông từng kết nối |
limiter.conn.in, limiter.conn.out |
10MB |
Tốc độ yêu cầu |
rlimiter |
10 |
Số kết nối tối đa |
climiter |
1000 |
Các số trong bảng lấy từ ví dụ của tài liệu, không phải khuyến nghị cho lab. Lab của mình nên đặt thấp, vì chỉ cần thấy giới hạn hoạt động.
Hạn mức tổng lượng dữ liệu
Từ 3.3.0 có quota limiter, giới hạn tổng số byte trong một cửa sổ thời gian, từ startsAt tới expiresAt. Khi vượt ngưỡng, dịch vụ dùng quota đó bị dừng tới khi cửa sổ mới bắt đầu. Nhiều dịch vụ có thể dùng chung một quota.
Với gói proxy tính theo dung lượng, đây là chốt chặn hữu ích: một công cụ lỗi lặp không đốt hết gói trong một đêm. Mình chưa thử tính năng này vì cần bản 3.3.0 chạy thật.
Chạy ca đúng sai và đọc log của GOST proxy

Chuỗi hop và đọc log từng chặng
Phần này chia hai nửa. Nửa đầu là những gì mình đã chạy: script soát cấu hình. Nửa sau là kế hoạch chạy GOST thật, để anh em làm trên máy của mình và đối chiếu.
Kết quả script trên bốn file mẫu
Mình soạn bốn file: một file đúng chuẩn lab, một file nhiều lỗi, một file kiểu cũ và một file trộn khóa. Kết quả in nguyên văn như sau.
== tot.yaml
[OK] co khoa services/chains cua v3
[OK] http-vao: chi nghe 127.0.0.1
KET QUA: DAT
== xau.yaml
[LOI] http-vao: tham chieu chain 'chain-1' khong ton tai
[CANH BAO] http-vao: addr ':8080' nghe moi giao dien
[LOI] http-vao: nghe moi giao dien ma khong co auth hay admission
[CANH BAO] socks-vao: addr '0.0.0.0:1080' nghe moi giao dien
[CANH BAO] socks-vao: bat tuy chon udp, tai lieu ghi mac dinh tat
[CANH BAO] socks-vao: mat khau mau 'pass'
[LOI] chain chain-0/hop-0/node-0: thieu connector.type
KET QUA: KHONG DAT
== v2.json
[LOI] khoa cap tren cung khong co trong so do cau hinh v3: ['ChainNodes', 'Debug', 'ServeNodes']
[LOI] khong thay khoa services hay chains cua v3
KET QUA: KHONG DAT
== tron.yaml
[LOI] khoa cap tren cung khong co trong so do cau hinh v3: ['ServeNodes']
KET QUA: KHONG DAT
File xau.yaml cố tình nhồi bốn lỗi. Lỗi tham chiếu chain sai tên làm dịch vụ không có đường ra. Lỗi nghe mọi giao diện mà không có tài khoản là lỗi nghiêm trọng nhất. Lỗi thiếu connector.type làm node không biết nói giao thức nào.
Cảnh báo về udp là cảnh báo mềm. Tài liệu ghi UDP relay của SOCKS5 tắt mặc định và phải bật bằng tùy chọn udp. Script nhắc anh em rằng mình vừa bật thứ mà tài liệu coi là tùy chọn.
Nhìn log để biết GOST làm gì
Log của GOST đặt qua khối log. Trang Log liệt kê các mức fatal, error, warn, info, debug và trace, mặc định là info. Định dạng là json hoặc text, mặc định json. Nơi ghi là none, stderr, stdout hoặc đường dẫn tệp, mặc định stderr.
Trên dòng lệnh, tham số -D bật mức debug, hoặc dùng biến môi trường GOST_LOGGER_LEVEL. Anh em có thể tạo nhiều logger riêng rồi gắn mỗi logger cho một dịch vụ, nên log của cổng HTTP và cổng SOCKS không lẫn vào nhau.
services:
- name: service-0
addr: 127.0.0.1:8000
logger: logger-0
handler:
type: auto
listener:
type: tcp
loggers:
- name: logger-0
log:
level: debug
format: json
output: /var/log/gost/service-0.log
rotation:
maxSize: 100
maxAge: 10
maxBackups: 3
compress: true
Phần rotation giúp tệp log không phình mãi. Theo tài liệu, rotation chỉ có tác dụng khi output là một đường dẫn tệp.
Trạng thái dịch vụ qua Web API
Khi bật Web API, mỗi dịch vụ có trường status gồm createTime, state và events. State nhận các giá trị running, ready, failed và closed. Events ghi các dòng như "service service-0 is ready".
Nếu bật enableStats trong metadata của dịch vụ, status thêm trường stats với totalConns, currentConns, totalErrs, inputBytes và outputBytes. Năm con số này đủ để xác nhận có lưu lượng đi qua cổng hay không, mà không cần đọc từng dòng log.
Kế hoạch ca đúng và ca sai trên máy thật
Anh em chạy sáu ca sau và ghi lại kết quả. Mình để dạng bảng để đối chiếu nhanh.
Ca |
Việc làm |
Kết quả cần thấy |
|---|---|---|
1 |
curl qua cổng 8080 có tài khoản đúng |
Trang đích trả về, log ghi một kết nối |
2 |
curl qua cổng 8080 không tài khoản |
Bị từ chối, trang đích không nhận gì |
3 |
curl từ địa chỉ ngoài danh sách admission |
Bị chặn trước khi tới handler |
4 |
Tắt proxy cấp trên, rồi curl |
Lỗi kết nối ở hop-0, ghi trong log |
5 |
Sai mật khẩu ở connector.auth |
Proxy cấp trên từ chối, GOST báo lỗi |
6 |
Mở 20 kết nối cùng lúc khi climiter đặt thấp |
Một phần kết nối bị từ chối |
Mình chưa chạy sáu ca này vì chưa chạy GOST. Cột bên phải là điều tài liệu cho phép dự đoán, không phải kết quả đo. Khi anh em chạy, nếu kết quả khác, tin vào máy của mình trước.
Đọc lỗi theo hop
Khi chuỗi có hai hop, lỗi ở hop cuối và lỗi ở hop đầu cho triệu chứng khác nhau ở phía client. Cách phân biệt đơn giản: nhìn proxy cấp trên có ghi nhận kết nối từ GOST không. Có thì lỗi nằm sau GOST, không thì lỗi nằm trước hoặc tại GOST.
Với bài V2Ray upstream proxy, ProxyVN đã mô tả cùng nguyên tắc cho V2Ray: ghi log ở cả proxy cấp trên để biết ai làm sai. Nguyên tắc này đúng cho mọi công cụ nối chuỗi.
Hoàn nguyên, giới hạn tài nguyên và dùng GOST proxy thật
Sau lab, anh em cần dọn dẹp, và trước khi đưa lên môi trường thật cần ghi rõ giới hạn. Hai việc này tốn ít thời gian nhưng tránh được nhiều sự cố.
Hoàn nguyên lab
Dừng tiến trình GOST, xóa file cấu hình có tài khoản lab, xóa file log và tệp đã tải về. Nếu chạy bằng Docker, dùng tùy chọn --rm như ví dụ trong tài liệu để container tự xóa sau khi dừng. Kiểm lại danh sách cổng đang nghe, xác nhận 8080 và 1080 đã đóng.
Đừng giữ tài khoản lab trùng với tài khoản thật. Nếu đã dùng mật khẩu thật trong thử nghiệm, đổi ngay sau khi xong.
Giới hạn tài nguyên khi chạy lâu dài
GOST xử lý nhiều kết nối trong một tiến trình, nên giới hạn số kết nối và băng thông là bắt buộc nếu cổng phục vụ nhiều người. Dùng climiter và limiter như phần trước. Với máy nhỏ, đặt thêm giới hạn mở file của hệ điều hành.
Tài liệu cũng cho chạy mỗi dịch vụ trong một tiến trình riêng bằng dấu phân cách -- giữa các nhóm tham số. Cách này giúp một dịch vụ lỗi không kéo theo dịch vụ khác, đổi lại tốn thêm bộ nhớ.
Điều kiện áp dụng vào hệ thống thật
Trước khi dùng cho công việc thật, anh em kiểm bảy điều kiện. Bảy điều kiện này đều dựa trên những gì tài liệu nêu.
- Bản GOST đang chạy là v3 và đủ số phiên bản cho mọi khóa dùng trong file.
- Cổng nghe là loopback hoặc có admission kèm tài khoản.
- Chuỗi trỏ đúng proxy cấp trên, đã thử một yêu cầu thật với IP thoát.
- Log đặt mức info, không bật debug khi chạy dài vì log đầy tệp.
- Giới hạn kết nối và băng thông đã đặt.
- Mật khẩu nằm trong file có quyền đọc hạn chế, hoặc nạp bằng auth.file.
- Có người biết cách dừng và khởi động lại dịch vụ.
GOST khác gì Privoxy hay Tinyproxy
Privoxy và Tinyproxy là proxy HTTP nhỏ, mỗi cái một mục đích chính. GOST rộng hơn: nhiều giao thức, chuỗi nhiều hop, chuyển tiếp cổng và reverse proxy. Đổi lại cấu hình dài hơn và phải chọn đúng thế hệ.
Nếu chỉ cần một cổng HTTP đơn giản để lọc, các công cụ nhỏ dễ dùng hơn. Nếu cần nối HTTP sang SOCKS5 có tài khoản, đổi chuỗi theo quy tắc, hoặc gom nhiều cổng vào một tiến trình, GOST đáng cân nhắc.
GOST proxy: checklist và câu hỏi thường gặp
Phần cuối gom các điểm nên làm trước khi dùng và những câu hỏi mà anh em thường hỏi khi bắt đầu.
Checklist nhanh

Checklist trước khi dùng GOST proxy thật
- Chạy gost -V, ghi số phiên bản, khớp với tài liệu đang đọc.
- Chạy gost_check.py hoặc cách soát tương đương trên file cấu hình.
- Cổng vào chỉ nghe 127.0.0.1, hoặc có tài khoản và admission.
- Có ignoreChain cho dịch vụ không cần qua proxy trả phí.
- Kiểm IP thoát bằng một yêu cầu thật tới trang đích tin cậy.
- Đặt giới hạn kết nối, băng thông, và quota nếu bản 3.3.0 trở lên.
- Xoay vòng log và để mức info khi chạy dài.
Nếu cần proxy cấp trên cho GOST, anh em có thể mua proxy tại ProxyVN, gồm proxy dân cư tĩnh Viettel, VNPT, FPT, datacenter Việt Nam và proxy xoay. Các gói hỗ trợ HTTP và SOCKS5 với tài khoản user và mật khẩu.
GOST chỉ chuyển lưu lượng đúng đường. IP thoát, tốc độ và độ ổn định vẫn do proxy cấp trên quyết định.
Câu hỏi thường gặp
GOST proxy có chạy SOCKS5 cấp trên có UDP không. Có thể, nhưng cả hai phía phải bật. Tài liệu ghi UDP relay của dịch vụ SOCKS5 tắt mặc định và bật bằng tùy chọn udp. Ở phía client dùng relay=udp. Nếu proxy cấp trên của nhà cung cấp tắt UDP ASSOCIATE thì chuỗi cũng không mang được UDP.
GOST nối với proxy không phải GOST có mã hóa không. Tài liệu SOCKS5 viết rằng nếu cả hai phía đều là GOST, dữ liệu mã hóa theo phương thức mở rộng 0x80 hoặc 0x82. Với proxy khác, GOST dùng SOCKS5 chuẩn 0x00 hoặc 0x02, tức không có lớp mã hóa riêng ở chặng đó. Tùy chọn notls tắt đàm phán mã hóa ở một trong hai phía.
HTTP proxy của GOST xử lý được HTTPS không. Trang HTTP của tài liệu mô tả dịch vụ HTTP proxy bằng phương thức CONNECT. Website HTTPS đi trong đường hầm CONNECT nên nội dung vẫn do TLS bảo vệ, GOST chỉ thấy tên miền và cổng.
Có thể thay Proxifier bằng GOST không. Hai công cụ giải quyết hai việc khác nhau. GOST cung cấp cổng proxy mà ứng dụng cần trỏ vào. Proxifier ép ứng dụng không có ô cài proxy đi qua proxy. Xem bài Proxifier.
Chạy GOST bằng tài khoản quản trị có sao không. Nên dùng tài khoản thường, không đặc quyền. Cổng trên 1024 không cần quyền cao. GOST cũng có tùy chọn preUp và postUp để chạy lệnh trước và sau khi dịch vụ lên, nên file cấu hình trở thành nơi chạy lệnh. Đặt quyền ghi file cấu hình thật chặt.
GOST proxy và những điều cần nhớ
GOST proxy nên bắt đầu bằng việc xác định đúng thế hệ v3, rồi nối listener HTTP với forwarder SOCKS5 trên loopback. Đặt tài khoản, admission và giới hạn trước khi mở rộng. Cần proxy cấp trên ổn định, liên hệ Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam cho GOST proxy.