DNSBox

DNS và HTTPS cho tên máy chủ dựa trên IP

Truy cập dịch vụ HTTP công khai qua *.dnsbox.io, hoặc chạy DNSBox trong mạng riêng của bạn.

Có trong v0.5.2

Bạn đang nâng cấp từ v0.4.x? Hãy làm theo hướng dẫn chuyển đổi trước khi thay thế bản cài đặt hiện có. Hướng dẫn chuyển đổi

Dùng dịch vụ công khai

Không cần tài khoản hay đăng ký tên miền. Máy chủ đích phải có địa chỉ IP công khai được phép và chạy dịch vụ HTTP trên cổng 80 mà DNSBox có thể truy cập.

Thay 198.51.100.20 bằng địa chỉ IPv4 công khai của máy chủ bạn:

https://198-51-100-20.dnsbox.io

DNS phân giải tên máy chủ thành địa chỉ của proxy DNSBox. Proxy tiếp nhận và kết thúc kết nối HTTPS, rồi chuyển tiếp HTTP đến địa chỉ IP được mã hóa trong tên máy chủ. Nó không cài chứng chỉ lên máy chủ của bạn.

Let's Encrypt xác thực tên máy chủ qua DNS-01. Chứng chỉ được cấp cho tên máy chủ đó, không phải cho địa chỉ IP thuần túy. Kết nối TLS đầu tiên có thể mất nhiều thời gian hơn trong lúc cấp chứng chỉ.

Kết nối từ trình duyệt đến DNSBox dùng HTTPS. Kết nối từ DNSBox đến máy chủ đích dùng HTTP. Hỗ trợ nâng cấp kết nối lên WebSocket.

Địa chỉ IPv6 của máy chủ đích có thể được mã hóa thành 2a01-4f8-c17-b8f--1.dnsbox.io. Một dấu gạch nối biểu thị dấu hai chấm; hai dấu gạch nối biểu thị ::.

Kiểm tra phân giải DNS trước, rồi đến HTTPS. Hãy dùng máy chủ HTTP của chính bạn có thể truy cập được cho phép thử này:

dig +short 198-51-100-20.dnsbox.io
curl -v https://198-51-100-20.dnsbox.io/

Câu trả lời DNS là địa chỉ proxy. Kết nối TLS hợp lệ và phản hồi HTTP thành công từ máy chủ đích là hai bước kiểm tra riêng biệt.

Chạy trong mạng riêng

Chế độ TLS cục bộ hoạt động mà không cần DNS công khai, chuyển tiếp cổng hay truy cập Internet. DNSBox tạo tổ chức phát hành chứng chỉ (CA) riêng. Máy khách phải tin cậy CA này.

Ví dụ: DNSBox ở 192.168.1.2, các máy chủ HTTP đích nằm trong mạng 192.168.1.0/24:

./dnsboxd --domain=home.arpa --ip=192.168.1.2 \
  --tls-mode=local --allowed-cidrs=192.168.1.0/24 \
  --dns-listen=192.168.1.2:53 --https-listen=192.168.1.2:443 \
  --data-dir=/var/lib/dnsbox

Chỉ chuyển tiếp vùng home.arpa từ trình phân giải DNS trong mạng LAN đến 192.168.1.2. DNSBox có thẩm quyền đối với vùng của mình; nó không phải trình phân giải DNS đệ quy đa dụng.

Cấp một chứng chỉ cục bộ để tạo CA, sau đó cài /var/lib/dnsbox/ca/root.crt vào kho CA tin cậy của từng máy khách. Giữ bí mật root.pem. Hướng dẫn triển khai có lệnh khởi tạo.

Với máy chủ đích ở 192.168.1.50, hãy mở https://192-168-1-50.home.arpa. Máy khách trong LAN cần truy cập được các cổng DNS và HTTPS của DNSBox; DNSBox cần truy cập được cổng HTTP của máy chủ đích.

Thiết lập mạng riêng

Tự triển khai với Let's Encrypt

Dùng tên miền hoặc tên miền phụ mà bạn kiểm soát và ủy quyền vùng DNS của nó cho máy chủ định danh DNSBox. Một nút có thể phục vụ cả vùng; nhiều nút giúp dự phòng.

