14.04'ten itibaren Ubuntu'da hangi DNS'yi kullandığımı nasıl öğrenebilirim?


14

( Benzer soruya 12.04 için bir takip .)

Ubuntu 12.04'ten önce etkin DNS'yi görebilirsiniz /etc/resolv.conf. Ubuntu 12.04'te NetworkManager artık dosyayla çalışmaz. Doğrudan komut satırı aracına başvurmanız gerekir nm-tool.

İlginçtir, nm-toolartık 14.04 ve sonrasında varsayılan olarak yüklenmemektedir. Yine de yüklemenize rağmen apt-get install, tüm Ubuntu'nun bunu kutudan çıkardığını varsayamazsınız.

Yani soru kalıyor. Varsayılan kurulumda, komut satırında kullandığınız DNS'yi nasıl biliyorsunuz?

Yanıtlar:


30

Hızlı cevap

nmcliŞimdi varsayılan olarak yeni bir NetworkManager aracı yüklenmiştir. Komut satırı aracı çok güçlü ancak öğrenmesi biraz daha zor. Sorumuza sadık kalın, kısa cevap:

nmcli dev show | grep DNS

veya daha temiz bir çıktı elde etmek için

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


Açıklamak

Zamanınız varsa, yukarıdaki jumbo mumble'ı açıklayabilirim:

  1. nmcli dev show

    Biraz eski nm-toolkomut gibi çalışır . Mevcut ağ bilgilerini ayrıntılı olarak açıklar.

    Arabirim adını ekleyerek belirli bir arabirimin ayarını da öğrenebilirsiniz. Örneğin, bilgisini öğrenmek için eth0kullanabilirsiniz nmcli dev show eth0.

  2. grep DNS

    Açıkçası sadece içinde "DNS" metni olan satırları grep.

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

    Bu sadece çıktıyı temizlemek içindir. cutKolon ile çıkışı seçmek, ancak (iken bu ayırıcı olarak yalnızca 1 karakter alır nmclikullanımları ÇOK BOŞLUK). sedTAB içine, orijinal çıktı, boşluk döner.


7
+1. Ancak bu yardımcı programı bilmiyordum, Ubuntu 14.04'ü çalıştırıyorum ve komutum nmcli d list. Bunun dışında, burada harika şeyler!
Terrance

1
sed r+yerine genişletilmiş normal ifade için -E bayrağı vardırrr*
Squidly

1
Bu cevap hangi sürüme dayanıyor? Trusty'nin nmcli sürümünde 0.9.8.8 nmcli dev showbüyük kıvırcık hata mesajları atıyor.
Oli

5
@Oli nmcli dev show, 15.04'te nmcli'ye aittir. Bazı nedenlerden dolayı eski nmcli dengesiz kabul edildi. . . şimdi nmcliFedora ile aynı bayraklara sahipler . Muhtemelen bunun nedeni sistemd'e geçiştir. Ve bu cevap 15.04 için uyuyor, ancak 14.04 için uygun olmadığından, onu aşağıya düşürmek için çok cazipim
Sergiy Kolodyazhnyy

1
Yukarıdaki yorumları tekrarlamak istiyorum, bu 15.04 için doğru olabilir, ancak soru 14.04 için doğru değil.
Alex

4

Paket analizi, NetworkManager veya kullandığınız diğer ağ bağlantı araçlarından bağımsız olarak çalışan alternatif bir yöntem olacaktır. Temel fikir, nslookuppaketlerin nereye gittiğini ikinci bir terminal kontrolünde ve bir dns sorgusu göndermektir .

Bunun için ilk kez ağa bağlanmamız gerekir, böylece bağlantıların dağınıklığı için hiçbir şey olmaz ve aşağıdaki komutu çalıştırın:

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

Alternatif terminal çalışmasında:

nslookup google.com 

Paket listelemesini aldıktan sonra tcpdump, IP adresinizden nereye gittiklerini kontrol edin.

Örneğin,

$ 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)

Gördüğünüz gibi, dizüstü bilgisayarım, eagleüniversitemin DNS'lerine paketler gönderiyor b.resolvers.Level3.net.domain. IP adresini görmek istiyorsanız ile -nişaretini kullanabilirsiniz tcpdump.

Örneğin:

$ 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

