Loading...

DNS trên FortiGate: DNS Server, DNS Relay, DNS Database và DNS Filter sơ lược

1. Liên hệ thực tế

Khách hàng phàn nàn rằng website nội bộ erp.congty.local chỉ truy cập được từ một vài máy trong văn phòng, các máy khác báo lỗi "không tìm thấy tên miền". Anh Nam kiểm tra thấy các máy đều cùng dùng DNS server là chính FortiGate — nhưng không hiểu vì sao lại có sự khác biệt.

Chị Lan hỏi lại: "Anh có tạo DNS Database nội bộ trên FortiGate cho domain congty.local không? Và nếu có, view của nó đang đặt là shadow hay public?"

Anh Nam ngớ ra — anh chỉ nhớ mang máng đã tạo một zone DNS nội bộ nhưng không để ý tới tham số view.

Chị Lan giải thích: "FortiGate có tới 3 vai trò liên quan tới DNS khác nhau — dễ nhầm lẫn với nhau nếu không phân biệt rõ. Vấn đề của anh nhiều khả năng nằm ở view — nếu đặt shadow mà một số máy lại đi qua đường routing khác khiến FortiGate không nhận diện đúng là truy vấn nội bộ, DNS sẽ từ chối trả lời."

Bài này làm rõ 3 vai trò DNS trên FortiGate: DNS Client (FortiGate tự tra cứu), DNS Server/Relay (phục vụ query cho client LAN), và DNS Database (tạo zone DNS nội bộ) — cùng giới thiệu sơ lược DNS Filter.


2. Kiến thức cốt lõi

2.1 Ba vai trò DNS trên FortiGate

3 Vai Trò DNS Liên Quan Trên FortiGate 1. DNS Client FortiGate tự tra cứu tên miền (FortiGuard, NTP, License check, FQDN Objects, DDNS...) config system dns primary / secondary 2. DNS Relay / Server Nhận Query từ Client LAN, Chuyển tiếp (Forward) hoặc trả lời trực tiếp từ Cache config system dns-server mode: recursive / forward 3. DNS Database Đóng vai trò máy chủ thẩm quyền (Authoritative) lưu trữ Zone Record (A, CNAME, MX...) nội bộ config system dns-database view: shadow / public 3 vai trò này hoạt động độc lập và có thể phối hợp đồng thời trên cùng thiết bị FortiGate

DNS Client — bản thân FortiGate cũng cần tra cứu tên miền (kiểm tra license FortiGuard, đồng bộ NTP, tải chữ ký IPS...), cấu hình tại config system dns.

DNS Relay/Server — FortiGate nhận truy vấn DNS từ client trong LAN, sau đó chuyển tiếp (relay) đi hoặc tự trả lời tùy chế độ, cấu hình tại config system dns-server.

DNS Database — FortiGate đóng vai trò nguồn thẩm quyền (authoritative) cho một zone DNS nội bộ cụ thể, cấu hình tại config system dns-database.

2.2 DNS Client — cấu hình DNS mà FortiGate dùng để tự tra cứu

config system dns
    set primary 8.8.8.8
    set secondary 1.1.1.1
    set protocol cleartext
end

Có thể đặt thêm alt-primary/alt-secondary làm phương án dự phòng, và server-select-method (least-rtt hoặc failover) quyết định cách FortiGate chọn server chính giữa các lựa chọn khi có nhiều server khai báo.

⚠️ Lưu ý: Từ các bản FortiOS gần đây, tham số protocol hỗ trợ thêm các giao thức DNS mã hóa như DNS-over-TLS/HTTPS — nếu môi trường yêu cầu bảo mật truy vấn DNS của chính FortiGate, cân nhắc bật kèm ssl-certificate tương ứng.

2.3 DNS Relay/Server — phục vụ truy vấn từ client LAN

config system dns-server
    edit "internal"
        set mode recursive
    next
end

Chế độ mode recursive khiến FortiGate hoạt động như một DNS resolver đầy đủ — nếu không tự trả lời được, nó sẽ tự đi hỏi các DNS server gốc (root servers) trên Internet thay cho client. Đây khác với việc chỉ đơn thuần forward request tới DNS server đã khai ở config system dns (DNS Client).

2.4 DNS Database — tạo zone DNS nội bộ (authoritative)

Khi cần FortiGate tự trả lời chính xác cho một domain nội bộ (ví dụ congty.local) mà không cần DNS server ngoài, tạo DNS Database:

config system dns-database
    edit "congty-local"
        set domain congty.local
        set type primary
        set view shadow
        set ttl 3600
        set authoritative disable
        config dns-entry
            edit 1
                set hostname "erp"
                set type A
                set ip 192.168.10.20
                set status enable
            next
        end
    next
