- DynIP là dịch vụ DNS động dành cho homelab, router biên và đội ngũ hạ tầng, cung cấp cập nhật trong 60 giây và gói miễn phí
- Hỗ trợ cập nhật qua RFC 2136 TSIG, REST API và UDP/53, đồng thời tích hợp với FortiGate, OPNsense, OpenWRT và MikroTik
- Hỗ trợ IPv6 cùng với IPv4 để cập nhật song song bản ghi A·AAAA, xử lý cả dual-stack lẫn zone chỉ có IPv6
- DNSSEC tự động hóa việc tạo khóa ký, công bố lên parent zone và ký bản ghi, đồng thời là điều kiện cần để cấp chứng chỉ Let’s Encrypt
- Với BYOD, có thể kết nối domain đang sở hữu để tạo subdomain động, nhưng cần ủy quyền cho
ns1.dynip.dev và ns2.dynip.dev
Tổng quan về DynIP
- DynIP là dịch vụ DNS động cho homelab, router biên và đội ngũ hạ tầng, nổi bật với cập nhật 60 giây, gói miễn phí, RFC 2136 TSIG, dùng domain riêng và DNSSEC
- Được thiết kế để khi router gửi bản cập nhật, hostname sẽ được phân giải chính xác trên toàn cầu trong khoảng 60 giây
- Cung cấp TTL 60 giây, truyền bá dựa trên NOTIFY và nameserver đa vùng
- Có đăng ký miễn phí và tài liệu
Tiêu chuẩn DNS và tích hợp router
- Hỗ trợ RFC 2136 TSIG nên có thể dùng với FortiGate, OPNsense, OpenWRT và các router hỗ trợ DNS UPDATE
- Người dùng MikroTik có thể dùng tích hợp HTTP API gốc
- Các phương thức được hỗ trợ gồm RFC 2136 TSIG, REST API và cập nhật gốc qua UDP/53
- Trong màn hình snippet cấu hình, có thể tạo khối cấu hình để sao chép dựa trên loại thiết bị, địa chỉ IP đích, domain và khóa TSIG
- Trong khi zone mới đang được truyền bá đến nameserver, bản cập nhật RFC 2136/TSIG của FortiGate cần chờ
- Các bản cập nhật HTTP API như cURL, PowerShell, Python, MikroTik hoạt động ngay lập tức
IPv6 và DNSSEC
- Hỗ trợ IPv6 cùng với IPv4 để có thể cập nhật song song bản ghi A và AAAA
- Hỗ trợ cả cấu hình dual-stack lẫn zone chỉ có IPv6
- Để cấp chứng chỉ Let’s Encrypt, DNSSEC phải được bật cho zone đó
- Khi bật DNSSEC, việc tạo khóa ký, công bố lên parent zone và ký toàn bộ bản ghi DNS sẽ được thực hiện tự động
- Thiết lập DNSSEC là quy trình một lần; sau đó zone sẽ tiếp tục được giữ ở trạng thái đã ký
- Thời gian dự kiến được hiển thị là 30 giây
Bắt đầu nhanh và quản lý zone
- Quy trình bắt đầu nhanh gồm nhập tên thiết bị, chọn domain cơ sở và nhấn Create Zone để tạo zone
- Từ nút Snippets bên cạnh domain mới, lấy cấu hình, chọn loại thiết bị rồi sao chép khối cấu hình được tạo vào CLI của router
- IPv4 và IPv6 được tự động phát hiện và cập nhật dựa trên kết nối đến
- Danh sách zone hiển thị domain và công cụ, IP hiện tại, TSIG Secret, DNSSEC và trạng thái chứng chỉ SSL
- Trong mỗi zone có thể quản lý trạng thái khóa, snippet, xóa, thông báo, thời điểm đồng bộ, bật/tắt DNSSEC và tải xuống/gia hạn/cấp chứng chỉ SSL
Sử dụng domain riêng
- Tính năng Custom Namespaces (BYOD) cho phép kết nối domain đang sở hữu với DynIP và tạo các subdomain động dưới namespace đó
- Để kích hoạt namespace, cần tạo đầy đủ hai bản ghi NS tại nhà đăng ký domain
- Ủy quyền chỉ một NS sẽ bị từ chối
- Các bản ghi NS cần thiết là
ns1.dynip.dev và ns2.dynip.dev
- Xác minh cấu hình được cung cấp theo luồng kiểm tra trạng thái ủy quyền hoặc xác nhận các thao tác cần thiết tại nhà đăng ký
Đồng bộ nhanh và tự động hóa
- Quick Sync là tính năng đồng bộ ngay zone đã chọn với địa chỉ IP bên ngoài hiện tại của thiết bị
- Hiển thị IP mạng được phát hiện và cho phép cập nhật các zone do người dùng chọn cùng lúc
- Có thể đăng ký zone mới theo cách lập trình bằng cách gửi yêu cầu
POST đến endpoint /register với session token
curl -X POST "{{ backendUrl }}/register?subdomain=my-new-router&base_domain={{ baseDomains[0] }}" \
-H "Authorization: Bearer {{ token }}"
- Session token sẽ hết hạn khi đăng xuất, vì vậy cần dùng API token cho tự động hóa dài hạn
- API tokens là tính năng từ gói Pro trở lên, có thể dùng cho các tác vụ tự động như script giám sát, pipeline CI và tích hợp MSP
- API token không hết hạn khi đăng xuất, có thể giới hạn ở phạm vi chỉ đọc hoặc toàn quyền và có thể thu hồi bất cứ lúc nào
- API token mới chỉ được hiển thị một lần khi tạo, vì vậy cần lưu trong trình quản lý mật khẩu hoặc kho lưu trữ bí mật
Gói cước và bảo mật tài khoản
- Màn hình gói cước hiển thị tier đăng ký, trạng thái, ngày gia hạn hoặc ngày hết quyền truy cập, chu kỳ thanh toán, số zone đang dùng và số domain tối đa
- Nếu hạ cấp gói, chỉ số zone cũ nhất trong giới hạn cho phép được giữ hoạt động; các zone còn lại sẽ bị khóa và không thể nhận cập nhật IP
- Nếu thanh toán thất bại, cần cập nhật phương thức thanh toán để duy trì quyền truy cập
- Bảo mật tài khoản hỗ trợ 2FA qua email và TOTP; khi bật TOTP, nó sẽ thay thế 2FA qua email
- Thiết lập TOTP gồm quét mã QR bằng Google Authenticator, Authy hoặc ứng dụng 2FA ưa thích, rồi xác minh mã
Liên kết liên quan
1 bình luận
Ý kiến trên Hacker News
Tôi là Daniel, một kỹ sư mạng ở Thụy Điển, và đã tạo ra DynIP vì cảm thấy các dịch vụ DDNS hiện có vẫn mắc kẹt trong kiểu mạng của thập niên 2010
Việc lặp đi lặp lại giao thức cập nhật độc quyền chỉ hỗ trợ HTTP, hỗ trợ IPv6 yếu, thiếu DNSSEC, và không hỗ trợ tốt thiết bị hiện đại khiến DynIP coi RFC 2136 / TSIG update là con đường hạng nhất
FortiGate generic DDNS và MikroTik
/tool dns-updatehoạt động mà không cần client riêng, và cũng có cung cấp HTTP API cho các mục đích khácMáy chủ DNS có thẩm quyền có thể được truy cập qua IPv6, AAAA glue đã được công bố trong zone cha
.dev, và zone của khách hàng phát hành A/AAAA đồng thời hỗ trợ cả client chỉ dùng IPv6Với các zone được chọn, có thể bật DNSSEC chỉ bằng một công tắc, và có thể mang theo domain riêng thông qua việc ủy quyền subdomain
Kiến trúc gồm một primary ẩn không nhận lưu lượng công khai, cùng 2 secondary phân tán địa lý tại Thụy Điển và Thụy Sĩ, nơi xác thực TSIG cục bộ rồi chuyển tiếp về primary
Cũng cho phép địa chỉ RFC 1918 và CGNAT trong record, để các đội thiết bị di động dùng private APN có thể dùng hostname DNS công khai ổn định trỏ tới IP nội bộ
Ngoài ra còn có một container Docker nhỏ là
ghcr.io/33k-org/dynip-updater, và stack gồm PowerDNS 4.8 authoritative, FastAPI, Postgres, Postfix, Cloudflare, Paddle; dịch vụ đang chạy tạidynip.devvà có cả gói miễn phíNó cung cấp các tính năng như IPv6, DNSSEC, dùng domain riêng, và là một dự án mã nguồn mở đồng thời vận hành dịch vụ hosting miễn phí ổn định
Có thể tôi không tìm thấy trong tài liệu, nhưng bên này có hỗ trợ IPv6 prefix delegation, nên khi IPv6 prefix mà ISP cấp cho router thay đổi thì chỉ cần cập nhật network prefix của một domain bất kỳ
Ở châu Âu, prefix này không cố định và thay đổi mỗi lần kết nối lại với ISP, nên tính năng tự động cập nhật chỉ phần mạng trong khi giữ nguyên phần host rất hữu ích
Ví dụ:
/update?myipv6:nas.home.mydomain.tld=2003:e6:bee:affe::/56Khi bấm vào liên kết xác nhận email thì hoàn toàn không có thông báo đã xác nhận xong hay hiển thị trạng thái nào, nên khá khó hiểu
Khi đang đăng nhập, liên kết sẽ chuyển hướng về trang chủ dashboard, nên người dùng bình thường sẽ nhận email ngay sau khi bấm nút đổi mật khẩu và vì vậy phải đăng xuất trước
Sẽ mượt hơn nếu email ghi rõ “hãy đăng xuất trước”, hoặc liên kết tự kết thúc phiên hiện tại rồi hiển thị trang đặt lại
Tôi nhớ mang máng đây từng là điều cấm kỵ về mặt bảo mật
Phần chào hàng trông khá ổn, nhưng hiện giờ tôi chưa có thời gian dùng thử ngay
Tuy vậy, nếu tôi không đọc phần giải thích trong các bình luận ở đây thì có lẽ tôi đã đóng tab ngay từ landing page
Xin lỗi vì nói quá thẳng, nhưng trang này trông giống một landing page sản xuất hàng loạt mang cảm giác AI thường thấy; không có nghĩa là thực sự như vậy, nhưng vì phần giải thích rất tốt nên sẽ hay hơn nếu thêm cá tính để tạo khác biệt
Ngoài ra, tốt hơn là không nên tạo tài khoản Hacker News riêng cho dự án
“Đừng đặt tên người dùng là tên công ty hoặc tên dự án. Điều đó tạo cảm giác đang dùng HN để quảng bá và như thể bạn không tham gia với tư cách một con người. Không nhất thiết phải dùng tên thật, nhưng cần có tín hiệu cho thấy ở đây là con người chứ không phải thương hiệu. Nếu muốn đổi tên người dùng, hãy gửi mail tới hn@ycombinator.com.”
https://news.ycombinator.com/item?id=22336638
Cũng có thể tham khảo https://news.ycombinator.com/showhn.html
Hiện giờ tôi đang ở giai đoạn có những điều mình biết và chưa biết, có hy vọng và ước mơ, cùng một khối kiến thức kỹ thuật khá lớn; phần thiết kế thì không mạnh, nhưng trước mắt tôi thấy như vậy cũng ổn
Theo tiêu chuẩn của Pangram thì là 100%, và thật ra kể cả không có công cụ đó cũng dễ nhận ra, nên việc vẫn có không ít người ở đây không phân biệt được điều đó khá là u ám
Thật vui khi thấy có thêm cạnh tranh trong lĩnh vực này
Tuy vậy, nếu muốn tự host mà không quá bận tâm đến độ ổn định hay mức độ dễ dùng thì bind9 cũng hỗ trợ RFC 2136 DNS UPDATE và DNSSEC
Trong cấu hình của tôi, router ở nhà không biết nói DNS UPDATE nên tôi cũng tự viết một file thực thi Go nhỏ để chuyển đổi các yêu cầu HTTP
Tôi đã tạo một vài test case trên FortiGate, và DynIP ban đầu cũng xuất phát từ việc sao chép-dán đơn giản, chuyên cho FortiGate, chạy trên DNS nội bộ
Có các ví dụ mã có thể dùng nội bộ trên nhiều host Windows hay Linux, và nếu bạn có thiết bị IoT trong homelab thì cũng có cả ví dụ Arduino
Việc tạo file thực thi Go cũng là một hướng tốt, nên hãy theo dõi các cập nhật dưới
/docsViệc hỗ trợ RFC 2136 xứng đáng được cộng điểm thưởng, và hoạt động dễ dàng với external-dns
Tôi đã dùng Kubernetes on-premise cùng external-dns trong nhiều năm, kết hợp với một máy chủ BIND tự host cấu hình tối thiểu trên host công khai
Đã có sẵn hướng dẫn vận hành fleet, và mẫu Kubernetes là phần mở rộng tự nhiên nên có lẽ nên viết hướng dẫn
Trước đây tôi tự viết script OpenWrt DDNS để cập nhật AWS Route 53 hoặc Cloudflare DNS, và như vậy là đủ giải quyết vấn đề
Sau khi Tailscale xuất hiện thì tôi không còn phải bận tâm đến DDNS hay CGNAT nữa
Tôi đã viết hướng dẫn ở https://dynip.dev/guides/tailscale giải thích chúng có thể cùng tồn tại với nhau như thế nào và vì sao
Script OpenWrt DDNS hơi phiền vì key và secret, nhưng tôi khá hài lòng vì tính năng snippet giúp không phải đoán “nó hoạt động như thế nào?”
Tôi dùng DynIP cho dịch vụ công khai, còn thứ gì chỉ mình tôi cần truy cập thì dùng Tailscale, nhờ vậy bề mặt tấn công giảm đi đáng kể
May là không cần phải lo về CGNAT
Tôi đã thử đăng ký nhưng email xác minh không đến
Ngay sau khi đăng ký cũng không thấy dấu vết tương tự trong log máy chủ mail, và dù đã yêu cầu gửi lại vài lần thì đến 6–7 tiếng sau hộp thư vẫn không có gì
Tôi muốn hỏi liệu token xác thực của gói miễn phí có đúng là hết hạn sau 24 giờ không
Tôi đã xem claim
expcủa JWT, và muốn biết điều này trước khi bỏ thời gian cho việc migrationĐiều cốt lõi là gói miễn phí có bền vững hay không
Mọi zone đều nhận TSIG key riêng ở tất cả các gói, và chính key đó đảm nhiệm cập nhật thực tế
Gói miễn phí quản lý zone qua dashboard, còn gói trả phí cung cấp thêm token API để quản lý theo cách lập trình
Vì vậy token xác thực được dùng làm bearer cho API, còn TSIG vẫn có hiệu lực cho đến khi domain bị xóa
Gói miễn phí cho phép 5 zone và mỗi zone có TSIG key riêng luôn hoạt động, nên trừ khi bạn tạo, cập nhật và xóa hàng trăm zone thì không cần phải trả tiền
Cảm ơn vì có rất nhiều bình luận và câu hỏi tuyệt vời, tôi vừa đưa con gái đi học bơi về trong vài tiếng và sẽ tiếp tục theo dõi thread
Tôi tò mò không biết bạn có từng cân nhắc những thứ như https://github.com/hickory-dns/hickory-dns không
Dĩ nhiên không phải mọi thứ đều cần làm bằng Rust
Trông khá thú vị, và tôi đang dùng DDNS để cung cấp nhiều dịch vụ từ máy chủ tại nhà cho các client bên ngoài
Hiện tôi dùng NO-IP DDNS, gói miễn phí của nó khá hào phóng, nhưng tôi không hài lòng vì nó không hỗ trợ những thứ như Let’s Encrypt
Tôi đang cân nhắc mua domain ở Cloudflare, và muốn biết cụ thể DynIP khác biệt ở điểm nào
Kiểu cập nhật chỉ qua HTTP(S) theo phong cách những năm 2000 cũng rất hay
Chỉ cần có
curl/wget/fetchlà chạy được ở bất cứ đâu, và nếu muốn thì chỉ cần thêm tokenCó vẻ duckdns vẫn còn hỗ trợ cách này, và vì không cần client riêng nên gần như chạy được ở mọi nơi
curl/wget/fetchcũng đúng, và bạn có thể xem/docsđể biết thêm các tính năng đặc biệt khác có thể làmỞ đây mục tiêu không chỉ bao gồm
curl/wget/fetchmà là hướng tới một nền tảng tính năng rộng hơn