Hai cách chạy FastDDNS trên pfSense
Bảng điều khiển hostname của bạn cung cấp hai cách thiết lập. Phương pháp 2 thêm FastDDNS vào client Services > Dynamic DNS tích hợp dưới dạng nhà cung cấp Custom — đây là phương pháp nên dùng lâu dài, vì pfSense lưu phương pháp này trong cấu hình và sao lưu nó. Phương pháp 1 dán một dòng script vào shell để cài đặt một cron job chạy hai phút một lần. Phương pháp này hoạt động ngay lập tức, nhưng pfSense không quản lý cron job đó.
Số thứ tự dưới đây theo nhãn trên bảng điều khiển của bạn, không theo thứ tự chúng tôi khuyên dùng. Hãy thiết lập Phương pháp 2 để sử dụng lâu dài; dùng Phương pháp 1 khi bạn muốn gửi cập nhật ngay lập tức mà không cần điền biểu mẫu.
| Phương pháp 2 — client DDNS tích hợp | Phương pháp 1 — script crontab | |
|---|---|---|
| Nơi thực hiện | Services > Dynamic DNS trong giao diện web | Diagnostics > Command Prompt, hoặc SSH |
| Được lưu trong cấu hình pfSense | Có | Không — xem giới hạn bên dưới |
| Vẫn tồn tại sau khi khôi phục cấu hình hoặc cài đặt lại | Có | Không |
| Thời điểm gửi cập nhật | Khi địa chỉ của interface được theo dõi thay đổi và kiểm tra lại mỗi ngày | Hai phút một lần, bất kể có thay đổi hay không |
| Công sức thiết lập | Bảy trường, trong đó có bốn trường được sao chép từ bảng điều khiển | Một lần dán |
| Phù hợp cho | Thiết lập lâu dài | Lần cập nhật đầu tiên ngay lập tức hoặc kiểm thử nhanh |
Trước khi bắt đầu
Bốn điều cần chuẩn bị, trong đó hai điều quyết định việc truy cập từ xa có hoạt động hay không.
- Một hostname FastDDNS. Tạo một hostname miễn phí tại FastDDNS, sau đó mở hostname đó và cuộn đến DDNS Configuration Parameters > Firewall pfSense.
- Quyền quản trị đối với giao diện web pfSense, và quyền truy cập shell nếu bạn định dùng Phương pháp 1.
- Một địa chỉ IP công cộng thực trên giao diện WAN. Nếu ISP của bạn đặt bạn sau Carrier-Grade NAT, DNS động không thể giúp được — hostname sẽ trỏ đến một địa chỉ mà không ai bên ngoài ISP có thể truy cập. Kiểm tra địa chỉ WAN trên bảng điều khiển pfSense hoặc chạy CGNAT Checker trong ứng dụng di động FastDDNS.
- Các quy tắc tường lửa và NAT cho bất kỳ dịch vụ nào bạn muốn truy cập. DDNS chỉ giữ cho tên trỏ đến đúng địa chỉ; cách truy cập vẫn là việc bạn cần tự cấu hình. Sau đó, hãy xác nhận bằng Port Check.
Trên bảng điều khiển pfSense, nếu địa chỉ trên giao diện WAN thuộc 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 hoặc 100.64.0.0/10 thì có thiết bị upstream đang thực hiện NAT. Dải 100.64.0.0/10 là dải được dành riêng cho Carrier-Grade NAT.
Phương pháp 2 — thêm FastDDNS làm máy khách Dynamic DNS tùy chỉnh
Đây là cách thiết lập nên dùng lâu dài. pfSense lưu cấu hình này trong config.xml, nên cấu hình sẽ được khôi phục khi bạn khôi phục bản sao cấu hình và vẫn tồn tại sau khi cài đặt lại.
Bước 1 — sao chép URL cập nhật từ bảng điều khiển hostname
Mở hostname của bạn, cuộn đến DDNS Configuration Parameters rồi mở rộng Firewall pfSense. Mọi thứ bạn cần cho cả hai phương pháp đều nằm trong cùng bảng điều khiển đó:

Sao chép URL cập nhật trong Method 2. Nó đã chứa hostname và thông tin đăng nhập của bạn:
https://client.fastddns.net/?hostname=myhome.fastddns.net&user_name=YOUR-USERNAME&user_pass=YOUR-UPDATE-PASSWORDBa giá trị viết hoa đại diện cho thông tin riêng tư trong tài khoản của bạn — bảng điều khiển sẽ tự điền chúng.
Bước 2 — mở Dynamic DNS client
Trong giao diện web pfSense, đi tới Services > Dynamic DNS và nhấp vào + Add.
Bước 3 — điền các trường
| Trường | Giá trị | Lý do |
|---|---|---|
| Service Type | Custom |
FastDDNS không có trong danh sách nhà cung cấp tích hợp sẵn và cũng không cần phải có |
| Interface to Monitor | WAN |
Giao diện mà khi địa chỉ thay đổi sẽ kích hoạt một lần cập nhật |
| Hostname | hostname FastDDNS của bạn | URL cập nhật đã chứa thông tin này, nên với loại Custom, đây chủ yếu là nhãn bạn sẽ thấy trong danh sách |
| Update URL | URL từ Bước 1 | Dán toàn bộ URL. Không có %IP% nào cần thay thế — FastDDNS ghi lại địa chỉ mà yêu cầu được gửi từ đó |
| Force IPv4 DNS Resolution | được chọn | Phân giải hostname cập nhật chỉ qua IPv4, nên địa chỉ FastDDNS ghi lại sẽ là địa chỉ WAN IPv4 của bạn thay vì địa chỉ IPv6 |
| Result Match | để trống | pfSense so sánh giá trị này với toàn bộ phản hồi. FastDDNS trả lời good sau khi có thay đổi và nochg khi không có gì thay đổi, nên không có một chuỗi cố định nào khớp với cả hai — hướng dẫn riêng của bảng điều khiển không đặt giá trị này |
| Description | FastDDNS.net |
Văn bản tự do để bạn tham khảo |

Bước 4 — lưu, sau đó đọc cột trạng thái
Nhấp vào Save & Force Update. Quay lại danh sách Services > Dynamic DNS, cột Cached IP sẽ được điền bằng địa chỉ WAN hiện tại của bạn. Một mục trống hoặc vẫn hiển thị địa chỉ cũ sau khi cập nhật bắt buộc nghĩa là bản cập nhật chưa được thực hiện — bảng khắc phục sự cố bên dưới sẽ giải thích lý do.
Một điều cần hiểu về phương pháp này: phương pháp này được kích hoạt bởi các sự kiện, không phải bằng cơ chế kiểm tra định kỳ hai phút. Netgate ghi rõ dịch vụ sẽ cập nhật khi địa chỉ của interface thay đổi, và pfSense cũng có sẵn một mục cron mặc định chạy /etc/rc.dyndns.update mỗi ngày một lần vào lúc 01:01 như một biện pháp dự phòng. Vì vậy, bản cập nhật thất bại sẽ được thử lại — chỉ là không phải trong vài phút. Khi cần cập nhật ngay, hãy sử dụng Save & Force Update.
Nếu muốn tự gọi cùng endpoint từ script của mình, bạn có thể xem tài liệu về các tham số trên trang API client FastDDNS.
Video hướng dẫn dưới đây được ghi từ trước, nên giao diện bảng điều khiển trông khác với các ảnh chụp màn hình trong bài. Các trường và thứ tự các bước vẫn giống nhau.
Phương pháp 1 — script crontab một dòng
Bước 1 — sao chép script từ bảng điều khiển hostname
Trong cùng bảng Firewall pfSense, hãy sao chép ô bên dưới Method 1. Đây là một dòng lệnh sử dụng cùng URL cập nhật:
((crontab -l >/dev/null && crontab -l | grep -i "client.fastddns.net") || ((crontab -l; echo '*/2 * * * * fetch "URL" -o /dev/null || curl -s "URL"') | crontab -; fetch "URL" -o /dev/null || curl -s "URL"; printf "\n\nAdded Dynamic DNS Script to crontab successfully\n\n"; exit 1;)) && printf "\n\nFastDDNS is available \n\n";Trong dòng lệnh thực tế, mỗi URL ở trên là URL cập nhật đầy đủ của bạn từ Bước 1 của Phương pháp 2. Hãy sao chép URL này từ bảng điều khiển thay vì tự ghép thủ công.