Để xác thực DNS-01 công khai, hãy cho phép lưu lượng đến qua UDP 53 và TCP 53, kết nối HTTPS đi ra và phân giải DNS. Không cần mở cổng 80 cho kết nối đến. Cổng 443 chỉ cần cho phép các máy khách dự kiến sử dụng dịch vụ truy cập.

Các máy chủ HTTP đích trong mạng riêng có thể dùng chứng chỉ tên máy chủ được tin cậy công khai khi xác thực DNS-01 diễn ra công khai. Cho phép rõ ràng các máy chủ đích này bằng --allowed-cidrs và cấu hình DNS cùng định tuyến cho máy khách.

Khi dùng nhiều nút, hãy cấu hình cùng danh sách máy chủ định danh và bản ghi trên mọi nút, đồng thời dùng TLS xác thực hai chiều để sao chép dữ liệu thử thách. Mọi nút ngang hàng đã cấu hình phải xác nhận dữ liệu thử thách trước khi việc cấp chứng chỉ tiếp tục.

Có các gói phát hành cho Linux, macOS và Windows. Trình cài đặt hỗ trợ --no-systemd để khởi chạy thủ công hoặc dùng trình quản lý tiến trình khác. Nó không vô hiệu hóa trình phân giải DNS của hệ thống.

Cài đặt và cấu hình cụm

Chứng chỉ cho ocserv và các dịch vụ khác

Dịch vụ công khai không xuất khóa riêng của mình. Nếu dịch vụ của bạn cần các tệp chứng chỉ, hãy tự triển khai DNSBox với một vùng do bạn kiểm soát và đã ủy quyền cho DNSBox.

Chạy --issue với tên máy chủ mã hóa địa chỉ IP trong vùng đó. DNSBox ghi chuỗi chứng chỉ PEM và khóa riêng vào <data-dir>/certs rồi thoát. Trong quá trình cấp chứng chỉ ACME, DNSBox phục vụ DNS nhưng để trống cổng HTTPS 443.

Trỏ tên máy chủ đó trực tiếp đến dịch vụ của bạn bằng bản ghi A/AAAA tường minh. Với ocserv, hãy cấu hình server-cert và server-key. Proxy HTTP của DNSBox không triển khai OpenConnect hay DTLS.

Thiết lập việc gia hạn và tải lại dịch vụ sau khi các tệp thay đổi. Lệnh chạy một lần không gia hạn chứng chỉ sau khi thoát. Không chạy hai tiến trình DNSBox dùng chung một thư mục dữ liệu.

Ví dụ xuất chứng chỉ

Câu hỏi

Tôi có thể dùng IP riêng với dịch vụ công khai không?

Không. Proxy công khai dành cho các máy chủ đích công khai được phép. Với địa chỉ riêng, hãy chạy bản DNSBox của riêng bạn cùng danh sách CIDR cho phép được chỉ định rõ ràng.

Điều gì xảy ra khi IP của tôi thay đổi?

IP là một phần của tên máy chủ. Dùng tên máy chủ mới cho IP mới; các máy khách dùng tên cũ vẫn sẽ truy cập địa chỉ cũ.

DNSBox có chứng minh quyền sở hữu IP của máy chủ đích không?

DNS-01 chứng minh quyền kiểm soát tên máy chủ trong DNS. Nó không xác minh quyền sở hữu IP của máy chủ đích hay nội dung được phục vụ tại đó.

Chứng chỉ có được gia hạn tự động không?

Dịch vụ DNSBox đang chạy sẽ gia hạn các chứng chỉ mà nó quản lý. Chứng chỉ đã xuất cần có quy trình gia hạn và tải lại dịch vụ sử dụng chúng.

Nếu máy chủ đích ngoại tuyến thì sao?

DNS và TLS có thể vẫn hoạt động, nhưng proxy không thể trả về nội dung của ứng dụng. Hãy kiểm tra bộ lắng nghe HTTP, tường lửa và khả năng truy cập máy chủ đích.

Tôi có thể báo lỗi ở đâu?

Mở một issue trên GitHub, kèm phiên bản DNSBox, chế độ triển khai và các thông báo lỗi liên quan. Xóa khóa riêng, token và thông tin bí mật khác trước khi gửi.

Issues trên GitHub

Tài liệu tham khảo kỹ thuật

Tài liệu tham khảo cấu hình

Mã nguồn