SSD Nodes Learn 🎉 VPS từ $5.50/tháng
Hướng dẫn Matt ConnorBởi Matt Connor

Cài Tor bridge obfs4 trên VPS từ A đến Z

Thiết lập Tor bridge obfs4 trên một VPS giá rẻ: cấu hình torrc, chọn port, mở firewall, đọc log xác nhận chạy đúng và cách nhận bridge.

Tor bridge là gì và tại sao nó tồn tại

Tor bridge là một điểm vào mạng Tor nhưng địa chỉ của nó không được công bố trong danh sách relay công khai. Danh sách này có tên là consensus, là một tài liệu được ký mà bất kỳ ai cũng có thể tải xuống, và bên kiểm duyệt cũng tải nó. Việc chặn Tor từ danh sách này chỉ mất một buổi chiều: tải consensus xuống rồi chặn mọi địa chỉ trong đó tại biên mạng. Bridge tồn tại vì danh sách công khai là điểm yếu. Địa chỉ bridge được phân phối mỗi lần một vài địa chỉ, nên không có một request nào trả về toàn bộ tập địa chỉ.

Địa chỉ không được liệt kê mới chỉ giải quyết được một nửa vấn đề. Deep packet inspection (DPI), tức kỹ thuật phân loại traffic dựa trên nội dung thay vì địa chỉ, nhận diện kết nối Tor dựa vào dạng của TLS (transport layer security) handshake. Bên kiểm duyệt không cần danh sách vẫn có thể thấy “trông giống Tor” và drop kết nối. Pluggable transport loại bỏ tín hiệu đó. Nó bọc Tor stream bằng một dạng traffic khác ở phía client, rồi bridge của bạn giải bọc traffic đó.

obfs4 là transport được hầu hết bridge sử dụng. Nó chuyển stream thành các byte không có header và không có handshake cố định, nên DPI không có pattern để đối chiếu. Nó cũng xác thực client. Giá trị cert= bên trong một bridge line là một key mà client phải chứng minh đang sở hữu trước khi bridge phản hồi, nhờ đó ngăn active probing: bên kiểm duyệt kết nối đến địa chỉ của bạn để kiểm tra xem đó có phải Tor hay không sẽ không nhận được phản hồi và không biết thêm thông tin gì.

Bạn nên chạy pluggable transport nào?

  • obfs4 cần một VPS, hai cổng TCP và không cần domain. Đây là lựa chọn hữu ích dễ triển khai nhất, và là nội dung của hướng dẫn này.
  • WebTunnel ẩn kết nối bên trong lưu lượng HTTPS thông thường đến một website thật. Tor Project liệt kê các yêu cầu gồm địa chỉ IPv4 tĩnh, một domain do bạn kiểm soát, web server đang hoạt động như NGINX hoặc Apache, chứng chỉ TLS hợp lệ và ít nhất 1 GB RAM; khuyến nghị 4 GB. Nó phù hợp với các network mà lưu lượng có hình thức ngẫu nhiên tự nó đã đáng ngờ, vì một quốc gia hạn chế gần như mọi thứ ngoài duyệt web vẫn thường cho phép HTTPS.
  • Snowflake là một hình thức đóng góp khác. Tình nguyện viên chạy các proxy WebRTC tồn tại trong thời gian ngắn, nên các entry point liên tục thay đổi và censor không có địa chỉ ổn định để block. Bạn không vận hành bridge cho Snowflake. Bạn chạy một proxy, và proxy này không cần địa chỉ cố định.

Hãy bắt đầu với obfs4. Sau này bạn có thể thêm một WebTunnel bridge trên địa chỉ thứ hai: chạy cả hai trên cùng một IP nghĩa là chỉ cần một địa chỉ bị block thì cả hai đều ngừng hoạt động.

Bạn phải trả giá gì khi chạy bridge?

ChartTor Project published minimum bandwidth, August 2026
The data behind this chart
[
  {
    "label": "Bridge, minimum",
    "min_upstream_mbit": 1
  },
  {
    "label": "Guard or middle relay, minimum",
    "min_upstream_mbit": 10
  },
  {
    "label": "Guard or middle relay, recommended",
    "min_upstream_mbit": 16
  }
]

