Làm cách nào để biết tôi đang sử dụng DNS nào trong Ubuntu từ 14.04 trở đi


14

(Theo dõi câu hỏi tương tự cho 12.04 .)

Trước Ubuntu 12.04, bạn có thể thấy DNS hoạt động /etc/resolv.conf. Trong Ubuntu 12.04, NetworkManager không còn hoạt động với tệp. Bạn phải trực tiếp tham khảo công cụ dòng lệnh nm-tool.

Thật thú vị, nm-toolkhông còn được cài đặt theo mặc định trong 14.04 trở lên. Mặc dù bạn vẫn có thể cài đặt thông qua apt-get install, nhưng bạn không thể giả sử tất cả Ubuntu sẽ có được điều đó.

Vì vậy, câu hỏi vẫn còn. Làm thế nào để bạn biết, theo cài đặt mặc định, DNS bạn đang sử dụng bằng dòng lệnh?

Câu trả lời:


30

Câu trả lời nhanh

Một công cụ NetworkManager mới nmcliđược cài đặt theo mặc định ngay bây giờ. Công cụ dòng lệnh rất mạnh nhưng khó học hơn một chút. Bám sát câu hỏi của chúng tôi, câu trả lời ngắn gọn là:

nmcli dev show | grep DNS

hoặc, để có đầu ra sạch hơn

nmcli dev show | grep DNS | sed 's/\s\s*/\t/g' | cut -f 2


Giải thích

Nếu bạn có thời gian, tôi có thể giải thích về sự lộn xộn trên:

  1. nmcli dev show

    Hoạt động hơi giống nm-toollệnh cũ . Nó xây dựng các thông tin mạng hiện tại.

    Bạn cũng có thể tìm hiểu cài đặt của một giao diện nhất định bằng cách thêm tên giao diện. Ví dụ, để tìm hiểu thông tin của eth0, bạn có thể sử dụng nmcli dev show eth0.

  2. grep DNS

    Rõ ràng grep chỉ các dòng có dòng chữ "DNS" trong đó.

  3. sed 's/\s\s*/\t/g' | cut -f 2

    Điều này chỉ để làm sạch đầu ra. Có cutthể chọn đầu ra theo cột, nhưng chỉ mất 1 ký tự làm dấu phân cách (trong khi nmclisử dụng MANY SPACE). Các sedbiến không gian, trong đầu ra ban đầu, thành TAB.


7
+1. Không biết về tiện ích này, tuy nhiên, tôi chạy Ubuntu 14.04 và lệnh của tôi là nmcli d list. Ngoài ra, công cụ tuyệt vời ở đây!
Terrance

1
sed có cờ -E cho regex mở rộng, cho phép r+thay vìrr*
Squidly

1
Câu trả lời này dựa trên phiên bản nào? Trên phiên bản nmcli của Trusty của tôi 0.9.8.8 nmcli dev showphát ra các thông báo lỗi lớn.
Oli

5
@Oli nmcli dev showthuộc về nmcli vào ngày 15.04. Vì một số lý do, nmcli cũ được coi là không ổn định, vì vậy. . . bây giờ họ sử dụng nmclinhững lá cờ giống như Fedora. Có lẽ đó là do việc chuyển sang systemd. Và bởi vì câu trả lời này phù hợp với 15.04 chứ không phải 14.04, tôi rất muốn hạ thấp nó
Sergiy Kolodyazhnyy

1
Tôi muốn lặp lại các ý kiến ​​trên, điều này có thể đúng trong 15.04, nhưng không đúng với 14.04, đó là câu hỏi.
Alex

4

Phân tích gói sẽ là một phương pháp thay thế hoạt động bất kể NetworkManager hoặc công cụ kết nối mạng khác mà bạn sử dụng. Ý tưởng cơ bản là gửi một truy vấn dns với nslookupvà trong một kiểm tra đầu cuối thứ hai nơi các gói đi.

Vì vậy, lần đầu tiên chúng ta cần kết nối với mạng, để không có gì làm lộn xộn các kết nối và chạy lệnh sau:

sudo tcpdump -vv -i wlan0 -W 1200 | grep google.com  

Trong thiết bị đầu cuối thay thế chạy:

nslookup google.com 

Khi bạn nhận được danh sách các gói từ tcpdump, hãy kiểm tra xem chúng đi từ địa chỉ IP của bạn.

Ví dụ,

$ sudo tcpdump -vv -i wlan0 -W 1200 | grep google.com                            
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
    eagle.29862 > b.resolvers.Level3.net.domain: [udp sum ok] 64057+ [1au] A? google.com. ar: . OPT UDPsize=4096 (39)
    b.resolvers.Level3.net.domain > eagle.29862: [udp sum ok] 64057 q: A? google.com. 11/0/0 google.com. A 173.194.115.64, google.com. A 173.194.115.65, google.com. A 173.194.115.72, google.com. A 173.194.115.66, google.com. A 173.194.115.69, google.com. A 173.194.115.78, google.com. A 173.194.115.70, google.com. A 173.194.115.71, google.com. A 173.194.115.68, google.com. A 173.194.115.67, google.com. A 173.194.115.73 (204)
    eagle.16429 > b.resolvers.Level3.net.domain: [udp sum ok] 38822+ A? google.com. (28)

Như bạn có thể thấy, máy tính xách tay của tôi eagle, gửi các gói đến dns của trường đại học của tôi , b.resolvers.Level3.net.domain. Nếu bạn muốn xem địa chỉ IP, bạn có thể sử dụng -ncờ với tcpdump.