ağ bağlantılarınızı kontrol edin:

ls /etc/NetworkManager/system-connections/

ve yapılandırmak istediğiniz bağlantıyı seçin.

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

Bağlantı adınız olmadan "İnternet" i değiştirin


Kullanım hala şunları kullanabilir nm-tool:

nm-tool | grep DNS

Kullanarak U14.04 ve üstü için yükleyin

sudo apt-get install nm-tool

misal:

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

1

Ağ yöneticisi ile birlikte geldiği için varsayılan olarak 14.04 sürümünde kullanılabilir. O zamandan beri ağ yöneticisinden (sürüm 15.04 ve üzeri) kaldırılmıştır ve apt-get yoluyla bile kullanılamaz.

Şimdilik, 15.04 sürümünde, nm-aracını eski paketten manuel olarak indirebilir ve ayıklayabilirsiniz. Aşağıdaki komutları çalıştırın.

İlk olarak, çalışmak için bir geçici dizin oluşturun:

cd
mkdir APTGET;cd APTGET

Ardından, eski sürümü indirin ve dosyaları çıkarın:

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*

Yeni bir dizin oluşturun:

mkdir ~/bin

( file already existsyazıyorsa, mesajı görmezden gelin ve devam edin).

Dosyayı yeni dizine kopyalayın:

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

Ana dizine dönün ve geçici dizini silin:

cd ..
rm -R APTGET

Şimdi, nm-tool için bir takma ad ayarlayın:

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

Mevcut kullanıcı artık terminalden nm-tool'u çalıştırabilmelidir.


Ayrıca, bu, kullandığınız tüm gerçek DNS çözümleyicilerini doğru bir şekilde sağlamayabilir .

Tam rapor almak için DNSleaktest.com adresine gidebilirsiniz . Tam bir rapor almak için Genişletilmiş Test'i tıklayın .


1

Aslında, NetworkManager kullanır /etc/resolv.conf. Ancak, varsayılan ayarlarda listelenen DNS sunucusu resolv.confşudur 127.0.0.1, çünkü NetworkManager birçok kişi için geçerli olmayan bazı belirsiz teknik nedenlerle kendi dahili DNS hizmetini kullanır . Bu nedenle nmcliNetworkManager'ın dahili olarak hangi DNS sunucularını kullandığını görmek için kullanmanız gerekir.

Ancak, bu davranışı devre dışı bırakmak ve kullanılan gerçek DNS sunucusunun listelendiği eski davranışa geri dönmek de mümkündür resolv.conf. Bunu yapmak için, sadece satırını açıklama dns=dnsmasqiçinde /etc/NetworkManager/NetworkManager.conf, ve yeniden. Çoğu insan için bu, gerçek DNS sunucusunun artık gösterilmesinin ötesinde bir fark yaratmamalıdır resolv.conf. Değişikliğin tanıtıldığı köşe vakaları arasındaysanız, bu hızlı bir şekilde belirginleşmelidir ve satırı tekrar açarak varsayılan davranışa geri dönebilirsiniz.


1

nmcli dev listesi | grep DNS

şöyle bir şey çıkarır;
IP4.DNS[1]: 8.8.8.8 IP4.DNS[1]: 8.8.8.8 IP4.DNS[2]: 8.8.4.4

Yukarıdaki komut Ubuntu 16.04'ten önce çalışır
Ubuntu 16.04 kullanımı için:
nmcli dev show | grep DNS


Muhtemelen demek istiyorsun nmcli dev show, değil nmcli dev listmi?
holmb

Biraz kazma yaptım, Ubuntu 14.04 ve 16.04 arasında CLI'yi değiştirdiler. Görünüşe göre nmcli dev list14.04'te çalışıyor, ancak 16.04'te çalışmıyor.
holmb

1

Birisi Ubuntu 18.04LTS için benimle aynı soruya sahipse:

Ağ yöneticisi aracılığıyla yönetilen tüm ağ cihazlarını listeleyin:

networkctl list

Belirli bir cihazın yapılandırmasını göster:

networkctl status eth0

Eth0 yerine, daha önce listede gösterilen ağ aygıtınızın adını girmeniz gerekir. DNS girişi yoksa, kartınızda yapılandırılmış bir ad sunucusu yoktur

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.