Nội dung bài viết này xây dựng
Một relay trung gian: nó chấp nhận kết nối từ máy khách và các relay khác, chuyển tiếp lưu lượng bên trong mạng, và không bao giờ mở kết nối đến điểm đích trên internet thông thường. Không ai nhận được khiếu nại lạm dụng về một relay trung gian, bởi vì từ bên ngoài, nó trao đổi lưu lượng mã hóa với danh sách các relay khác được công bố và không gì khác.
Sự khác biệt đó là toàn bộ lý do tồn tại của hướng dẫn này. Relay lối ra là một câu chuyện riêng: khiếu nại về chúng sẽ đến bàn khiếu nại của chúng tôi, không phải của bạn, vì vậy hãy đọc chính sách sử dụng chấp nhận được và mở phiếu yêu cầu trước khi cấu hình. Mọi thứ dưới đây cố ý tắt chức năng lối ra, hai lần.
Trước khi bắt đầu
- Một R-4. Tor là đơn luồng cho mỗi kết nối và bị giới hạn bởi mạng; bốn lõi chuyên dụng sẽ bão hòa một đường truyền trước khi CPU kịp nhận thấy.
- Một trang web có băng thông mà bạn sẵn lòng quyên góp. BUH-01 và HEL-01 là những máy chủ terabyte rẻ nhất mà chúng tôi bán, và cả hai đều có hạ tầng truyền tải để hỗ trợ.
- Một chiếc đồng hồ hoạt động chính xác. Các relay có thời gian lệch sẽ bị loại khỏi danh sách đồng thuận, và đây là nguyên nhân phổ biến nhất khiến một relay khởi động hoàn hảo nhưng không bao giờ xuất hiện.
1. Hệ thống cơ sở
apt update && apt full-upgrade -y
apt install -y tor nyx chrony nftables
timedatectl set-timezone UTC
chronyc trackingchronyc tracking sẽ báo cáo độ lệch thời gian hệ thống ở mức micro giây. Nếu nó báo cáo giây, hãy dừng lại và sửa lỗi đó trước; không gì dưới đây sẽ hoạt động.
2. Cấu hình relay
Thay /etc/tor/torrc bằng nội dung sau. Đọc từng dòng, vì hai trong số đó là những dòng giúp bạn tuân thủ chính sách:
Nickname exampleRelay
ContactInfo [email protected]
ORPort 9001
ORPort [2001:db8:1a2b::2]:9001
SocksPort 0
ControlPort 0
ExitRelay 0
ExitPolicy reject *:*
IPv6Exit 0
RelayBandwidthRate 40 MBytes
RelayBandwidthBurst 60 MBytes
AccountingMax 40 TBytes
AccountingStart month 1 00:00
MetricsPort 127.0.0.1:9035
MetricsPortPolicy accept 127.0.0.1
User debian-tor
DataDirectory /var/lib/tor
Log notice syslogExitRelay 0 và ExitPolicy reject *:* là hai lớp bảo vệ chắc chắn. Một trong hai cũng đủ; cả hai cùng nhau có nghĩa là không có mặc định gói phần mềm tương lai nào, và không có chỉnh sửa nửa chừng lúc nửa đêm, lặng lẽ biến bạn thành một relay lối ra.
Thay địa chỉ IPv6 thực của máy chủ của bạn trong dòng ORPort thứ hai. Mỗi máy chủ đi kèm với một dải /64 được định tuyến, do đó không có lý do gì để chạy relay chỉ hỗ trợ IPv4, và các relay hỗ trợ IPv6 vẫn đang khan hiếm hơn so với relay IPv4.
Cần suy nghĩ về hạn mức băng thông thay vì sao chép một cách máy móc. Lưu lượng trên mạng của chúng tôi không bị giới hạn trong khuôn khổ sử dụng hợp lý, nhưng một relay không giới hạn sẽ sử dụng chính xác lượng mạng có thể cung cấp, mãi mãi. Bốn mươi megabyte mỗi giây với trần hàng tháng là bốn mươi terabyte là một relay hào phóng và hoạt động tốt. Khi đạt đến hạn mức, relay sẽ ngủ đông cho đến khi chu kỳ tiếp theo bắt đầu, thay vì bị cắt giữa phiên mạch.
Nếu bạn chạy nhiều hơn một relay ở bất kỳ đâu, hãy thêm một dòng MyFamily liệt kê mọi dấu vân tay bao gồm cả relay này và phân tách bằng dấu phẩy. Máy khách sử dụng để tránh xây dựng một mạch đi qua hai máy cùng quyền kiểm soát, và việc bỏ qua là lỗi cấu hình phổ biến nhất được báo cáo đối với các nhà điều hành.
3. Tăng cường đơn vị hệ thống
Đơn vị hệ thống đóng gói khá tốt; những dòng này làm cho nó ít thu hút hơn đối với bất kỳ ai tìm thấy lỗ hổng trong đó.
systemctl edit tor@default[Service]
NoNewPrivileges=yes
PrivateTmp=yes
PrivateDevices=yes
ProtectSystem=strict
ProtectHome=yes
ProtectKernelTunables=yes
ProtectKernelModules=yes
ProtectControlGroups=yes
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX
RestrictNamespaces=yes
MemoryDenyWriteExecute=yes
ReadWritePaths=/var/lib/tor /var/log/tor /run/tor
LimitNOFILE=65535Giới hạn mô tả tệp quan trọng hơn vẻ ngoài. Một relay bận rộn giữ hàng nghìn socket đồng thời, và giới hạn mặc định tạo ra một relay hoạt động trong một tuần rồi bắt đầu từ chối kết nối không có gì rõ ràng trong nhật ký.
4. Tường lửa
flush ruleset
table inet filter {
chain input {
type filter hook input priority filter; policy drop;
ct state established,related accept
ct state invalid drop
iif lo accept
ip protocol icmp accept
ip6 nexthdr icmpv6 accept
tcp dport 22 accept
tcp dport 9001 accept
}
chain forward {
type filter hook forward priority filter; policy drop;
}
}systemctl enable --now nftables
systemctl restart tor@defaultLưu ý rằng cổng số liệu được ràng buộc với địa chỉ loopback và do đó không cần quy tắc nào. Truy cập nó qua một đường hầm SSH khi bạn cần, và không bao giờ để lộ nó; số liệu relay thú vị với nhiều người hơn bạn.
Xác minh
Đây là phần mất hàng giờ thay vì vài phút, vì vậy hãy khởi động nó và làm việc khác.
Trước tiên, trong khoảng hai mươi phút sau khi khởi động, nhật ký sẽ cho biết relay đã tự kiểm tra cổng từ bên ngoài và kết nối thành công:
journalctl -u tor@default --since "20 min ago" | grep -i "self-testing"Bạn cần dòng cho biết ORPort của bạn có thể truy cập từ bên ngoài. Nếu nó không bao giờ xuất hiện, tường lửa đang chặn cổng 9001 đến hoặc địa chỉ IPv6 của bạn trong torrc không khớp với máy chủ.
Thứ hai, lấy dấu vân tay của bạn và giữ nó:
cat /var/lib/tor/fingerprintThứ ba, xác nhận relay thực sự hoạt động thay vì chỉ chạy:
nyx
curl -s http://127.0.0.1:9035/metrics | grep -E "tor_relay_traffic|tor_relay_connections"Các bộ đếm lưu lượng sẽ tăng trong vòng một giờ sau khi tự kiểm tra thành công. Các cơ quan thư mục cần khoảng ba giờ để bỏ phiếu dấu vân tay của bạn vào danh sách đồng thuận, và máy khách chỉ bắt đầu gửi lưu lượng đáng kể sau đó. Cờ Guard xuất hiện vào khoảng ngày thứ tám nếu thời gian hoạt động của bạn duy trì, và đó là lúc biểu đồ lưu lượng đi từ dòng nhỏ giọt đến trần bạn đặt.
Thứ tư, và quan trọng nhất đối với cấu hình đặc biệt này, hãy chứng minh rằng bạn không phải là relay lối ra. Từ một máy thứ hai, kiểm tra rằng không có gì ngoài lưu lượng relay rời đi:
ss -tn state established | wc -l
ss -tn state established sport = :9001 | wc -lGần như mọi kết nối được thiết lập nên liên quan đến ORPort. Một số lượng lớn kết nối ra ngoài với cổng tùy ý có nghĩa là một chính sách lối ra mà bạn không có chủ đích, và lúc đó bạn phải dừng daemon và đọc lại bước hai.
Vận hành
| Mục | Câu trả lời |
|---|---|
| Khởi động lại | Tốn vài giờ uy tín của bạn. Nhóm các thay đổi của bạn. |
| Nâng cấp | apt upgrade rồi khởi động lại. Các relay chạy phiên bản cũ sẽ bị gắn cờ và cuối cùng bị loại. |
| Chuyển địa điểm | Sao chép /var/lib/tor/keys và dấu vân tay đi theo relay. Trọng số đồng thuận không được đặt lại. |
| Khiếu nại | Một relay trung gian không tạo ra khiếu nại nào. Nếu bạn nhận được một khiếu nại, một cái gì đó đang thoát ra và bạn nên kiểm tra. |
| Tắt máy | Đặt AccountingMax thành một giá trị nhỏ trước để các mạch rút, hoặc chỉ cần dừng và chấp nhận mất uy tín. |
Sao lưu /var/lib/tor/keys ở đâu đó ngoài máy chủ vào ngày bạn xây dựng nó. Khóa định danh là thứ làm cho relay này thành relay đó; mất nó và bạn bắt đầu lại với trọng số đồng thuận bằng không, mất tám ngày không ai sử dụng. Lập trường của chúng tôi về việc chúng tôi ghi nhật ký gì trong khi relay của bạn chạy được nêu trên trang nhật ký, và nó rất ngắn.