Ví dụ:

$ sudo tcpdump -n -vv -i wlan0 -W 1200 | grep google.com                         
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
    10.10.87.145.56474 > 4.2.2.2.53: [udp sum ok] 15606+ A? google.com. (28)

2

kiểm tra kết nối mạng của bạn:

ls /etc/NetworkManager/system-connections/

và chọn kết nối bạn muốn cấu hình.

 sudo cat /etc/NetworkManager/system-connections/Internet | grep dns

Thay thế "Internet" mà không có tên kết nối của bạn


Sử dụng vẫn có thể sử dụng nm-tool:

nm-tool | grep DNS

Cài đặt nó cho U14.04 và sau đó sử dụng

sudo apt-get install nm-tool

thí dụ:

nm-tool | grep DNS
    DNS:             192.168.1.1
    DNS:             192.168.10.1
    DNS:             192.168.11.1

1

Nó vẫn có sẵn theo mặc định trên phiên bản 14.04 vì nó được đóng gói với trình quản lý mạng. Nó đã bị loại bỏ khỏi trình quản lý mạng (phiên bản 15.04 trở lên) và thậm chí không có sẵn thông qua apt-get.

Hiện tại, trên phiên bản 15.04, bạn có thể tải xuống và trích xuất công cụ nm từ gói cũ theo cách thủ công. Chạy các lệnh sau.

Đầu tiên, tạo một thư mục tạm thời để làm việc trong:

cd
mkdir APTGET;cd APTGET

Sau đó, tải xuống phiên bản cũ và giải nén các tệp:

wget 'http://us.archive.ubuntu.com/ubuntu/pool/main/n/network-manager/network-manager_0.9.8.8-0ubuntu7.1_amd64.deb'
ar xvf *
tar xvf dat*

Tạo một thư mục mới:

mkdir ~/bin

(nếu nó nói file already exists, chỉ cần bỏ qua tin nhắn và tiến hành).

Sao chép tập tin vào thư mục mới:

cp ./usr/bin/nm-tool ~/bin

Quay trở lại thư mục chính và xóa thư mục tạm thời:

cd ..
rm -R APTGET

Bây giờ, đặt bí danh cho công cụ nm:

cp ~/.bashrc ~/.bashback
echo 'alias nm-tool="~/bin/nm-tool"' | tee -a ~/.bashrc;. ~/.bashrc

Người dùng hiện tại có thể chạy công cụ nm từ thiết bị đầu cuối.


Ngoài ra, điều này vẫn có thể không cung cấp chính xác tất cả các trình phân giải DNS thực tế bạn đang sử dụng.

Bạn có thể truy cập DNSleaktest.com để nhận báo cáo đầy đủ. Nhấp vào Extended Test để có được một báo cáo đầy đủ.


1

Trên thực tế, NetworkManager sử dụng /etc/resolv.conf. Tuy nhiên, trên cài đặt mặc định, máy chủ DNS được liệt kê trong đó resolv.conf127.0.0.1do NetworkManager sử dụng dịch vụ DNS nội bộ của riêng mình vì một số lý do kỹ thuật tối nghĩa không phù hợp với nhiều người. Đây là lý do tại sao bạn phải sử dụng nmcliđể xem những gì máy chủ DNS NetworkManager đang sử dụng trong nội bộ.

Tuy nhiên, cũng có thể vô hiệu hóa hành vi này và quay lại hành vi cũ nơi máy chủ DNS thực tế đang sử dụng được liệt kê trong resolv.conf. Để làm điều này, bạn chỉ cần xóa bỏ dòng dns=dnsmasqtrong /etc/NetworkManager/NetworkManager.conf, và khởi động lại. Đối với hầu hết mọi người, điều này sẽ không tạo ra sự khác biệt nào ngoài thực tế là máy chủ DNS thực tế sẽ được hiển thị trong resolv.conf. Nếu bạn nằm trong số các trường hợp góc mà thay đổi được đưa ra, thì điều này sẽ trở nên rõ ràng nhanh chóng và bạn có thể trở lại hành vi mặc định bằng cách bỏ ghi lại dòng.


1

danh sách nhà phát triển nmcli | grep DNS

nó sẽ tạo ra một cái gì đó như;
IP4.DNS[1]: 8.8.8.8 IP4.DNS[1]: 8.8.8.8 IP4.DNS[2]: 8.8.4.4

Lệnh trên hoạt động trước Ubuntu 16.04
Đối với Ubuntu 16.04 sử dụng:
nmcli dev show | grep DNS


Bạn có thể có nghĩa là nmcli dev show, không nmcli dev list?
holmb

Tôi đã thực hiện một số hoạt động đào, có vẻ như họ đã thay đổi CLI giữa Ubuntu 14.04 và 16.04. Rõ ràng nmcli dev listhoạt động trong 14.04, nhưng không phải trong 16.04.
holmb

1

Nếu ai đó có cùng câu hỏi với tôi về Ubuntu 18.04LTS:

Liệt kê tất cả các thiết bị mạng được quản lý thông qua trình quản lý mạng:

networkctl list

Hiển thị cấu hình của thiết bị cụ thể:

networkctl status eth0

Thay vì eth0, bạn phải nhập tên của thiết bị mạng được hiển thị trong danh sách trước đó. Nếu không có mục nhập DNS, thẻ của bạn không có máy chủ tên được cấu hình

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.