109.4 Bài 1
Chứng chỉ: |
LPIC-1 |
---|---|
Phiên bản: |
5.0 |
Chủ đề: |
109 Những yếu tố cơ bản về Mạng |
Mục tiêu: |
109.4 Định cấu hình DNS phía Máy Khách |
Bài: |
1 trên 1 |
Giới thiệu
Bài học này sẽ thảo luận về việc định cấu hình phân giải tên miền phía máy khách và cách sử dụng một số công cụ phân giải tên miền giao diện dòng lệnh CLI.
Để ghi nhớ và duy trì địa chỉ IP, UID và GID cũng như các chỉ số khác cho tất cả mọi thứ không phải là một việc khả thi. Các dịch vụ phân giải tên miền sẽ dịch các tên miền dễ nhớ sang thành số và ngược lại. Bài học này sẽ tập trung vào việc phân giải tên miền máy chủ, nhưng một tiến trình tương tự cũng sẽ xảy ra với tên miền người dùng, nhóm, số cổng và các tên khác.
Tiến trình phân giải Tên miền
Các chương trình phân giải tên miền thành số hầu như luôn sử dụng các hàm được cung cấp bởi thư viện C tiêu chuẩn. Nó cũng chính là glibc của dự án GNU trên hệ thống Linux. Điều đầu tiên các hàm này sẽ làm là đọc tệp /etc/nsswitch.conf
để biết hướng dẫn về cách phân giải loại tên miền đó. Bài học này sẽ tập trung vào việc phân giải tên máy chủ, nhưng một tiến trình tương tự cũng sẽ được áp dụng cho các kiểu phân giải tên miền khác. Sau khi tiến trình đọc /etc/nsswitch.conf
, hàm sẽ tra cứu tên miền theo cách được chỉ định. Vì /etc/nsswitch.conf
có hỗ trợ các tiện ích bổ sung nên ở bước tiếp theo chúng ta có thể thực hiện bất kỳ một tác vụ nào. Sau khi hàm tra cứu tên miền hoặc số xong, nó sẽ trả kết quả cho tiến trình gọi.
Các Hạng DNS
DNS có ba hạng bản ghi là IN, HS và CH. Trong bài học này, tất cả các truy vấn DNS sẽ thuộc loại IN. Hạng IN được dành cho các địa chỉ internet sử dụng chồng TCP/IP. CH được dành cho ChaosNet - một công nghệ mạng đã tồn tại trong một khoảng thời gian ngắn và không còn được sử dụng nữa. Hạng HS dành cho Hesiod. Hesiod là một cách để lưu trữ những thứ như mật khẩu và các mục nhập nhóm trong DNS. Hesiod nằm ngoài phạm vi của bài học này.
Hiểu về /etc/nsswitch.conf
Cách tốt nhất để tìm hiểu về tệp này là đọc trang hướng dẫn (cũng chính là một phần của dự án trang hướng dẫn Linux). Nó có sẵn trên hầu hết các hệ thống và có thể được truy cập bằng lệnh man nsswitch.conf
. Ngoài ra, nó cũng có thể được tìm thấy tại https://man7.org/linux/man-pages/dir_section_5.html
Dưới đây là một ví dụ đơn giản về /etc/nsswitch.conf
từ trang hướng dẫn của nó:
passwd: compat group: compat shadow: compat hosts: dns [!UNAVAIL=return] files networks: nis [NOTFOUND=return] files ethers: nis [NOTFOUND=return] files protocols: nis [NOTFOUND=return] files rpc: nis [NOTFOUND=return] files services: nis [NOTFOUND=return] files # This is a comment. It is ignored by the resolution functions.
Tệp đã được tổ chức thành các cột. Cột ngoài cùng bên trái là loại của cơ sở dữ liệu tên miền. Các cột còn lại là các phương thức mà hàm phân giải nên sử dụng để tra cứu tên miền. Tiếp theo sau các phương thức là các hàm từ trái sang phải. Các cột có ký hiệu []
sẽ được sử dụng để cung cấp một số logic có điều kiện hạn chế cho cột nằm ở bên trái nó.
Giả sử một tiến trình đang cố gắng phân giải tên máy chủ learning.lpi.org
. Nó sẽ thực hiện một lệnh gọi thư viện C thích hợp (rất có thể là gethostbyname
). Hàm này sau đó sẽ đọc /etc/nsswitch.conf
. Vì tiến trình đang tra cứu một tên máy chủ nên nó sẽ tìm dòng được bắt đầu bằng hosts
. Sau đó, nó sẽ cố gắng sử dụng DNS để phân giải tên miền. Cột [!UNAVAIL=return]
tiếp theo có nghĩa là nếu dịch vụ không phải là không khả dụng thì đừng thử nguồn tiếp theo - tức là nếu DNS khả dụng, hãy ngừng cố gắng phân giải tên máy chủ ngay cả khi máy chủ định danh không thể làm được. Nếu DNS không khả dụng thì hãy tiếp tục với nguồn tiếp theo. Trong trường hợp này, nguồn tiếp theo sẽ là file
.
Khi một cột ở định dạng [result=action]
thì có nghĩa là khi việc tra cứu trình phân giải được thực hiện ở cột bên trái của cột điều kiện logic là result
thì action
sẽ được thực hiện. Nếu trước result
có !
thì có nghĩa là nếu kết quả không phải là result
, hãy thực hiện action
. Để biết mô tả về các kết quả và hành động có thể xảy ra, hãy xem trang hướng dẫn.
Bây giờ, giả sử một tiến trình đang cố gắng phân giải một số (của) cổng thành tên miền dịch vụ, nó sẽ đọc dòng services
. Nguồn đầu tiên được liệt kê sẽ là NIS. NIS là viết tắt của Network Information Service (Dịch vụ Thông tin Mạng; đôi khi nó được gọi là các trang vàng - yellow pages). Đây là một dịch vụ cũ cho phép quản lý tập trung nhiều thứ (ví dụ như người dùng). Nó hiếm khi còn được sử dụng do tính bảo mật kém. Cột [NOTFOUND=return]
tiếp theo có nghĩa là nếu tra cứu thành công nhưng không tìm thấy dịch vụ thì hãy dừng tìm kiếm. Nếu điều kiện nói trên không áp dụng được, hãy sử dụng các tệp cục bộ.
Bất cứ điều gì ở bên phải ký hiệu #
đều là một chú thích và sẽ bị bỏ qua.
Tệp /etc/resolv.conf
Tệp /etc/resolv.conf
được sử dụng để định cấu hình việc phân giải máy chủ qua DNS. Một số bản phân phối sẽ có tệp lệnh khởi động, trình nền và các công cụ khác ghi vào tệp này. Hãy ghi nhớ điều này khi chỉnh sửa thủ công tệp này và kiểm tra bản phân phối của mình và mọi tài liệu về công cụ cấu hình mạng nếu cần chỉnh sửa thủ công. Một số công cụ như NetworkManager sẽ để lại một chú thích trong tệp để cho người dùng biết rằng các thay đổi thủ công sẽ bị ghi đè.
Đối với /etc/nsswitch.conf
, có một trang hướng dẫn được liên kết với tệp. Nó có thể được truy cập bằng lệnh man resolv.conf
hoặc tại https://man7.org/linux/man-pages/man5/resolv.conf.5.html.
Định dạng của tệp cũng khá dễ hiểu. Ở cột ngoài cùng bên trái, chúng ta có tùy chọn name
. Các cột còn lại trên cùng một dòng là giá trị của tùy chọn.
Tùy chọn phổ biến nhất là tùy chọn nameserver
. Nó được sử dụng để chỉ định địa chỉ IPv4 hoặc IPv6 của máy chủ DNS. Tính đến ngày cuốn sách này được viết, chúng ta có thể chỉ định tối đa ba máy chủ tên miền. Nếu /etc/resolv.conf
không có tùy chọn nameserver
, hệ thống của người dùng theo mặc định sẽ sử dụng máy chủ tên miền trên máy cục bộ.
Dưới đây là một tệp ví dụ đơn giản đại diện cho các cấu hình phổ biến:
search lpi.org nameserver 10.0.0.53 nameserver fd00:ffff::2:53
Tùy chọn search
được sử dụng để cho phép người dùng tìm kiếm dạng ngắn. Trong ví dụ này, một miền tìm kiếm lpi.org
đã được định cấu hình. Điều này có nghĩa là mọi nỗ lực phân giải tên máy chủ mà không có phần tên miền sẽ được thêm .lpi.org
vào trước cụm tìm kiếm. Ví dụ: nếu ta cố gắng tìm kiếm máy chủ có tên learning
, trình phân giải sẽ tìm kiếm learning.lpi.org
. Chúng ta có thể cấu hình tối đa sáu miền tìm kiếm.
Một tùy chọn phổ biến khác là tùy chọn domain
. Tuỳ chọn này được sử dụng để đặt tên miền cục bộ của người dùng. Nếu bị thiếu, tùy chọn này sẽ mặc định là mọi thứ đứng sau ký tự .
đầu tiên trong tên máy chủ của máy. Nếu tên máy chủ không có chứa .
thì nó sẽ giả định rằng máy là một phần của miền gốc. Giống như search
, domain
cũng có thể được sử dụng để tìm kiếm các tên miền ngắn.
Hãy nhớ rằng domian
và search
sẽ loại trừ lẫn nhau. Nếu cả hai đều có mặt, cái xuất hiện cuối cùng trong tệp sẽ được sử dụng.
Có một số tùy chọn có thể được đặt để can thiệp vào hoạt động của trình phân giải. Để đặt những tùy chọn này, hãy sử dụng từ khóa options
, theo sau là tên của tùy chọn cần đặt và nếu có thể, hãy thêm giá trị vào sau :
. Dưới đây là một ví dụ về cách đặt tùy chọn thời gian chờ - tức khoảng thời gian tính bằng giây mà trình phân giải sẽ đợi một máy chủ tên miền trước khi ngừng lại:
option timeout:3
resolv.conf
cũng có các tuỳ chọn khác nữa, nhưng trên đây là những tùy chọn phổ biến nhất.
Tệp /etc/hosts
Tệp /etc/hosts
được sử dụng để phân giải tên thành địa chỉ IP và ngược lại. Cả IPv4 và IPv6 đều được hỗ trợ. Cột bên trái là địa chỉ IP, còn lại là các tên miền gắn liền với địa chỉ đó. Cách sử dụng phổ biến nhất cho /etc/hosts
là dành cho các máy chủ và địa chỉ không thể sử dụng DNS (chẳng hạn như các địa chỉ lặp vòng). Trong ví dụ bên dưới, địa chỉ IP của các thành phần cơ sở hạ tầng quan trọng đã được xác định.
Sau đây là một ví dụ thực tế về tệp /etc/hosts
:
127.0.0.1 localhost 127.0.1.1 proxy ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 10.0.0.1 gateway.lpi.org gateway gw fd00:ffff::1 gateway.lpi.org gateway gw 10.0.1.53 dns1.lpi.org fd00:ffff::1:53 dns1.lpi.org 10.0.2.53 dns2.lpi.org fd00:ffff::2:53 dns2.lpi.org
systemd-resolved
Systemd cung cấp một dịch vụ có tên là systemd-resolved
. Nó sẽ cung cấp mDNS, DNS và LLMNR. Khi chạy, nó sẽ lắng nghe các yêu cầu DNS trên 127.0.0.53
. Nó không cung cấp một máy chủ DNS chính thức. Mọi yêu cầu DNS mà nó nhận được đều sẽ được tra cứu bằng cách truy vấn các máy chủ được định cấu hình trong /etc/systemd/resolv.conf
hoặc /etc/resolv.conf
. Nếu muốn sử dụng dịch vụ này, hãy sử dụng resolve
cho hosts
trong /etc/nsswitch.conf
. Hãy nhớ rằng gói Hệ điều hành sở hữu thư viện systemd-resolved
có thể sẽ không được cài đặt theo mặc định.
Công cụ phân giải Tên miền
Có nhiều công cụ có sẵn dành cho người dùng Linux dùng để phân giải tên. Bài học này sẽ đề cập tới ba công cụ: getent
(rất hữu ích trong việc xem xét các yêu cầu trong thế giới thực sẽ được phân giải như thế nào), host
(rất hữu ích cho các truy vấn DNS đơn giản) và dig
(rất hữu ích cho các hoạt động DNS phức tạp có thể hỗ trợ khắc phục sự cố máy chủ DNS).
Lệnh getent
Tiện ích getent
được sử dụng để hiển thị các mục từ cơ sở dữ liệu dịch vụ tên miền. Nó có thể truy xuất các bản ghi từ bất kỳ một nguồn nào có thể định cấu hình bằng /etc/nsswitch.conf
.
Để sử dụng getent
, chúng ta chỉ cần thêm loại tên miền cần phân giải sau nó và một mục nhập cụ thể tuỳ chọn để tra cứu. Nếu chỉ được chỉ định loại tên miền, getent
sẽ cố gắng hiển thị tất cả các mục của loại dữ liệu đó:
$ getent hosts 127.0.0.1 localhost 127.0.1.1 proxy 10.0.1.53 dns1.lpi.org 10.0.2.53 dns2.lpi.org 127.0.0.1 localhost ip6-localhost ip6-loopback $ getent hosts dns1.lpi.org fd00:ffff::1:53 dns1.lpi.org
Bắt đầu với glibc phiên bản 2.2.5, chúng ta có thể buộc getent
sử dụng một nguồn dữ liệu cụ thể bằng tùy chọn -s
. Ví dụ dưới đây sẽ chứng minh điều này:
$ getent -s files hosts learning.lpi.org ::1 learning.lpi.org $ getent -s dns hosts learning.lpi.org 208.94.166.198 learning.lpi.org
Lệnh host
host
là một chương trình đơn giản để tra cứu các mục DNS. Nếu không có tùy chọn nào và host
được cung cấp một tên miền, nó sẽ trả về các bộ bản ghi A, AAAA và MX. Nếu được cung cấp địa chỉ IPv4 hoặc IPv6, nó sẽ xuất ra bản ghi PTR nếu có sẵn:
$ host wikipedia.org wikipedia.org has address 208.80.154.224 wikipedia.org has IPv6 address 2620:0:861:ed1a::1 wikipedia.org mail is handled by 10 mx1001.wikimedia.org. wikipedia.org mail is handled by 50 mx2001.wikimedia.org. $ host 208.80.154.224 224.154.80.208.in-addr.arpa domain name pointer text-lb.eqiad.wikimedia.org.
Nếu cần tìm kiếm một loại bản ghi cụ thể, chúng ta có thể sử dụng host -t
:
$ host -t NS lpi.org lpi.org name server dns1.easydns.com. lpi.org name server dns3.easydns.ca. lpi.org name server dns2.easydns.net. $ host -t SOA lpi.org lpi.org has SOA record dns1.easydns.com. zone.easydns.com. 1593109612 3600 600 1209600 300
host
cũng có thể được sử dụng để truy vấn một máy chủ định danh cụ thể nếu chúng ta không muốn sử dụng các máy chủ đó trong /etc/resolv.conf
. Ta chỉ cần thêm địa chỉ IP hoặc tên máy chủ của máy chủ cần sử dụng làm đối số cuối cùng:
$ host -t MX lpi.org dns1.easydns.com Using domain server: Name: dns1.easydns.com Address: 64.68.192.10#53 Aliases: lpi.org mail is handled by 10 aspmx4.googlemail.com. lpi.org mail is handled by 10 aspmx2.googlemail.com. lpi.org mail is handled by 5 alt1.aspmx.l.google.com. lpi.org mail is handled by 0 aspmx.l.google.com. lpi.org mail is handled by 10 aspmx5.googlemail.com. lpi.org mail is handled by 10 aspmx3.googlemail.com. lpi.org mail is handled by 5 alt2.aspmx.l.google.com.
Lệnh dig
Một công cụ khác để truy vấn máy chủ DNS là dig
. Lệnh này chi tiết hơn rất nhiều so với host
. Theo mặc định, dig
sẽ truy vấn cho bản ghi A. Dù chỉ đơn giản là tra cứu một địa chỉ IP hoặc tên máy chủ nhưng nó vẫn sẽ khá dài dòng. dig
cũng có thể được sử dụng để tra cứu đơn giản, nhưng nó sẽ phù hợp hơn trong việc khắc phục sự cố cấu hình máy chủ DNS:
$ dig learning.lpi.org ; <<>> DiG 9.11.5-P4-5.1+deb10u1-Debian <<>> learning.lpi.org ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63004 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 5 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: ca7a415be1cec45592b082665ef87f3483b81ddd61063c30 (good) ;; QUESTION SECTION: ;learning.lpi.org. IN A ;; ANSWER SECTION: learning.lpi.org. 600 IN A 208.94.166.198 ;; AUTHORITY SECTION: lpi.org. 86400 IN NS dns2.easydns.net. lpi.org. 86400 IN NS dns1.easydns.com. lpi.org. 86400 IN NS dns3.easydns.ca. ;; ADDITIONAL SECTION: dns1.easydns.com. 172682 IN A 64.68.192.10 dns2.easydns.net. 170226 IN A 198.41.222.254 dns1.easydns.com. 172682 IN AAAA 2400:cb00:2049:1::a29f:1835 dns2.easydns.net. 170226 IN AAAA 2400:cb00:2049:1::c629:defe ;; Query time: 135 msec ;; SERVER: 192.168.1.20#53(192.168.1.20) ;; WHEN: Sun Jun 28 07:29:56 EDT 2020 ;; MSG SIZE rcvd: 266
Như có thể thấy, dig
cung cấp rất nhiều thông tin với đầu ra được phân chia thành các phần. Phần đầu tiên sẽ hiển thị thông tin về phiên bản dig
được cài đặt và truy vấn đã gửi cùng với bất kỳ một tùy chọn nào được sử dụng cho lệnh. Tiếp theo, nó sẽ hiển thị thông tin về truy vấn và phản hồi.
Phần tiếp theo sẽ hiển thị thông tin về các phần mở rộng EDNS được sử dụng và truy vấn. Trong ví dụ này, phần mở rộng cookie sẽ được sử dụng. dig
đang tìm bản ghi A cho learning.lpi.org
.
Phần tiếp theo sẽ hiển thị kết quả của truy vấn. Số ở cột thứ hai chính là TTL của tài nguyên được tính bằng giây.
Phần còn lại của đầu ra sẽ cung cấp thông tin về các máy chủ tên miền của miền bao gồm các bản ghi NS cho máy chủ cùng với các bản ghi A và AAAA của các máy chủ trong bản ghi NS của miền.
Giống như host
, chúng ta cũng có thể chỉ định loại bản ghi bằng tùy chọn -t
:
$ dig -t SOA lpi.org ; <<>> DiG 9.11.5-P4-5.1+deb10u1-Debian <<>> -t SOA lpi.org ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16695 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 6 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: 185c67140a63baf46c4493215ef8906f7bfbe15bdca3b01a (good) ;; QUESTION SECTION: ;lpi.org. IN SOA ;; ANSWER SECTION: lpi.org. 600 IN SOA dns1.easydns.com. zone.easydns.com. 1593109612 3600 600 1209600 300 ;; AUTHORITY SECTION: lpi.org. 81989 IN NS dns1.easydns.com. lpi.org. 81989 IN NS dns2.easydns.net. lpi.org. 81989 IN NS dns3.easydns.ca. ;; ADDITIONAL SECTION: dns1.easydns.com. 168271 IN A 64.68.192.10 dns2.easydns.net. 165815 IN A 198.41.222.254 dns3.easydns.ca. 107 IN A 64.68.196.10 dns1.easydns.com. 168271 IN AAAA 2400:cb00:2049:1::a29f:1835 dns2.easydns.net. 165815 IN AAAA 2400:cb00:2049:1::c629:defe ;; Query time: 94 msec ;; SERVER: 192.168.1.20#53(192.168.1.20) ;; WHEN: Sun Jun 28 08:43:27 EDT 2020 ;; MSG SIZE rcvd: 298
Dig có nhiều tùy chọn để tinh chỉnh cả đầu ra và truy vấn gửi đến máy chủ. Các tùy chọn này được bắt đầu bằng +
. Một trong số đó là tùy chọn short
sẽ chặn tất cả các đầu ra ngoại trừ kết quả:
$ dig +short lpi.org 65.39.134.165 $ dig +short -t SOA lpi.org dns1.easydns.com. zone.easydns.com. 1593109612 3600 600 1209600 300
Dưới đây là một ví dụ về việc tắt tiện ích mở rộng EDNS của cookie:
$ dig +nocookie -t MX lpi.org ; <<>> DiG 9.11.5-P4-5.1+deb10u1-Debian <<>> +nocookie -t MX lpi.org ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47774 ;; flags: qr rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 3, ADDITIONAL: 5 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;lpi.org. IN MX ;; ANSWER SECTION: lpi.org. 468 IN MX 0 aspmx.l.google.com. lpi.org. 468 IN MX 10 aspmx4.googlemail.com. lpi.org. 468 IN MX 10 aspmx5.googlemail.com. lpi.org. 468 IN MX 10 aspmx2.googlemail.com. lpi.org. 468 IN MX 10 aspmx3.googlemail.com. lpi.org. 468 IN MX 5 alt2.aspmx.l.google.com. lpi.org. 468 IN MX 5 alt1.aspmx.l.google.com. ;; AUTHORITY SECTION: lpi.org. 77130 IN NS dns2.easydns.net. lpi.org. 77130 IN NS dns3.easydns.ca. lpi.org. 77130 IN NS dns1.easydns.com. ;; ADDITIONAL SECTION: dns1.easydns.com. 76140 IN A 64.68.192.10 dns2.easydns.net. 73684 IN A 198.41.222.254 dns1.easydns.com. 76140 IN AAAA 2400:cb00:2049:1::a29f:1835 dns2.easydns.net. 73684 IN AAAA 2400:cb00:2049:1::c629:defe ;; Query time: 2 msec ;; SERVER: 192.168.1.20#53(192.168.1.20) ;; WHEN: Mon Jun 29 10:18:58 EDT 2020 ;; MSG SIZE rcvd: 389
Bài tập Hướng dẫn
-
Lệnh dưới đây sẽ thực hiện tác vụ gì?
getent group openldap
-
Sự khác biệt lớn nhất giữa
getent
và các công cụhost
vàdig
là gì? -
Tùy chọn nào cho
dig
vàhost
được sử dụng để chỉ định loại bản ghi bạn muốn truy xuất? -
Lựa chọn nào sau đây là một mục nhập
/etc/hosts
thích hợp?::1 localhost
localhost 127.0.0.1
-
Tùy chọn nào cho
getent
được sử dụng để chỉ định nguồn dữ liệu nào sẽ được sử dụng để thực hiện tra cứu?
Bài tập Mở rộng
-
Nếu muốn chỉnh sửa
/etc/resolv.conf
bên dưới bằng một trình soạn thảo văn bản, điều gì có thể xảy ra?# Generated by NetworkManager nameserver 192.168.1.20
Những thay đổi sẽ được ghi đè bởi NetworkManager.
NetworkManager sẽ cập nhật cấu hình của nó với những thay đổi của bạn.
Những thay đổi của bạn sẽ không ảnh hưởng đến hệ thống.
Trình quản lý mạng sẽ bị vô hiệu hóa.
-
Dòng sau trong
/etc/nsswitch.conf
có nghĩa là gì:hosts: files [SUCCESS=continue] dns
-
Hãy xem
/etc/resolv.conf
sau đây: tại sao hệ thống không phân giải tên thông qua DNS?search lpi.org #nameserver fd00:ffff::1:53 #nameserver 10.0.1.53
-
Lệnh
dig +noall +answer +question lpi.org
sẽ thực hiện tác vụ gì? -
Làm cách nào để có thể ghi đè các giá trị mặc định của
dig
mà không chỉ định chúng trên dòng lệnh?
Tóm tắt
Lệnh getent
là một công cụ tuyệt vời để xem kết quả của các lệnh gọi trình phân giải. Đối với các truy vấn DNS đơn giản, host
rất dễ sử dụng và sẽ cho ra các kết quả đơn giản. Nếu cần thông tin chi tiết hoặc cần tinh chỉnh truy vấn DNS, dig
chính là lựa chọn tốt nhất.
Do khả năng thêm các phần bổ trợ thư viện chia sẻ và định cấu hình hành vi của trình phân giải, Linux có sự hỗ trợ tuyệt vời dành cho việc phân giải tên miền và số thuộc nhiều loại khác nhau. Chương trình getent
có thể được sử dụng để phân giải tên miền bằng thư viện trình phân giải. host
và dig
có thể được sử dụng để truy vấn máy chủ DNS.
Tệp /etc/nsswitch.conf
được sử dụng để định cấu hình hành vi của trình phân giải. Chúng ta có thể thay đổi nguồn dữ liệu và thêm một số logic điều kiện đơn giản cho các loại tên miền có nhiều nguồn.
DNS được cấu hình bằng cách chỉnh sửa /etc/resolv.conf
. Rất nhiều bản phân phối có các công cụ quản lý tệp này nên hãy đảm bảo việc kiểm tra tài liệu hệ thống nếu các thay đổi thủ công không được duy trì.
Tệp /etc/hosts
được sử dụng để phân giải tên máy chủ thành IP và ngược lại. Nó thường được sử dụng để xác định các tên miền (chẳng hạn như localhost
) không có sẵn thông qua DNS.
Chúng ta có thể để lại chú thích trong các tệp cấu hình được đề cập trong bài học này. Bất kỳ một văn bản nào nằm ở bên phải ký tự #
đều sẽ bị hệ thống bỏ qua.
Đáp án Bài tập Hướng dẫn
-
Lệnh dưới đây sẽ thực hiện tác vụ gì?
getent group openldap
Nó sẽ đọc
/etc/nsswitch.conf
, tra cứu nhómopenldap
từ các nguồn được liệt kê và hiển thị thông tin về nhóm nếu tìm thấy. -
Sự khác biệt lớn nhất giữa
getent
và các công cụhost
vàdig
là gì?getent
sẽ tra cứu tên miền bằng thư viện trình phân giải, các công cụ còn lại sẽ chỉ truy vấn DNS.getent
có thể được sử dụng để khắc phục sự cố/etc/nsswitch.conf
và cấu hình thư viện phân giải tên miền mà hệ thống được định cấu hình để sử dụng.host
vàdig
được sử dụng để tra cứu bản ghi DNS. -
Tùy chọn nào cho
dig
vàhost
được sử dụng để chỉ định loại bản ghi bạn muốn truy xuất?Cả hai chương trình đều sử dụng
-t
để chỉ định loại bản ghi cần tra cứu. -
Lựa chọn nào sau đây là một mục nhập
/etc/hosts
thích hợp?::1 localhost
X
localhost 127.0.0.1
::1 localhost
là dòng đúng. Cột bên trái luôn là địa chỉ IPv4 hoặc IPv6. -
Tùy chọn nào cho
getent
được sử dụng để chỉ định nguồn dữ liệu nào sẽ được sử dụng để thực hiện tra cứu?Tùy chọn
-s
được sử dụng để chỉ định nguồn dữ liệu. Ví dụ:$ getent -s files hosts learning.lpi.org 192.168.10.25 learning.lpi.org $ getent -s dns hosts learning.lpi.org 208.94.166.198 learning.lpi.org
Đáp án Bài tập Mở rộng
-
Nếu muốn chỉnh sửa
/etc/resolv.conf
bên dưới bằng một trình soạn thảo văn bản, điều gì có thể xảy ra?# Generated by NetworkManager nameserver 192.168.1.20
Những thay đổi sẽ được ghi đè bởi NetworkManager.
X
NetworkManager sẽ cập nhật cấu hình của nó với những thay đổi của bạn.
Những thay đổi của bạn sẽ không ảnh hưởng đến hệ thống.
Trình quản lý mạng sẽ bị vô hiệu hóa.
-
Dòng sau trong
/etc/nsswitch.conf
có nghĩa là gì:hosts: files [SUCCESS=continue] dns
Việc tra cứu tên máy chủ sẽ kiểm tra các tệp
/etc/hosts
của bạn trước rồi đến DNS. Nếu tìm thấy một mục nhập trong tệp và DNS, mục nhập đó trong DNS sẽ được sử dụng. -
Hãy xem
/etc/resolv.conf
sau đây: tại sao hệ thống không phân giải tên miền thông qua DNS?search lpi.org #nameserver fd00:ffff::1:53 #nameserver 10.0.1.53
Cả hai máy chủ DNS đều được chú thích và không có máy chủ DNS nào đang chạy trên máy chủ cục bộ.
-
Lệnh
dig +noall +answer +question lpi.org
sẽ thực hiện tác vụ gì?Nó tra cứu bản ghi A cho
lpi.org
và chỉ hiển thị truy vấn và phản hồi. -
Làm cách nào để có thể ghi đè các giá trị mặc định của
dig
mà không chỉ định chúng trên dòng lệnh?Hãy tạo một tệp
.digrc
trong thư mục chính của mình.