end

DNS Database: View Shadow vs View Public view = shadow (Nội bộ) Client LAN 192.168.1.0/24 Query DNS Database Internal Zone Chỉ Client nội bộ tra cứu được Zone này Ghi đè/Dịch tên miền nội bộ (Split-Horizon DNS) Ẩn hoàn toàn khỏi lưu lượng từ WAN/Internet view = public (Công cộng) Client Internet WAN / External Query DNS Database Public Zone Công khai ra bên ngoài Internet Cho phép các yêu cầu DNS từ WAN tra cứu Đóng vai trò làm Authoritative DNS Server công cộng Tính năng Split-DNS (Shadow/Public) giúp định tuyến tên miền chính xác theo từng vùng mạng

Các tham số quan trọng của DNS Database:

  • type — primary (tự quản lý toàn bộ entry) hoặc secondary (tham chiếu từ một nguồn primary khác qua zone transfer).
  • view — quyết định phạm vi truy cập: shadow chỉ phục vụ client nội bộ, public cho phép cả client bên ngoài tra cứu (dùng khi muốn FortiGate là authoritative DNS công khai cho domain thật).
  • authoritative — bật/tắt việc zone này có "quyền tối hậu" trả lời cho domain đó hay không.

⚠️ Lưu ý: Đây chính là nguyên nhân trong tình huống mở đầu bài — nếu view đặt shadow nhưng một số client lại đi qua đường routing/VDOM không được FortiGate nhận diện là "nội bộ" (ví dụ qua VPN site-to-site, hoặc liên VDOM), truy vấn của các client đó sẽ bị từ chối dù cùng subnet logic. Cần rà soát kỹ đường đi thực tế của traffic DNS khi debug lỗi tương tự.

⚠️ Lưu ý: Theo mặc định, tùy chọn DNS Database không hiển thị trên GUI — cần vào System > Feature Visibility, bật DNS Database trong mục Additional Features trước khi thao tác qua giao diện web. Qua CLI thì không bị giới hạn này.

2.5 DNS Filter — sơ lược

DNS Filter là một UTM profile riêng biệt (không thuộc 3 vai trò trên), dùng để kiểm soát truy vấn DNS đi qua FortiGate theo danh mục nội dung (FortiGuard categories) — chặn truy vấn DNS đến các domain thuộc nhóm bị cấm (cờ bạc, độc hại, người lớn...) ngay từ bước phân giải tên miền, trước cả khi kết nối HTTP/HTTPS thực sự diễn ra.

config dnsfilter profile
    edit "block-malicious"
        set block-botnet-c2 enable
        config ftgd-dns
            config filters
                edit 1
                    set category 26
                    set action block
                next
            end
        end
    next
end

config firewall policy
    edit 20
        ...
        set dnsfilter-profile "block-malicious"
    next
end

⚠️ Lưu ý: DNS Filter chặn ở tầng phân giải tên miền — nếu client dùng thẳng DNS-over-HTTPS (DoH) tới một server ngoài mà FortiGate không kiểm soát được, DNS Filter có thể bị bỏ qua. Một số bản FortiOS hỗ trợ chặn/kiểm soát riêng DoH như một phần của DNS Filter để bịt lỗ hổng này — cần bật thêm tùy chọn tương ứng nếu môi trường có rủi ro đó. Nội dung chi tiết về DNS Filter sẽ được trình bày đầy đủ ở nhóm bài Security Policy & Inspection.

2.6 Bảng tổng hợp nhanh

Vai tròLệnh CLI gốcMục đích
DNS Client config system dns FortiGate tự tra cứu tên miền cho chính nó
DNS Relay/Server config system dns-server Phục vụ truy vấn DNS từ client trong LAN
DNS Database config system dns-database FortiGate là nguồn thẩm quyền cho 1 zone nội bộ
DNS Filter config dnsfilter profile Kiểm soát nội dung theo domain ở tầng phân giải DNS

3. Hỏi & Đáp

FortiGate có bắt buộc phải bật DNS Database mới dùng được DNS Server/Relay không?

Không — hai vai trò này độc lập nhau. DNS Relay/Server chỉ đơn thuần chuyển tiếp hoặc tự resolve truy vấn ra Internet, không cần biết gì về domain nội bộ. Chỉ khi cần FortiGate tự trả lời cho một domain nội bộ cụ thể (không có trên Internet) mới cần thêm DNS Database.

mode recursive và forward tới DNS server ngoài khác nhau thế nào?