Tính đến tháng 8 năm 2026, Tor Project yêu cầu bridge có băng thông upstream và downstream tối thiểu 1 Mbit/s. Guard hoặc middle relay cần 10 Mbit/s, và mức khuyến nghị là 16 Mbit/s. Đây là các yêu cầu được công bố, không phải số liệu đo thực tế. Bridge mới thường thấp hơn nhiều so với mức tối thiểu của chính nó trong vài tuần. Trang yêu cầu tương tự cũng yêu cầu relay có ít nhất 100 GByte traffic outbound mỗi tháng. Các gói nhỏ nhất đã đáp ứng mức này, vì vậy hãy đọc chi phí thực tế mỗi tháng của một VPS nhỏ trước khi chọn cấu hình lớn hơn.

Bề mặt abuse khá nhỏ, và đây là phần nhiều người hiểu sai. Bridge là hop đầu tiên. Traffic rời server của bạn sẽ đi đến một Tor relay khác, không bao giờ đi thẳng đến website do người dùng chọn. Địa chỉ IP của bạn không bao giờ xuất hiện trong web log của người lạ dưới dạng nguồn của request, nên các email khiếu nại mà operator của exit relay phải xử lý sẽ không gửi đến đây. Tuy vậy, hãy kiểm tra acceptable use policy của provider, vì một số host coi mọi dịch vụ Tor là trường hợp đặc biệt.

Có một việc không nên làm: chuyển một public relay hiện có thành bridge tại cùng địa chỉ. Tor Project khuyên trong trường hợp này phải thay đổi “IP address, name and fingerprint”, vì địa chỉ cũ đã có trong consensus mà các hệ thống kiểm duyệt tải xuống. Bridge từng là public relay vào tuần trước thì đã nằm trong blocklist.

Uptime quan trọng hơn tốc độ. Các yêu cầu dành cho relay nêu rằng “nếu relay của bạn không chạy quá 2 giờ mỗi ngày thì tính hữu dụng sẽ bị hạn chế”. Bridge còn bất lợi hơn relay ở điểm này, vì mỗi client chỉ có một địa chỉ và không có fallback. Mỗi lần restart sẽ ngắt kết nối của toàn bộ người dùng đang dùng bridge đó. Hãy thiết lập kiểm tra cổng TCP bằng Uptime Kuma đối với cổng obfs4 để biết ngay trong ngày khi bridge ngừng phản hồi.

Cài đặt Tor từ repository của Tor Project

Các package do distribution cung cấp thường chậm cập nhật, trong khi bridge là phần mềm bảo mật cần được cập nhật. Trước tiên, hãy thêm repository riêng của dự án.

sudo apt update
sudo apt install -y apt-transport-https gnupg wget lsb-release
wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | sudo tee /usr/share/keyrings/deb.torproject.org-keyring.gpg >/dev/null

Bây giờ hãy tạo file source. Dòng Suites: phải chứa codename của release bạn đang dùng, vì vậy hãy lấy giá trị này từ hệ thống thay vì tự nhập theo nhớ.

sudo tee /etc/apt/sources.list.d/tor.sources >/dev/null <<EOF
Types: deb deb-src
URIs: https://deb.torproject.org/torproject.org/
Suites: $(lsb_release -cs)
Components: main
Signed-By: /usr/share/keyrings/deb.torproject.org-keyring.gpg
EOF
sudo apt update
sudo apt install -y tor deb.torproject.org-keyring obfs4proxy

Nếu apt update báo repository không có file Release cho codename của bạn, Tor Project không hỗ trợ release đó. Xóa /etc/apt/sources.list.d/tor.sources, chạy lại sudo apt update, rồi cài package tor do distribution cung cấp. Các bước bên dưới không thay đổi.

Package obfs4proxy do Debian và Ubuntu cung cấp (phiên bản 0.0.14 trên Debian 13, tính đến tháng 8 năm 2026). Hãy xác nhận binary được cài ở đâu, vì đường dẫn này sẽ được dùng trong cấu hình:

command -v obfs4proxy || command -v lyrebird

Upstream đã đổi tên dự án thành lyrebird, vì vậy package mới hơn có thể cài /usr/bin/lyrebird thay thế. Hãy dùng đường dẫn mà lệnh đó in ra.

Cấu hình bridge trong /etc/tor/torrc

BridgeRelay 1
ORPort 8443
ServerTransportPlugin obfs4 exec /usr/bin/obfs4proxy
ServerTransportListenAddr obfs4 0.0.0.0:9443
ExtORPort auto
ContactInfo you@example.com
Nickname PickANickname
BridgeDistribution any

Mỗi dòng trong số này đều có một lỗi riêng có thể xảy ra, vì vậy hãy kiểm tra từng dòng một.

BridgeRelay 1 yêu cầu tor gửi descriptor đến bridge authority thay vì consensus công khai. Đây là dòng duy nhất khiến relay không được liệt kê công khai.