Bước 2 — chạy script
Dán dòng lệnh vào Diagnostics > Command Prompt, trong hộp Execute Shell Command, rồi nhấn Execute. Bạn cũng có thể sử dụng một phiên SSH hoặc tùy chọn 8 trên console.
Cảnh báo của Netgate áp dụng cho trang này nói chung: trang này sẽ chạy mọi thứ bạn dán với đầy đủ quyền, và một lệnh sai có thể khiến firewall không thể sử dụng. Chỉ dán dòng lệnh từ bảng điều khiển của bạn, không thêm gì khác. Lệnh cũng phải chạy xong và trả về — lệnh này đáp ứng điều đó, nên an toàn để chạy tại đây.
Bước 3 — ý nghĩa của hai thông báo
Tìm một trong hai dòng này ở cuối kết quả. Chúng có ý nghĩa khác nhau:
| Thông báo | Điều gì đã xảy ra |
|---|---|
| Added Dynamic DNS Script to crontab successfully | Không có mục FastDDNS nào trong crontab, nên một mục đã được thêm và bản cập nhật được gửi ngay lập tức |
| FastDDNS is available | Mục này đã tồn tại, nên không có gì thay đổi |
Việc kiểm tra là một greplệnh grep đơn giản cho client.fastddns.net trên toàn bộ crontab. Cách này giúp bạn không cài đặt công việc hai lần — nhưng cũng có nghĩa là nếu bạn thêm hostname thứ hai trên cùng một firewall, script sẽ thấy hostname đầu tiên và không thêm gì nữa. Bạn phải tự thêm dòng cron cho hostname thứ hai.
Đó grep cũng là lý do lần chạy thứ hai hiển thị nhiều hơn một dòng: một kết quả khớp được in ra, và dòng khớp chính là mục cron chứa đầy đủ URL cập nhật của bạn — bao gồm cả tên người dùng và mật khẩu. Nếu bạn đang chạy lệnh này khi có người khác nhìn vào màn hình hoặc dán kết quả vào một ticket, hãy xóa dòng đó.
Dòng đã lên lịch tự chạy fetch, trình tải xuống của FreeBSD được pfSense cung cấp, và nếu lệnh đó thất bại thì chuyển sang curl.
Bước 4 — giới hạn cần biết trước khi tin cậy vào cách này
pfSense lưu các tác vụ đã lên lịch riêng trong config.xml và xây dựng lại crontab hệ thống từ đó. Công việc được thêm bằng crontab - lại nằm trong crontab của người dùng root, không được pfSense quản lý và cũng không được đưa vào bản sao lưu cấu hình. Điều này dẫn đến hai hệ quả:
- Nếu khôi phục cấu hình hoặc cài đặt lại firewall, công việc này sẽ biến mất — còn Dynamic DNS client trong Phương pháp 2 thì vẫn còn.
- Nếu System > Advanced > Miscellaneous đã bật RAM disk cho
/tmpvà/var, crontab của root sẽ nằm trong RAM. Netgate cho biết chỉ dữ liệu RRD, DHCP leases, log và dữ liệu Captive Portal được giữ lại sau khi khởi động lại với các RAM disk đó — crontab không nằm trong danh sách này.
Điều đó không có nghĩa Phương pháp 1 là sai. Đây là cách tốt để hostname được cập nhật ngay bây giờ, nhưng không phù hợp để duy trì trong một năm. Nếu muốn dùng cron job mà pfSense thực sự lưu giữ, hãy cài gói Cron rồi thêm dòng tương tự thông qua gói đó.
Một bản ghi cũ khác, cho thấy cách dùng script trên thiết kế panel trước đây.
Kiểm tra xem hostname có thực sự được cập nhật không
Dù bạn đã dùng phương pháp nào, hãy kiểm chứng theo ba cách.
Trong pfSense, Services > Dynamic DNS hiển thị Cached IP cho mỗi mục — giá trị này phải khớp với địa chỉ WAN của bạn. Nếu dùng Phương pháp 1, hãy xác nhận rằng tác vụ tồn tại và chạy thử một lần bằng tay từ shell:
crontab -l
fetch -o - "PASTE-YOUR-UPDATE-URL-HERE"Lệnh thứ hai sẽ in ra phản hồi của máy chủ. Phản hồi phải bắt đầu bằng good nếu địa chỉ vừa thay đổi, hoặc nochg nếu địa chỉ đã chính xác — FastDDNS có thể thêm địa chỉ mà nó đã ghi nhận. badauth là phản hồi duy nhất xác định rõ vấn đề: tên người dùng hoặc mật khẩu cập nhật không đúng. Các phản hồi khác, hoặc hoàn toàn không có phản hồi, không tự nói lên nguyên nhân — hãy đọc chính xác nội dung nhận được, rồi kiểm tra nhật ký hệ thống.
Từ bên ngoài mạng, hãy phân giải hostname và so sánh với địa chỉ công khai của bạn:
nslookup myhome.fastddns.netCuối cùng, bảng điều khiển hostname của bạn sẽ hiển thị dấu thời gian Last Updated thay đổi kể từ Not yet updated lần đầu tường lửa gửi yêu cầu cập nhật. FastDDNS áp dụng địa chỉ mới trong chưa đầy 60 giây, dù bộ nhớ đệm DNS cục bộ có thể giữ địa chỉ cũ lâu hơn một chút.
Khắc phục sự cố pfSense DDNS
| Điều bạn thấy | Nguyên nhân | Cách xử lý |
|---|---|---|
Phản hồi là badauth |
Tên người dùng hoặc mật khẩu cập nhật trong URL không đúng | Hãy sao chép lại Update URL từ bảng điều khiển; nếu bạn chuyển từ nhà cung cấp khác, hãy xem hướng dẫn về thay thế địa chỉ máy chủ No-IP hoặc DynDNS |
| Cached IP vẫn trống sau khi lưu | Client không thể kết nối đến máy chủ cập nhật hoặc URL đã bị cắt khi dán | Hãy dùng Save & Force Update, rồi đọc Status > System Logs > System > General; bật Verbose Logging trong mục nhập để xem toàn bộ quá trình trao đổi |
| hostname phân giải thành địa chỉ IPv6 | Máy chủ cập nhật đã được truy cập qua IPv6, nên đó là địa chỉ được ghi nhận | Đánh dấu Force IPv4 DNS Resolution trên mục Dynamic DNS và buộc cập nhật |
| Mỗi lần cập nhật đều được ghi nhận là thất bại mặc dù hostname vẫn đúng | Result Match được đặt thành một chuỗi cố định, và phản hồi luân phiên giữa good và nochg |
Xóa trường Result Match để tắt kiểm tra kết quả |
| Phương pháp 1 đã hoạt động, nhưng dừng sau khi khởi động lại hoặc khôi phục cấu hình | Công việc cron nằm ngoài config.xml, và có thể nằm trên đĩa RAM |
Thiết lập Phương pháp 2 thay thế, hoặc thêm dòng này thông qua Cron |
| Tên máy chủ được phân giải, nhưng không có gì trả lời trên cổng của bạn | Hostname được phân giải, nhưng không có gì phản hồi trên port của bạn | DDNS đang hoạt động; đường dẫn vào mạng thì chưaKiểm tra Cổng |
| Thêm các quy tắc NAT và tường lửa, sau đó kiểm tra từ bên ngoài bằng | Hostname được phân giải thành một địa chỉ không phải IP công cộng của bạn | Tường lửa nằm sau một lớp NAT khác, thường là CGNAT |
| So sánh địa chỉ WAN trên bảng điều khiển với kết quả tra cứu IP công khai; nếu chúng khác nhau, hãy yêu cầu ISP cung cấp IP công cộng | Một tên miền miễn phí được gia hạn một lần mỗi năm, và một tên miền tạm thời kéo dài 30 ngày | Gia hạn nó từ tài khoản của bạn, hoặc chuyển sang gói mà các tên miền không hết hạn |
Giữ URL cập nhật của bạn ở chế độ riêng tư
URL cập nhật chứa hostname, tên người dùng và mật khẩu cập nhật dưới dạng các tham số truy vấn dạng văn bản thuần túy. URL này được lưu nguyên dạng trong cấu hình pfSense và, với Phương pháp 1, trong crontab — bất kỳ ai đọc được bản sao lưu cấu hình đều có thể đọc các thông tin đăng nhập đó. Hãy coi tệp xuất cấu hình pfSense như một tệp mật khẩu, và không bao giờ dán URL cập nhật chưa che thông tin nhạy cảm lên diễn đàn hoặc trong yêu cầu hỗ trợ. Nếu đã làm vậy, hãy thay đổi mật khẩu cập nhật trong tài khoản rồi cấu hình lại mục nhập.
Câu hỏi thường gặp
Tôi nên dùng client Dynamic DNS hay script cron?
Hãy dùng client Dynamic DNS trong Services > Dynamic DNS cho mọi cấu hình bạn muốn duy trì lâu dài. pfSense lưu cấu hình này trong cấu hình hệ thống, nên nó nằm trong bản sao lưu và được khôi phục sau khi cài đặt lại. Script cron là cách nhanh hơn để thực hiện lần cập nhật đầu tiên, nhưng pfSense không quản lý công việc này và nó có thể bị mất sau khi khởi động lại hoặc khôi phục cấu hình.
Tôi có cần mở port cho chính việc cập nhật DDNS không?
Không. pfSense mở kết nối HTTPS đi ra ngoài tới FastDDNS, nên không cần quy tắc đến cho việc cập nhật. Bạn vẫn cần port forwarding và các quy tắc tường lửa cho những dịch vụ muốn truy cập qua hostname, chẳng hạn như port 554 cho RTSP hoặc port web của camera.
Tại sao bảng điều khiển yêu cầu tôi buộc phân giải IPv4?
Vì FastDDNS ghi lại địa chỉ mà yêu cầu của bạn đến từ đó. Nếu pfSense phân giải máy chủ cập nhật thành địa chỉ IPv6 và kết nối qua IPv6, đó là địa chỉ được ghi lại, khiến A record của bạn bị sai hoặc để trống. Buộc phân giải IPv4 giúp việc cập nhật sử dụng cùng giao thức với địa chỉ bạn muốn công bố.
Điều này có hoạt động nếu ISP của tôi sử dụng CGNAT không?
Không. Khi ở sau Carrier-Grade NAT, tường lửa của bạn không có địa chỉ IP công cộng riêng, nên không có địa chỉ nào để hostname trỏ tới một cách hữu ích, đồng thời ISP chặn các kết nối đến. Dynamic DNS giải quyết vấn đề địa chỉ thay đổi, chứ không giải quyết việc không có địa chỉ. Hãy yêu cầu ISP cung cấp địa chỉ IP công cộng hoặc sử dụng dịch vụ tạo đường hầm cho các kết nối đi ra.
Đang chạy dịch vụ nào khác ở biên mạng? URL cập nhật này hoạt động ở bất kỳ nơi nào có thể gửi yêu cầu HTTPS theo lịch, bao gồm cả MikroTik RouterOS setup.





