특정 네트워크 인터페이스에 대해 Ubuntu 노트북의 DNS 기본 설정을 영구적으로 설정하는 방법이 있습니까?
내가 의존하는 WiFi 네트워크는 그렇게 예측할 수 없습니다. Wi-Fi 라우터 관리 콘솔의 편집 모드에 접근할 수 없고 Wi-Fi 연결이 가끔씩 끊겼다가 다시 돌아옵니다.
즉, DNS 항목을 "새로 고침"하려면 다음 명령을 계속 호출해야 합니다 sudo resolvectl dns 3 1.1.1.1 8.8.8.8
.
이 문제는 처음에 제가 본 웹 브라우저 오류( 예: , , , 등 DNS_*
다양한 오류 )로 인해 발생했습니다. 그래서 이 Wi-Fi 네트워크(라우터)가 ISP(인터넷 서비스)의 개인 DNS를 사용하고 있다는 것을 알게 되었습니다. 제공자) 항목입니다. 라우터 구성 대시보드에서 이러한 세부 정보(사용자 지정 IP 주소)를 볼 수 있지만 이러한 설정을 변경할 수는 없습니다.DNS_PROBE_STARTED
DNS_PROBE_FINISHED_NO_INTERNET
DNS_PROBE_FINISHED_NXDOMAIN
DNS_PROBE_FINISHED_BAD_CONFIG
DNS_PROBE_FINISHED_NO_INTERNET
또한: 내 Ubuntu DNS가 Wi-Fi 네트워크의 기본 게이트웨이(라우터)에 의존한다는 것을 알 수 있습니다. IP 주소 일치를 위한 다음 명령을 통해 이를 발견했습니다.
# check my local Ubuntu DNS details for all interfaces
resolvectl dns
# find out the default gateway (it should be the router IP address)
ip route
이는 내 노트북이 DNS 확인을 위해 게이트웨이(라우터)에 동적으로 의존하고 있으며 라우터가 ISP(인터넷 서비스 공급자)의 일부 모호한 IP 주소를 사용하도록 구성되어 있음을 의미한다고 생각합니다. 맞습니까?
/etc/systemd/resolved.conf
이 파일을 수정하고 다음을 추가하여 전역 DNS를 변경했습니다.
DNS=1.1.1.1 8.8.8.8
FallbackDNS=8.8.4.4
그런 다음 나는 이렇게 했습니다.
# make sure to restart the DNS daemon
sudo systemctl restart systemd-resolved.service
# check what DNS is being used by each interface
resolvectl status
그러나 물론 이것은 내 Wi-Fi 인터페이스에 의해 무시되며 이를 수행하는 방법이나 선호하는 DNS 항목과 작동하도록 구성하는 방법을 모릅니다.
완전성을 기하기 위해 새 DNS 캐시에 의존하는 웹 브라우저가 DNS_*
오류를 발생시키지 않도록 하기 위해 이 작업도 수행합니다(이것이 올바른지/필요한지 잘 모르겠습니다. 그렇죠?).
# check current DNS cache
resolvectl statistics
# flush DNS cache
resolvectl flush-caches
파일의 하단을 확인하면 /etc/resolv.conf
다음이 표시됩니다.
nameserver 127.0.0.53
options edns0 trust-ad
search lan
이 DNS 문제는 해당 항목과 관련이 있을 수 있다고 생각 nameserver 127.0.0.53
하지만 파일이 /etc/resolv.conf
자동 생성된다는 것도 알고 있습니다(아마도 자동 새로 고침됨). 이는 systemd-resolved.service
노트북 127.0.0.53
이 관리되는 DNS의 로컬 IP 주소에 의존한다는 것을 의미합니다. systemd-resolved
수동으로 변경할 필요가 없다고 생각합니다.
다른 프로그램/명령이 다른 위치/계층을 사용하여 DNS 구성을 결정한다는 느낌이 듭니다. 특정 방식으로 변경 resolvectl
/ 설정하면 systemd-resolved.service
브라우저가 /etc/resolv.conf
다른 곳(예: 이 파일 또는 이와 유사한 것)에서 DNS 구성을 읽을 수 있습니까 /etc/nsswitch.conf
? 그렇습니까?
제 생각에는:
- 이 명령을
sudo resolvectl dns 3 1.1.1.1 8.8.8.8
영구적으로 만듭니다(재부팅 및 Wi-Fi 연결 해제/연결 주기 전반에 걸쳐). /etc/resolv.conf
유사 하거나/etc/nsswitch.conf
유사한 다른 모든 구성 파일을 변경하십시오.
내가 선호하는 DNS 구성 세부 정보에 의존합니다. 어떻게 해야 하나요?
답변1
데스크톱 설치인지 서버 설치인지 표시하지 않았습니다. 어쨌든 설명하려고 노력하겠습니다.
먼저 내용을 살펴보겠습니다 /etc/resolv.conf
.
nameserver 127.0.0.53
options edns0 trust-ad
search lan
127.0.0.53
이는 예상되는 이름 서버로 표시되며 로컬 캐시 스텁 확인자입니다. 실제로 command 를 입력하면 로컬 네임서버가 정의된 ls -l /etc/resolv.conf
심볼릭 링크 /run/systemd/resolve/stub-resolv.conf
(또는 최소한 그래야 함)임을 알 수 있습니다.
$ ls -l /etc/resolv.conf
lrwxrwxrwx 1 root root 39 Dec 31 2021 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
스텁 확인자는 향후 쿼리가 더 빨라지고 업링크 이름 서버를 쿼리할 필요가 없도록 DNS 쿼리를 캐시합니다. 실제로 무슨 일이 일어나는지 봅시다.
두 개의 터미널 창을 엽니다. 터미널(터미널 #1이라고 함)에서 tcpdump
다음 명령을 사용하여 실행합니다. wlp9s0
DNS 쿼리가 실행될 것으로 예상되는 인터페이스로 바꿉니다 . 그것이 인터넷에 연결된 유일한 인터페이스라면 그것을 사용하십시오.
sudo tcpdump -ni wlp9s0 -p port 53
그런 다음 다른 창(터미널 #2)에서 다음 명령을 실행합니다.
dig google.com
터미널 #2의 출력은 다음과 같으며 127.0.0.53
이름 서버를 나타냅니다.
$ dig google.com
; <<>> DiG 9.16.1-Ubuntu <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54920
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 294 IN A 142.251.46.206
;; Query time: 8 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Wed Jul 12 19:47:07 PDT 2023
;; MSG SIZE rcvd: 55
터미널 #1에서 실행할 때 tcpdump
출력이 없거나 일부 활동이 없습니다. 이전에 이 사이트를 방문한 적이 있다면 쿼리는 로컬 캐시에 있어야 하며 출력은 표시되지 않습니다 tcpdump
. 그렇지 않은 경우 업링크 서버에 대한 쿼리가 포함된 출력이 표시됩니다. 계속 진행하면서 이전에 google.com에 쿼리한 적이 있다고 가정합니다. 이는 아직 출력이 없음을 의미합니다.
다음으로 로컬 DNS 캐시를 지워 보겠습니다. 터미널 #2에 다음을 입력합니다.
sudo resolvectl flush-caches
그런 다음 dig google.com
터미널 #2에서 다시 실행하세요. 이번에는 tcpdump
정의했거나 DHCP를 통해 수신한 업링크 서버를 쿼리하는 출력이 터미널 #1에 표시됩니다. 아래 출력에서는 208.65.212.34
Wi-Fi 링크의 DHCP를 통해 나에게 제공되는 DNS 서버 중 하나인 서버가 쿼리되는 것을 볼 수 있습니다.
$ sudo tcpdump -ni wlp9s0 -p port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlp9s0, link-type EN10MB (Ethernet), capture size 262144 bytes
19:50:55.534164 IP 172.23.123.82.39024 > 208.65.212.34.53: 36626+ [1au] A? google.com. (39)
19:50:55.550242 IP 208.65.212.34.53 > 172.23.123.82.39024: 36626 1/0/1 A 142.251.46.206 (55)
우리가 완료한 두 쿼리 모두에서 쿼리 중인 네임서버가 출력에 dig google.com
표시되었으며 127.0.0.53
이는 항상 그랬습니다. 그러나 백그라운드에서는 이전에 쿼리되지 않은 업링크 서버를 쿼리하여 캐시에 저장합니다.
이제 데스크탑 환경에 DNS 서버를 설정하고 서버에 특정 인터페이스를 설정해 보겠습니다.
각 인터페이스에 대한 DNS 서버 정의 - DESKTOP
데스크탑 환경에서는 각 인터페이스에 DNS 서버를 할당하는 것이 매우 쉽습니다. Wi-Fi 인터페이스가 있는 경우 DHCP를 통해 설정될 가능성이 높습니다. 따라서 Wi-Fi 설정을 열고 IPv4 페이지를 클릭한 다음 아래 이미지와 유사한 DNS 서버를 추가하면 됩니다. 이를 8.8.8.8
추가 DNS 서버로 정의합니다.
DHCP 서버에서 제공하는 DNS 서버를 사용하지 않으려면 선택을 취소하세요.자동적 인.
터미널에서 실행하면 resolvectl status
이 추가 DNS 서버가 인터페이스에 추가된 것을 볼 수 있습니다. 그렇지 않은 경우 Wi-Fi 어댑터를 켜거나 끄거나 재부팅해야 할 수도 있습니다.
Link 3 (wlp9s0)
Current Scopes: DNS
DefaultRoute setting: yes
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Current DNS Server: 208.65.212.34
DNS Servers: 208.65.212.34
208.65.212.2
8.8.8.8
DNS Domain: ~.
다른 인터페이스의 경우 필요에 따라 반복하면 됩니다.
각 인터페이스에 대한 DNS 서버 정의 - SERVER
서버 환경에서는 Netplan 구성 파일의 각 인터페이스에 대한 이름 서버를 정의합니다. 다음 예는 두 개의 인터페이스로 만든 가상 머신의 예입니다. 첫 번째 인터페이스는 eth0
DHCP를 통해 IP 주소를 얻지만 나에게 제공된 DNS 서버를 재정의하여 효과적으로 무시한 다음 내 자신의 DNS 서버를 정의합니다. 두 번째 인터페이스 eth1
는 고정 IP 주소와 수동으로 정의된 DNS 서버로 구성됩니다.
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: true
dhcp4-overrides:
use-dns: false
nameservers:
addresses:
- 1.1.1.1
- 9.9.9.9
eth1:
dhcp4: false
addresses: [192.168.5.11/24]
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
변경한 후 실행하여 sudo netplan try
변경 사항을 적용합니다. 그런 다음 를 실행하면 resolvectl status
각 인터페이스에 자체 DNS 서버가 있음을 알 수 있습니다. 그렇지 않은 경우 변경 사항을 실제로 적용하려면 시스템을 재부팅해야 할 수도 있습니다. 이는 제가 변경했을 때 발생했습니다.
$ resolvectl status
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Link 2 (eth0)
Current Scopes: DNS
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 1.1.1.1
DNS Servers: 1.1.1.1 9.9.9.9
Link 3 (eth1)
Current Scopes: DNS
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 8.8.8.8
DNS Servers: 8.8.8.8 8.8.4.4
그러나 이 구성은 Netplan의 한계에 도달했습니다. 특히 DNS 기본 경로와 관련하여 인터페이스 DNS 설정을 완전히 제어하려면 인터페이스를 구성해야 합니다.네트워킹Netplan 대신 직접. 매뉴얼 페이지를 참조하세요시스템 네트워크(5).
마지막으로 여기서 이야기하고 있는 것은 기본적으로 분할 DNS로, 특정 서버에 쿼리하도록 특정 도메인을 구성합니다. 이는 VPN, DNS 기본 경로, 검색 도메인 등에 도움이 됩니다. 이 주제에 대해 자세히 알아보려면 다음 링크를 확인하세요.