ORPort là cổng Tor thực sự. Cổng này phải truy cập được từ Internet, vì tor sẽ kiểm tra cổng và từ chối công bố descriptor cho đến khi kiểm tra thành công.

ServerTransportPlugin chỉ định lệnh tor cần chạy. tor khởi động obfs4proxy dưới dạng tiến trình con và giao tiếp với tiến trình này qua pipe. Vì vậy, obfs4proxy không có service unit riêng và không bao giờ xuất hiện trong systemctl status.

ServerTransportListenAddr cố định cổng mà obfs4proxy lắng nghe. Nếu bỏ dòng này, obfs4proxy sẽ chọn một cổng trống khi khởi động và thường chọn cổng khác sau mỗi lần restart. Khi đó, mọi bridge line bạn đã cung cấp đều trỏ đến một cổng không có tiến trình nào lắng nghe. Các client sẽ nhận lỗi từ chối kết nối và ngừng thử lại.

ExtORPort auto mở extended ORPort, một kênh loopback mà obfs4proxy dùng để chuyển các kết nối đã thiết lập về tor cùng với địa chỉ của client. Hướng dẫn thiết lập của Tor Project có dòng này trên mọi bridge, vì nếu thiếu nó, transport không thể báo địa chỉ đó cho tor.

ContactInfoNickname đều là thông tin công khai. Hãy dùng địa chỉ mà bạn sẽ kiểm tra, vì Tor Project sẽ dùng địa chỉ này để liên hệ khi bridge gặp lỗi. Nếu muốn hạn chế công khai thông tin, hãy chọn nickname không nhận diện được bạn.

BridgeDistribution chọn distributor sẽ cung cấp địa chỉ của bạn cho người dùng. Các giá trị được chấp nhận là https, email, telegram, settings, noneany. Với bridge đầu tiên, hãy dùng any để hệ thống tự quyết định. Với bridge riêng mà bạn tự cung cấp, hãy dùng none để giữ địa chỉ hoàn toàn ngoài cơ chế phân phối công khai.

Vì sao lựa chọn cổng quan trọng

Không dùng 9001 cho cả hai cổng. Tor Project nêu rõ điều này vì 9001 là ORPort truyền thống và các hệ thống kiểm duyệt thường quét Internet để tìm cổng này. Hai cổng cũng phải khác nhau vì tor và obfs4proxy đều bind listener riêng.

Cổng obfs4 tốt nhất là 443. Lưu lượng outbound đến 443 được cho phép trên gần như mọi network bị hạn chế, và một kết nối duy trì lâu đến cổng này trông giống một phiên web thông thường. Bind vào cổng dưới 1024 cần thêm một bước vì obfs4proxy không chạy dưới quyền root:

sudo setcap cap_net_bind_service=+ep /usr/bin/obfs4proxy
sudo systemctl edit tor@.service tor@default.service

Thêm hai dòng sau trong mỗi editor được mở:

[Service]
NoNewPrivileges=no

Chỉ cấp capability là chưa đủ. NoNewPrivileges của systemd ngăn process nhận bất kỳ privilege nào mà process cha không có. File capability chính là một privilege như vậy, nên obfs4proxy sẽ không bind được vào 443 khi thiết lập này vẫn bật.

Nếu muốn bỏ qua bước đó, hãy chọn một cổng cao ít gây chú ý và ghi lại. Dù chọn cổng nào, không thay đổi cổng obfs4 về sau. Một bridge line gắn cố định address, port, fingerprint và certificate với nhau. Vì vậy, mọi bản sao đã nằm trong browser của người dùng sẽ hỏng ngay khi cổng thay đổi.

Mở các cổng trên cả hai firewall

sudo ufw allow 8443/tcp
sudo ufw allow 9443/tcp
sudo ufw status

Cả hai cổng đều phải được mở. Hầu hết nhà cung cấp còn chạy thêm một firewall trong control panel, và ufw không biết gì về firewall đó. Rule có trên máy chủ nhưng không có trong control panel sẽ tạo ra một bridge không thể truy cập và không bao giờ publish descriptor. Nếu một trong hai phần này còn mới với bạn, hãy xem các rule ufw mà VPS mới cầnport đang listen trên Linux thực sự là gì. Trong lúc đó, hãy khóa SSH bằng key và harden cấu hình sshd. Một bridge không được liệt kê trên máy chủ đang dùng SSH bằng password vẫn là một máy chủ đang dùng SSH bằng password.

Khởi động rồi đọc log

