Kuinka voin tarkistaa, mitä DNS-palvelinta käytän (Linuxissa)? Käytän verkonhallintaa ja kiinteää yhteyttä yliopistoni lähiverkkoon. (Yritän selvittää, miksi verkkotunnukseni ei ratkea)
Vastaa
Sinun pitäisi pystyä saamaan kohtuullista tietoa:
$ cat /etc/resolv.conf
Kommentit
- Huomaa kuitenkin, että (nykyaikaisessa Linuxenissa)
/etc/nsswitch.conf
-sisältö määrää, mitä nimipalveluja (DNS, LDAP jne.) käytetään ja missä järjestyksessä. Sanofgrep hosts: /etc/nsswitch.conf
. Jos se viittaa vain DNS: ään,/etc/resolv.conf
on oikea paikka etsiä nimipalvelimiasi. Mutta on todennäköistä, että ’ käytät myös mDNS: ää (alias ZeroConf, alias Avahi, alias Bonjour jne.) Jne. Tällöin asiat riippuvat siitä, mitä ’ uudelleenkäyttö. - Tämä tiedosto osoittaa yleensä Ubuntussa 127.0.1.1 – se ’ s paikallisen DNS-välimuistipalvelimen, ei varsinaista ylävirtaan.
- @BarryKelly Tarkista, mitä reititin käyttää, sitten
- Ja jos sinulla on useita ylävirran palvelimia määritetty? Kuinka tietää, mitä käytetään tällä hetkellä?
- Katso @ G32RW: n tai @Lonniebizin vastaukset vankempaan lähestymistapaan erilaisissa olosuhteissa, esim. kun saat vastauksen, kuten
127.0.0.53
Vastaa
Täällä ”Kuinka teen sen:
( nmcli dev list || nmcli dev show ) 2>/dev/null | grep DNS
Tämä toimi edellisellä edelliseen tapaan:
nm-tool | grep DNS
Debianissa sinulla on oltava verkonhallintapaketti asennettu.
Kommentit
Vastaus
Systemd-käyttöjärjestelmissä:
systemd-resolve --status
Kommentit
- systemd-solution: tunnistamaton vaihtoehto ’ – tila ’
- Sanoo
Failed to get global data: Unit dbus-org.freedesktop.resolve1.service not found.
- Tämä on uusi oletus tapa tehdä se Ubuntu 18.04 Bionic Beaverissa – tottuukaan siihen, kaikki!
- Tämä on ainoa ratkaisu, joka toimi minulle, kun muut palasivat 127.0.0.53
- Mitä luen? Näen vain DNSSEC-tietueita.
Vastaa
Luulen, että voit myös kysyä DNS: ää ja se näyttää sinulle mitä palvelin palautti tuloksen. Kokeile tätä:
dig yourserver.somedomain.xyz
Ja vastauksen tulisi kertoa, mitkä palvelimet palauttivat tuloksen. Kiinnostamasi lähtö näyttää tältä:
;; Query time: 91 msec ;; SERVER: 172.xxx.xxx.xxx#53(172.xxx.xxx.xxx) ;; WHEN: Tue Apr 02 09:03:41 EDT 2019 ;; MSG SIZE rcvd: 207
Voit myös pyytää dig
kyselemään tietyn DNS-palvelimen käyttämällä dig @server_ip
kommenttia
- Debianissa tämä edellyttää
dnsutils
-paketti. - Jos käytät mitä tahansa DNS-peite- / välimuistipalvelua, joka suoritetaan paikallisella koneellasi, se piilottaa todelliset DNS-palvelimet.
- Ubuntu 18.04 näyttää vain paikallisen dns-välimuistin:
SERVER: 127.0.0.53#53(127.0.0.53)
Vastaa
Tee vain, nslookup
. Osa tuloksista sisältää palvelimen, jota se käyttää.
Alla olevassa esimerkissä se osoittaa, että käytetty DNS-palvelin on 8.8.8.8.
$ nslookup google.com Server: 8.8.8.8 Address: 8.8.8.8#53 Non-authoritative answer: Name: google.com Address: 172.217.22.174
Kommentit
- voitko antaa esimerkin siitä, mitä kehotteeseen syötetään?
- Esimerkki:
$ nslookup www.google.com
- Debianissa tämä edellyttää pakettia
dnsutils
. - Äskettäisessä Ubuntussa tämä viittaa jälleen paikalliseen välimuistipalvelimeen 127.0.0.1, kuten jo vihjettiin tässä kommentissa
- CentOSissa 7 se sulkeutuu virheellisesti, mutta se on vm, joten tein
nslookup google.com
Windowsin isännässä ja löysin nimipalvelimen. Lisää se kohtaan/etc/resolv.conf
kuten:nameserver xx.xx.xx.xx
ja käynnistä palvelu uudelleennetwork
, ja kaikki on hyvin. Ylistää sinua.
vastaus
uudella network-manager
-komennolla nmcli
, tee tämä:
nmcli --fields ipv4.dns,ipv6.dns con show [connection_name]
Verkonhallinnan uudemmissa versioissa (kuten Ubuntu 16.04: ssä) kenttien nimet ovat hieman erilaisia:
nmcli --fields ip4.dns,ip6.dns con show [connection_name]
Jos et tiedä yhteyden nimeä, käytä:
nmcli -t --fields NAME con show --active
Esimerkiksi vanhoissa nmcli-versioissa:
$ nmcli --fields ip4.dns,ip6.dns con show "Wired connection 1" IP4.DNS[1]: 172.21.0.13 IP4.DNS[2]: 172.21.0.4
kommentit
- Omat tulokset :
order «con» «show» is not valid
. - Se toimii minulle hyvin verkonhallintaohjelman 1.0.4 kanssa Ubuntu 15.10: ssä. Ehkä sinulla on vanhempi versio?
- Taulukkomuoto on melko huono. Toivon, että saan samanlaisen sarakkeen muodon kuin Powershell.
- Palauttaa
Error: invalid field 'ip4.dns'; allowed fields: NAME,UUID,TYPE,TIMESTAMP,TIMESTAMP-REAL,AUTOCONNECT,AUTOCONNECT-PRIORITY,READONLY,DBUS-PATH,ACTIVE,DEVICE,STATE,ACTIVE-PATH.
- yksinkertaisesti
nmcli
oli kaikki mitä tarvitsin Ubuntu 19.04: ssä
Vastaa
saadaksesi ensimmäinen DNS-palvelin (vain IP):
-
cat
tuottaa vain DNS-konfig. -
grep
suodattimet nimipalvelin -
head
säilyttää vain ensimmäisen rivin / esiintymän -
cut
ota ip rivin osa (toinen sarake ”” erottimena ”)
Voit lisätä DNS ip: n ympäristömuuttujaan seuraavasti:
export THEDNSSERVER=$(cat /etc/resolv.conf |grep -i "^nameserver"|head -n1|cut -d " " -f2)
Kommentit
-
grep -m 1
lopettaa vastaavuuden ensimmäisen ottelun jälkeen, joten et ’ t on käytettävähead
- Putkilinjan keventämiseksi vieläkin enemmän, siepata ryhmiä Perl-regexp: llä on erittäin siisti, ja grep vie tiedoston argumentti:
grep -Pom 1 '^nameserver \K\S+' /etc/resolv.conf
. Kirjoitti juuri Sieppaa ryhmiä säännöllisen grep perl -lausekkeen avulla - Siellä ’ on sekä IPv4 että IPv6-DNS-palvelimet. Myös toissijaiset palvelimet ovat olemassa syystä. Kenen tämä komento palauttaa? Onko suositeltavaa ottaa ensimmäinen ja jättää muut huomiotta?
Vastaa
Jos käytät verkkopäällikkö luultavasti saat kaikki verkkoparametrit yliopistosi dhcp-palvelimelta.
Jos et halua tarkistaa komentotulkista dns-asetuksiasi (kuten hesse ja Alexios kuvaavat), voit nähdä ne Verkkotiedot-paneelista.
Pääset tähän paneeliin painamalla hiiren oikealla painikkeella verkonhallintakuvaketta ja valitsemalla valikosta ”Yhteystiedot”.
Vastaa
resolvectl
$ resolvectl status | grep -1 "DNS Server" DNSSEC supported: no Current DNS Server: 1.1.1.1 DNS Servers: 1.1.1.1 1.0.0.1
Yhteensopivuuden vuoksi systemd-resolve
on symbolinen linkki osastoon resolvectl
monilla alueilla kuten Ubuntu 18.10:
$ type -a systemd-resolve systemd-resolve is /usr/bin/systemd-resolve $ ll /usr/bin/systemd-resolve lrwxrwxrwx 1 root root 10 nov. 15 21:42 /usr/bin/systemd-resolve -> resolvectl $ type -a resolvectl resolvectl is /usr/bin/resolvectl $ file /usr/bin/resolvectl /usr/bin/resolvectl: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=09e488e849e3b988dd2ac93b024bbba18bb71814, stripped
kommentit
- toimii täydellisesti Ubuntu 18.10 -käyttöjärjestelmässä.
Vastaa
Olen syöttänyt ora 25 ja sillä oli vastaava hidas vastaus komentorivillä sudo-komentoihin.
nmcli dev show | grep DNS
osoitti, että vain yhdellä kolmesta sovittimestani (kaksi aktiivista) oli DNS-merkintöjä. Lisäämällä DNS-merkinnät aktiiviseen korttiin, jolla ei ole merkintää – presto! Kaikki on hyvää ja vasteaika on välitön.
Kommentit
- ehkä vaihtoehtoisesti
vastaus
Ubuntussa> = 15
nmcli device show <interfacename> | grep IP4.DNS
Korvaa <interfacename>
omallasi.
Ubuntussa < = 14
Komento
nmcli dev list iface <interfacename> | grep IP4
Korvaa <interfacename>
omalla.
Esimerkkejä
nmcli device show eth0 | grep IP4.DNS
Tai
nmcli dev list iface eth0 | grep IP4
Tämä näyttää kaikki DNS-palvelimet (Jos käytät enemmän kuin yksi).
Kommentit
-
nmcli dev list iface [devicename]
on oikea komento - I haven ’ t huomannut < käyttöliittymää > on piilotettu, koska käytän < >
- Debianissa saan virheen — $ nmcli dev li st iface eth0 -virhe: ’ dev ’ -komento ’ lista ’ ei kelpaa.
- nmcli on oikeanpuoleiselle kosteudelle tarkoitettu komento.
- Tämä on oikea vastaus!
Vastaa
Äskettäisessä Fedora 33: ssa voit vain käyttää
# resolvectl dns Global: Link 2 (enp0s31f6): Link 3 (wlp4s0): 1.1.1.1 8.8.8.8 Link 4 (virbr0): Link 5 (virbr0-nic):
Voit tarkistaa, onko systemd-resolved
on aktiivinen, tee cat /etc/resolv.conf
Se kertoo sinulle, kuka hallitsee tiedostoa.
Jos haluat lisätietoja, voit käyttää resolvectl status
resolvectl statistics
, voit myös tyhjentää välimuistit …
Vianmääritykseen voit käyttää journalctl -u systemd-resolved -f -o cat | grep Looking
-asetusta, kun olet asettanut tason DEBUG: sudo resolvectl log-level debug
vastaus
CentOSissa voit käyttää:
/usr/sbin/named -v
Vastaa
Järjestelmiin, joihin systemd-resolved
EI ole asennettu:
$ host -v something.unknown | awk -F "[ #]" "/Received /{print$5}" | uniq 192.168.1.1
Järjestelmissä, joissa NetworkManager
on käynnissä:
$ ( nmcli -f IP4.DNS,IP6.DNS dev list || nmcli -f IP4.DNS,IP6.DNS dev show ) 2>/dev/null | awk "/DNS/{print$NF}" 192.168.1.1
/etc/resolv.conf
osoittaa koneellesi jadnsmasq
ratkaisee nimiä NetworkManager b: n määrittämänä. >.network-manager
-pakettia.