Các dịch vụ dns trên linux

Cấu hình DNS client trên Linux

Chúng ta biết là vai trò của DNS quan trọng trong việc phân giải tên miền tương ứng địa chỉ ip máy chủ để truy cập đến. Nên trong hệ thống máy chủ Linux có 3 file cần lưu ý khi cấu hình DNS services ở mức người dùng (client). Đó là :
/etc/hosts
/etc/resolv.conf
/etc/nsswitch.conf

1> File /etc/hosts
File hosts về cơ bản đơn giản chỉ là chứa dữ liệu về domain name ở mức local name Database do chính chúng ta quy định hoặc được quy định mặc định. Thông thường thì với tất cả hệ thống thì máy tính hoạt động luôn kiểm tra file hosts trước để xem domain mình cần tìm có được quy định địa chỉ IP nào không ? Không có thì sẽ query hỏi DNS Nameserver được quy định trong file /etc/resolv.conf .
Cấu hình của /etc/hosts :

# vi /etc/hosts
127.0.0.1 localhost localhost.domain
192.168.1.1 cuongquach.com cuongquach
192.168.1.2 linux.cuong.quach.com linux

Như vậy khi DNS client truy vấn tìm địa chỉ IP của domain cuongquach.com , sẽ thấy trong file /etc/hosts có thông tin tương ứng là 192.168.1.1 nên trả về kết quả cho người sử dụng.

2> File /etc/resolv.conf
DNS client sử dụng một chương trình thư viện động có tên là “resolver” để xác định máy chủ remote có ip nào bằng cách gửi query hỏi các DNS database ở các Name Server mà chúng ta quy định trong file /etc/resolv.conf . Như vậy file /etc/resolv.conf dùng để cấu hình các danh sách DNS Name Server máy chủ và ta sẽ cấu hình như sau :

# vi /etc/resolv.conf
search domain.com
; DNS NameServer Google
nameserver 8.8.8.8
nameserver 8.8.4.4
; DNS NameServer OpenDNS
nameserver 208.67.222.222
nameserver 208.67.220.220

Danh sách các nameserver sẽ hoạt động theo thứ tự từ trên xuống khi query thất bại ở DNS Nameserver cụ thể nào đó.
(Mình sẽ cập nhật phần ý nghĩa của “search” sau)

3> File /etc/nsswitch.conf
File /etc/nsswitch.conf khi cấu hình cho hoạt động DNS client sẽ được sử dụng để xác định thứ tự hoạt động giữa resolver hoặc /etc/hosts. Bên cạnh đó còn được sử dụng cho hoạt động NIS nhưng mình sẽ không bàn ở đây. Cấu hình:

# vi /etc/nsswitch.conf
hosts: dns files

hoặc

hosts: files dns

Với phần cấu hình (1) ở trên thì, client sẽ ưu tiên đi hỏi DNS Nameserver trước dù cho file host đã cấu hình về domain name tương ứng, tức file /etc/hosts sẽ được hỏi khi mà query DNS Nameserver thất bại. Chúng ta sẽ có thể thử nghiệm với việc thêm domain name vào file hosts rồi ping thử xem nó sẽ ra ip nào trước nếu domain name đó có tồn tại trỏ về ip cụ thể trên Internet sau. Cấu hình (2) thì đảo ngược vị trí thứ tự thôi.

Mình đã hoàn thành bài hướng dẫn cấu hình DNS client.

Chúc các bạn thành công.

   

Mình sẽ chia sẻ kiến thức cơ bản về quá trình cài đặt cũng như cấu hình dịch vụ DNS Server trên Linux, cụ thể mình sử dụng hệ điều hành CentOS 6.7.

1. Quá trình cài đặt.

   

Để cài đặt dịch vụ DNS chúng ta sử dụng package BIND. Có nhiều cách để cài đặt, ở đây mình sử dụng YUM để cài đặt trực tiếp trên Internet, cũng có thể cài đặt offline nếu có package.

Xong quá trình cài đặt, rất nhanh phải không.:)

2. Cấu hình DNS.

Để cấu hình được dịch vụ, trước tiên tìm hiểu sơ qua về dịch vụ cũng như các file cấu hình.

- Dịch vụ DNS là dịch vụ phân giải tên miền, hiểu nôm na là quá trình ánh xạ tên miền tới 1 hoặc nhiều địa chỉ IP và ngược lại.

- Các file cấu hình căn bản: (Mình chỉ đi vào quá trình cấu hình đơn giản, giúp mọi người có cái nhìn cơ bản đầu tiên)

+ /etc/named.conf : Tại đây mình chỉ quan tâm tới 2 dòng

listen-on port 53 { 192.168.1.0/24; };

Dòng đầu, thay địa chỉ IP của máy, dải mạng muốn nhận DNS Server. Ở đây mình chọn dải mạng 192.168.1.0

Dòng thứ hai, mình chọn mọi máy, có thể chỉ một máy cũng được.