sudo systemctl enable --now tor.service
sudo systemctl restart tor.service
sudo journalctl -e -u tor@default

Debian và Ubuntu cung cấp hai unit. tor.service là wrapper mỏng, còn tor@default.service là tiến trình thực hiện công việc. Vì vậy, journalctl -u tor gần như trống, trong khi log bạn cần nằm dưới tor@default.

Hai dòng sau cho biết quá trình đã thành công:

Self-testing indicates your ORPort is reachable from the outside. Excellent. Publishing server descriptor.
Registered server transport 'obfs4' at '0.0.0.0:9443'

Dòng đầu tiên có nghĩa là kiểm tra khả năng kết nối đã thành công và descriptor đã được gửi đến bridge authority. Nếu dòng này không bao giờ xuất hiện, có thành phần nào đó giữa Internet và server của bạn đang chặn traffic đến ORPort. Dòng thứ hai phải hiển thị cổng bạn đã cấu hình. Nếu cổng ở đó khác với cấu hình, tor chưa áp dụng ServerTransportListenAddr. Nguyên nhân thường gặp là tên transport không khớp: cả hai directive đều phải ghi obfs4.

Xác nhận hai listener đang tồn tại:

sudo ss -lntp | grep -E 'tor|obfs4|lyrebird'

Tôi tìm dòng bridge ở đâu?

obfs4proxy ghi một template vào thư mục dữ liệu của tor:

sudo cat /var/lib/tor/pt_state/obfs4_bridgeline.txt

Thư mục đó thuộc về user tor và có mode 700, nên nếu không có sudo thì bạn sẽ nhận Permission denied. File này chứa một dòng có dạng:

Bridge obfs4 <IP ADDRESS>:<PORT> <FINGERPRINT> cert=<CERTIFICATE> iat-mode=0

Thay <IP ADDRESS> bằng địa chỉ public của server, <PORT> bằng cổng obfs4, không phải ORPort, và <FINGERPRINT> bằng identity fingerprint mà tor đã ghi vào thư mục dữ liệu:

sudo cat /var/lib/tor/fingerprint
sudo cat /var/lib/tor/hashed-fingerprint

File đầu tiên chứa nickname và identity fingerprint cần dùng trong bridge line. File thứ hai chứa fingerprint đã băm. Bạn dán giá trị này vào Relay Search để kiểm tra bridge có đang chạy hay không và ước tính có bao nhiêu client đang kết nối đến bridge. Hai giá trị này không thể thay thế cho nhau. Bridge line chứa giá trị đã băm không khớp với identity key mà bridge cung cấp, nên client sẽ từ chối connection vừa mở.

Bridge thực sự đến được người dùng bằng cách nào?

Bạn không gửi bridge line trực tiếp cho bất kỳ ai. Khi descriptor đến bridge authority, hệ thống phân phối (rdsys, hệ thống kế nhiệm BridgeDB) sẽ gán bridge của bạn cho một distributor. Người dùng sẽ yêu cầu bridge từ distributor đó. Tính đến tháng 8 năm 2026, các route gồm:

  • Web form tại bridges.torproject.org/options, trả về bridge line sau khi xác minh captcha.
  • Gửi email đến bridges@torproject.org từ địa chỉ Gmail hoặc Riseup. Hệ thống sẽ trả lời bằng bridge line. Giới hạn provider này cần thiết vì các tài khoản miễn phí không giới hạn sẽ cho phép một bên kiểm duyệt liệt kê toàn bộ bridge.
  • Telegram bot @GetBridgesBot. Gửi /start, sau đó gửi /obfs4 hoặc /webtunnel.
  • Ngay trong Tor Browser, vào Settings rồi Connection. Tùy chọn "Request bridges" sẽ lấy bridge qua kênh moat.

Bridge mới sẽ xuất hiện trong Relay Search khoảng 3 giờ sau khi thiết lập. Người dùng cần lâu hơn nhiều: theo cách diễn đạt của Tor Project, "Có thể mất vài ngày hoặc vài tuần trước khi bạn thấy một tập người dùng ổn định." Hai tuần đầu ít traffic là bình thường, không phải lỗi.

Thiết lập BridgeDistribution none sẽ loại bridge khỏi toàn bộ các cơ chế trên. Khi đó, bạn có thể tự gửi bridge line cho những người cần dùng, qua một kênh mà bên kiểm duyệt không đọc được.

Khi có thành phần không hoạt động