mode recursive khiến FortiGate tự đi hỏi trực tiếp các root DNS server và đệ quy dần xuống tới khi có kết quả, không phụ thuộc DNS server ngoài nào. Forward thì chuyển thẳng truy vấn cho một DNS server cụ thể (ví dụ 8.8.8.8) xử lý toàn bộ hộ, FortiGate chỉ đóng vai trò trung chuyển.

Nếu domain nội bộ trùng tên với domain thật ngoài Internet thì sao?

Khi DNS Database có zone trùng tên và authoritative được bật, FortiGate sẽ ưu tiên trả lời theo DNS Database nội bộ cho các entry đã khai, thay vì đi hỏi ra ngoài — đây là kỹ thuật DNS split-horizon hữu ích khi muốn nội bộ và bên ngoài thấy hai câu trả lời khác nhau cho cùng một tên miền (ví dụ nội bộ trỏ thẳng vào IP LAN, bên ngoài trỏ vào IP public).

DNS Filter có thay thế được Web Filter không?

Không — DNS Filter kiểm soát ở tầng phân giải tên miền (trước khi có kết nối thực sự), còn Web Filter kiểm soát ở tầng nội dung HTTP/HTTPS (sau khi đã kết nối, xem được URL/nội dung cụ thể). Hai profile này thường dùng bổ trợ cho nhau — DNS Filter chặn sớm và nhẹ tải hơn, Web Filter kiểm soát chi tiết hơn nhưng tốn tài nguyên xử lý hơn.


4. Quiz

Câu 1: Lệnh CLI nào dùng để cấu hình DNS server mà chính FortiGate sử dụng để tự tra cứu tên miền?

  • A. config system dns-server
  • B. config system dns
  • C. config system dns-database
  • D. config dnsfilter profile

Câu 2: Chế độ mode recursive trên DNS Server/Relay có nghĩa là gì?

  • A. Chỉ forward truy vấn tới một DNS server cố định
  • B. FortiGate tự đệ quy hỏi trực tiếp các DNS server gốc để tìm câu trả lời
  • C. Không xử lý được bất kỳ truy vấn DNS nào
  • D. Chỉ hoạt động với IPv6

Câu 3: Tham số view trong DNS Database dùng để làm gì?

  • A. Chọn giao diện hiển thị GUI
  • B. Quyết định phạm vi truy cập của zone: chỉ nội bộ (shadow) hay cả bên ngoài (public)
  • C. Đặt thời gian TTL cho entry
  • D. Không có tác dụng gì trong FortiOS 7.0 trở lên

Câu 4: DNS Filter hoạt động ở tầng nào trong quá trình truy cập một website?

  • A. Sau khi đã tải xong toàn bộ nội dung trang web
  • B. Ở tầng phân giải tên miền, trước khi có kết nối HTTP/HTTPS thực sự
  • C. Chỉ hoạt động với giao thức FTP
  • D. Chỉ áp dụng cho traffic nội bộ, không áp dụng Internet

Câu 5: Theo mặc định trên GUI, cần bật tùy chọn nào trong Feature Visibility để thấy mục DNS Database?

  • A. Không cần bật gì, mặc định đã hiển thị
  • B. DNS Database trong mục Additional Features
  • C. VDOM Advanced Mode
  • D. SD-WAN

👉 Đáp án

Câu 1: B config system dns cấu hình DNS server mà chính FortiGate dùng để tự tra cứu tên miền cho các nhu cầu của bản thân thiết bị (FortiGuard, NTP...).

Câu 2: B mode recursive khiến FortiGate tự đệ quy hỏi trực tiếp các root DNS server và đi dần xuống tới khi có kết quả, không phụ thuộc vào một DNS server ngoài cụ thể nào.

Câu 3: B Tham số view quyết định phạm vi truy cập của zone DNS: shadow chỉ phục vụ client nội bộ, public cho phép cả client bên ngoài Internet tra cứu được.

Câu 4: B DNS Filter hoạt động ở tầng phân giải tên miền, chặn truy vấn DNS tới domain thuộc danh mục bị cấm trước cả khi kết nối HTTP/HTTPS thực sự diễn ra.

Câu 5: B Cần vào System > Feature Visibility, bật "DNS Database" trong mục Additional Features thì mục này mới hiển thị trên GUI; qua CLI thì không bị giới hạn này.


📚 Bài viết thuộc khóa học FortiGate của VNExperts

🧭 Điều hướng

⬅️ Bài trước🏠 Mục lục khóa họcBài kế tiếp ➡️
NAT: Central NAT, Virtual IP (VIP), Port Forwarding, VIP Hairpin NAT Mục lục khóa học FortiGate IPv6 cơ bản trên FortiGate: Interface, Policy, Routing