+ /etc/named.rfc1912.zones: Tại đây, mình sẽ cấu hình các zone cần ánh xạ, có zone thuận và zone nghịch.

Các dịch vụ dns trên linux

Tạo zone thuận:

            - Thay loveyou.com thành domain của bạn

            - loveyou.thuan là tên file khi bạn tạo file zone thuận

Tạo zone nghịch:

            - Thay 1.168.192  thành địa chỉ IP của bạn nhưng viết ngược lại (của mình là 192.168.1.44 ngược lại là 1.168.192 bỏ 44 đi)

            - loveyou.nghich là tên file khi bạn tạo file zone nghịch.

Tiếp theo bạn cd vào thưc mục /var/namedđể tạo 2 file zone thuận và zone nghịch với tên như đã cấu hình ở bên trên, ở đây mình tạo 2 file loveyou.thuanloveyou.nghich. Theo mình để khỏi bị lỗi trong quá trình tạo file thì không nên tạo file mới, mà copy từ file mẫu sẵn, vì bất cứ dịch vụ gì đều có file cấu hình mẫu. Và file cấu hình mẫu cũng ở luôn thư mục này.

Khái niệm SOA, A, NS, CNAME, PTR, MX
* SOA (Start of Authority)

- SOA chỉ ra rằng máy chủ Name Server là nơi cung cấp thông tin tin cậy từ dữ liệu có trong zone. Cú pháp của record SOA:

[tên-miền] IN SOA [tên-server-dns] [địa-chỉ-email] (
serial number;

refresh number;
retry number;
experi number;
Time-to-live number)


- Serial : Áp dụng cho mọi dữ liệu trong zone và là 1 số nguyên. Ở đây họ sử dụng đinh dạng YYYYMMDDNN, trong đó YYYY là năm, MM là tháng, DD là ngày, NN số lần sửa đổi dữ liệu zone trong ngày. Vd: 2014032901
- Refresh: Chỉ ra khoảng thời gian máy chủ Secondary kiểm tra dữ liệu zone trên máy Primary để cập nhật nếu cần
- Retry: nếu máy chủ Secondary không kết nối được với máy chủ Primary theo thời hạn mô tả trong refresh
- Expire: Nếu sau khoảng thời gian này mà máy chủ Secondary không kết nối được với máy chủ Primary thì dữ liệu zone trên máy Secondary sẽ bị quá hạn
- TTL: Viết tắt của time to live. Giá trị này áp dụng cho mọi record trong zone và được đính kèm trong thông tin trả lời một truy vấn. Mục đích của nó là chỉ ra thời gian mà các máy chủ name server khác cache lại thông tin trả lời

* NS (Name Server)
- Khai báo máy chủ tên miền cho một tên miền. Cho biết các thông tin về tên miền này được khai báo trên máy chủ nào. Mỗi name server cho zone sẽ có một NS record. Cú pháp khai báo:


[tên-domain] IN NS [DNS-Server_name]
vVd: loveyou.com. IN NS ketban.loveyou.com.

Với ví dụ trên, tên miền loveyou.com sẽ do máy chủ tên miền ketban.loveyou.com quản lý.


* A (Address) và CNAME (Canonical Name)
- Record A (Address) ánh xạ tên máy(hostname) vào địa chỉ IP. Record CNAME (canonical name) tạo tên bí danh alias trỏ vào một tên canonical. Tên canonical là tên host trong record A hoặc lại trỏ vào 1 tên canonical khác.
Cú pháp record A:
[tên-máy-tính] IN A [địa-chỉ-IP]


* PTR (Pointer)
- Record PTR (pointer) dùng để ánh xạ địa chỉ IP thành hostname. Cú pháp khai báo:
[địa-chỉ-IP] IN PTR [tên-máy-tính]
VD: 44 IN PTR loveyou.com.

* MX (Mail Exchanger)

- Khai báo trạm chuyển tiếp thư điện tử của tên miền.

VD: loveyou.com        IN        MX      10        mail.loveyou.com

Mọi thư điện tử có cấu trúc đều chuyển tới trạm chuyển tiếp thư mail.loveyou.com

+ /var/named/loveyou.thuan: Cấu hình file zone thuận:

Thay loveyou.com thành domain của bạn.

Thay địa chỉ ip thành địa chỉ của bạn.

+ /vaf/named/loveyou.nghich: Cấu hình file zone nghịch:

Thay loveyou.com thành domain của bạn.

Thay 44 thành octet cuối cùng trong địa chỉ ip của bạn.

Sau khi edit xong thì thay quyền sở hữu.

Start dịch vụ:

Test dịch vụ.

Thử trên máy luôn. Chỉnh sửa file /etc/resolv.conf

Và test.

Hoặc bạn cũng có thể test dịch vụ từ máy client, và nhớ đặt DNS server trỏ tới DNS server cùng dải mạng.