Log không có dòng tự kiểm tra. ORPort không thể truy cập được. Kiểm tra từ một máy khác bằng nc -vz your.ip 8443. Nếu lệnh bị treo, các packet đang bị drop, nên kiểm tra ufw và panel của nhà cung cấp. Nếu kết nối bị từ chối, tor không lắng nghe trên cổng, nên kiểm tra ss -lntp và đọc log để tìm lỗi cấu hình.

Transport đã đăng ký hiển thị một cổng bạn không chọn. tor đã bỏ qua ServerTransportListenAddr. Tên transport phải khớp chính xác với tên trong ServerTransportPlugin, và cả hai phải là obfs4.

obfs4proxy không bind được vào cổng 443. Xác nhận capability bằng getcap /usr/bin/obfs4proxy, sau đó xác nhận override đã được áp dụng vào unit bằng systemctl show tor@default -p NoNewPrivileges. Nếu lệnh in ra NoNewPrivileges=yes, drop-in của bạn đã được đặt vào một unit không chạy.

Không có gì bên trong /var/lib/tor/pt_state/. tor chưa khởi động transport, nghĩa là đường dẫn trong ServerTransportPlugin bị sai. So sánh đường dẫn đó với output của command -v obfs4proxy.

Client ngừng kết nối sau một thay đổi. Mọi thay đổi đối với địa chỉ hoặc cổng obfs4 đều làm vô hiệu hóa tất cả bridge line đã phân phối trước đó. Kiểm tra xem public IP của server có thay đổi không. Một số nhà cung cấp có thể đổi IP khi rebuild.

tor hoàn toàn không khởi động. Chạy sudo -u debian-tor tor --verify-config -f /etc/tor/torrc. Lệnh này phân tích file, in ra dòng có lỗi và không ảnh hưởng đến service đang chạy.

FAQ

Nhà cung cấp VPS có phàn nàn về Tor bridge không?

Bridge là một điểm vào, nên traffic rời khỏi server của bạn sẽ đi đến các Tor relay khác, không đi đến website do người dùng chọn. Địa chỉ IP của bạn không xuất hiện trong web log của bất kỳ ai với tư cách nguồn của request. Đây là nguyên nhân tạo ra các khiếu nại mà operator của exit relay phải xử lý. Quy định hosting vẫn khác nhau tùy nhà cung cấp. Một số nhà cung cấp xem mọi dịch vụ Tor là trường hợp đặc biệt. Vì vậy, hãy đọc acceptable use policy trước khi bắt đầu và điền địa chỉ bạn đã đọc vào ContactInfo.

Tor bridge sử dụng bao nhiêu bandwidth?

Mức tối thiểu được công bố là 1 Mbit/s cho cả chiều lên và chiều xuống. Guard hoặc middle relay cần 10 Mbit/s. Mức sử dụng thực tế ban đầu gần bằng 0, vì bridge của bạn chỉ chuyển traffic cho những user được distributor gửi đến. Nếu muốn đặt giới hạn cứng, hãy đặt RelayBandwidthRateRelayBandwidthBurst trong torrc.

Vì sao chưa có ai kết nối đến bridge mới của tôi?

Bridge cần khoảng ba giờ để xuất hiện trong Relay Search. Theo hướng dẫn của Tor Project, cần vài ngày hoặc vài tuần để có một nhóm user ổn định. Kiểm tra descriptor đã được publish chưa. Đây là dòng tự kiểm tra trong journalctl -u tor@default. Tra cứu fingerprint đã hash của bạn trong Relay Search. Đồng thời xác nhận BridgeDistribution không được đặt thành none.

Tôi nên chạy obfs4 hay WebTunnel?

Hãy chạy obfs4 nếu đây là bridge đầu tiên của bạn: một VPS, hai port, không cần domain và không cần certificate. Hãy chạy WebTunnel khi traffic có dạng ngẫu nhiên cũng bị chặn. WebTunnel cần một domain do bạn quản lý, một web server thực, một TLS certificate hợp lệ và ít nhất 1 GB RAM. Nếu chạy cả hai, hãy đặt chúng trên các địa chỉ riêng biệt. Nếu không, một IP bị chặn sẽ làm mất cả hai bridge cùng lúc.

Điều gì xảy ra nếu sau này tôi đổi port obfs4?

Mọi bridge line đã được phân phối sẽ ngừng hoạt động. Bridge line gắn cố định address, port, fingerprint và certificate với nhau. Vì vậy, client đang giữ line cũ sẽ mở kết nối đến một port không có tiến trình listening rồi bỏ cuộc. Điều tương tự xảy ra khi public IP của server thay đổi. Hãy chọn port trong lúc setup và giữ nguyên port đó.