온라인에서 볼 수있는 대부분의 정보는 편집하라고 /etc/resolv.conf
말하지만 변경 사항은 무시됩니다.
$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND --
# YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1
127.0.1.1은의 로컬 인스턴스 인 것 같습니다 dnsmasq
. dnsmasq
문서 편집을 말한다 /etc/resolv.conf
. 에 커스텀 네임 서버를 넣으려고했지만 실행 후에 /etc/resolv.conf.d/base
변경 사항이 표시되지 않았습니다 ./etc/resolv.conf
sudo resolvconf -u
참고로, 연결별로 DNS를 변경하고 싶지 않고 달리 지정하지 않은 경우 모든 연결에 사용할 기본 DNS 설정을 설정하고 싶습니다.
최신 정보:
나는이 질문에 스스로 대답했다 :
https://unix.stackexchange.com/a/163506/67024
나는 그것이 이후 최고의 솔루션이라고 생각합니다.
- 효과가있다.
- 최소한의 변경이 필요합니다.
- 여전히 dnsmasq의 DNS 캐시와 우회하지 않고 작동합니다.
답변
DNS 이름 서버를 재정의하려면 base
파일 아래 에 이와 비슷한 줄을 추가하면 됩니다 resolv.conf.d
.
예
$ sudo vim /etc/resolvconf/resolv.conf.d/base
그런 다음 네임 서버 목록을 다음과 같이 입력하십시오.
nameserver 8.8.8.8
nameserver 8.8.4.4
마지막으로 업데이트 resolvconf
:
$ sudo resolvconf -u
매뉴얼 페이지를 살펴보면 resolvconf
아래의 다양한 파일에 대해 설명합니다 /etc/resolvconf/resolv.conf.d/
.
/etc/resolvconf/resolv.conf.d/base
File containing basic resolver information. The lines in this
file are included in the resolver configuration file even when no
interfaces are configured.
/etc/resolvconf/resolv.conf.d/head
File to be prepended to the dynamically generated resolver
configuration file. Normally this is just a comment line.
/etc/resolvconf/resolv.conf.d/tail
File to be appended to the dynamically generated resolver
configuration file. To append nothing, make this an empty
file. This file is a good place to put a resolver options line
if one is needed, e.g.,
options inet6
head
파일 맨 위에 경고가 있지만 :
$ cat /etc/resolvconf/resolv.conf.d/head
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
이 경고는 이러한 파일이 구성 될 때 결과 resolv.conf
파일 로 전달되어 결과적으로 해당 파일을 만드는 데 사용됩니다. 따라서 파일에 nameserver
대해 위에서 설명한 행을 base
파일에 쉽게 추가 할 수 head
있습니다.
참고 문헌
답변
나는 또한이 질문에 관심이 있으며 @sim 제안 된 솔루션을 시도했습니다.
그것을 테스트하기 위해
nameserver 8.8.8.8
에서 /etc/resolvconf/resolv.conf.d/base
와
nameserver 8.8.4.4
…에서 /etc/resolvconf/resolv.conf.d/head
그런 다음 네트워크를 다시 시작했습니다.
sudo service network-manager restart
결과는 /etc/resolv.conf
다음과 같습니다
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.4.4
nameserver 127.0.1.1
그리고 nm-tool
dnsserver는
DNS: 208.67.222.222
DNS: 208.67.220.220
내 라우터에서 제공하는 것입니다. 반면에 주소를 파면
;; Query time: 28 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)
내가 옳다면, 나는이 모든 것에서
- resolvonf는 “head”부분 만 읽습니다. “base”부분은 어떻게 든 dnsmasq에 의해 제어됩니다
- dnsserver는 dhcp가 제공하는 서버에 관계없이 실제로 8.8.4.4로 강제되지만 요청은 항상 8.8.4.4로 전송되므로 dnsmasq가 제공하는 캐싱을 풉니 다.
- dnsmasq는 여전히 dhcp가 제공하는 dnsserver 만 사용하고 있습니다.
대체로 작동하지만 의도 한 결과라고 생각하지 않습니다. 더 가까운 해결책은 다음과 같습니다. 편집하다
sudo vim /etc/dhcp/dhclient.conf
그런 다음 추가
supersede domain-name-servers 8.8.8.8;
결과는 다음과 같습니다. resolv.conf에는 127.0.0.1 만 포함되어 있습니다. 즉 dnsmasq 캐시가 호출되고 nm-tool은
DNS: 8.8.8.8
즉, 검색 한 이름이 캐시에 없으면 dhcp에서 제공 한 서버가 아니라 8.8.8.8에 요청됩니다.
또 다른 (아마도 더 나은) 옵션은 “supersede”대신 “prepend”를 사용하는 것입니다. 이런 식으로 이름이 8.8.8.8에 의해 확인되지 않으면 요청이 다른 서버로 넘어갑니다. 실제로 nm-tool은
DNS: 8.8.8.8
DNS: 208.67.222.222
DNS: 208.67.220.220
답변
dnsmasq
다음 줄을 추가하여 사용 하는 네임 서버를 변경할 수 있음을 알았습니다 /etc/dnsmasq.conf
.
server=8.8.8.8
server=8.8.4.4
나는하지 않았다 /etc/dnsmasq.conf
그것이하는 dnsmasq 패키지가 설치되어 있기 때문에,하지만 파일을하지만, 우분투 만하는 dnsmasq베이스와 함께 제공됩니다. 나는 실행 sudo apt-get install dnsmasq
한 후 편집 /etc/dnsmasq.conf
한 후, sudo service dnsmasq restart
및 sudo service network-manager restart
.
나는 도망 sudo tail -n 200 /var/log/syslog
내 시스템 로그를 확인하고 있는지 확인하기 위해 dnsmasq
내가 지정한 네임 서버를 사용했다 :
Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.8.8#53
Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.4.4#53
답변
정적 IP 상황에서 Ubuntu 서버 안내서는 / etc / network / interfaces 파일을 변경하라는 메시지를 표시합니다.
iface eth0 inet static
address 192.168.3.3
netmask 255.255.255.0
gateway 192.168.3.1
dns-search example.com
dns-nameservers 192.168.3.45 192.168.8.10
8.8.8.8과 같이 원하는 IP의 192.168.3.45 192.168.8.10을 변경합니다.
https://help.ubuntu.com/14.04/serverguide/serverguide.pdf
38 페이지
답변
- ‘네트워크 연결’검색
-
열어 봐
-
그런 다음 WiFi 또는 이더넷 또는 사용중인 것을 선택하고 편집을 클릭하십시오. 당신은 이것을 얻을 것입니다 :
-
탭에서 ipv4를 선택하십시오
- 방법으로 만 주소를 선택하십시오
-
아래에 DNS 이름을 입력하고 저장하십시오
-
끝났어
답변
아직 언급되지 않은 빠르고 더러운 해결 방법은 resolv.conf
파일을 편집 한 직후 파일 에서 변경할 수없는 플래그를 설정하는 것입니다.
$ sudo nano /etc/resolv.conf
이것을 추가하고 저장하십시오 :
nameserver 8.8.8.8
그때:
$ sudo chattr +i /etc/resolv.conf
그 트릭을해야합니다. 나는 내 시스템에서도 이것을한다.
답변
Linux에서 DNS 구성
리눅스에서의 DNS 사용 은 인터넷 도메인 네임 시스템 (DNS)에 대한 액세스를 제공하는 C 라이브러리의 루틴 세트를 통해 이루어집니다 . 확인자 구성 파일 ( resolv.conf
)에는 프로세스가 처음 호출 할 때 확인자 루틴이 읽는 정보가 포함되어 있습니다. 간단히 말해 DNS를 요청하는 각 프로세스는 /etc/resolv.conf
라이브러리 를 읽 습니다. NSS 는이 위에 쌓여 있으며에 의해 구성됩니다 /etc/nsswitch.conf
.
Linux DNS 구성 은 파일에 /etc/resolv.conf
있지만 에서 DNS 구성 파일을 자동으로 관리하고 처리하려는 많은 프로그램 / 서비스가 /etc/resolv.conf
있습니다. 경우에 따라이 파일을 직접 관리 할 수도 있습니다. DNS를 관리하는 각 프로그램 / 서비스는 /etc/dnsmasq.conf
(dnsmasq 서비스 용)과 같은 자체 구성 파일을 가지고 있으며 연결 변경 및 / 또는 기타 이벤트에서 DNS 구성을 추가합니다 … 빠른 해결책은 DNS 구성 파일을 잠그는 chattr +i /etc/resolv.conf
것이지만 권장하지는 않습니다 어떤 경우에는 (dnsmasq / network-manager / resolvconf / etc와 같은) DNS를 사용하여 모든 프로그램 / 서비스를 올바르게 설정하는 것이 더 나은 솔루션입니다.
DNS 제어권 회복
다음은 resolv.conf의 제어를 되찾고 덮어 쓰지 않도록 하는 전체 설정 목록입니다 ( resolv.conf 이외의 다른 위치에서 DNS를 비활성화 / 설정하는 방법 ). resolvconf는 resolv.conf와는 독립적 인 프로그램입니다. 시스템 / 구성에 따라 여기에 나열된 하나 이상의 프로그램이 없을 수 있습니다.
1. Resolvconf :
구성 파일
cat /etc/resolvconf/resolv.conf.d/head
nameserver 8.8.4.4
cat /etc/resolvconf/resolv.conf.d/base
nameserver 8.8.4.4
구성 업데이트
sudo resolvconf -u
resolvconf 비활성화
systemctl disable --now resolvconf.service
2. Dnsmasq 서비스 :
구성 파일
cat /etc/dnsmasq.conf
server=1.1.1.1
server=8.8.4.4
구성 업데이트
sudo systemctl restart dnsmasq.service
3. 네트워크 관리자 :
구성 파일
/etc/NetworkManager/*
DNS 비활성화
$ cat /etc/NetworkManager/conf.d/no-dns.conf
[main]
dns=none
DNS 사용
$ cat /etc/NetworkManager/conf.d/dns.conf
[main]
dns=default
[global-dns]
searches=example.com
[global-dns-domain-*]
해결 된 서비스 사용
$ cat /usr/lib/NetworkManager/conf.d/resolved.conf
[main]
dns=systemd-resolved
resolvconf 사용
$ cat /usr/lib/NetworkManager/conf.d/resolvconf.conf
[main]
rc-manager=resolvconf
구성 업데이트
systemctl restart NetworkManager.service
4. 네트워크 인터페이스 :
구성 파일
$ cat /etc/network/interfaces
#nameservers
# or dns-search like so
# dns-search x.y
dns-nameservers 4.4.4.4 8.8.8.8
구성 업데이트
reboot
5. DHCP 클라이언트 :
구성 파일
$ cat /etc/dhcp3/dhclient.conf
supersede domain-name-servers <dns_ip_address1>,<dns_ip_address2>;
구성 업데이트
reboot
6. Rdnssd 서비스 :
rdnssd 비활성화
systemctl disable --now rdnssd.service
7. 해결 된 서비스 :
해결 비활성화
systemctl disable --now systemd-resolved.service
8. Netconfig :
구성 파일
/etc/sysconfig/network/config
netconfig 비활성화
cat /etc/sysconfig/network/config
NETCONFIG_DNS_POLICY=""
구성 업데이트
reboot
DNS 서버 설정
/etc/resolv.conf
구성 예
#Cloudflare
nameserver 1.0.0.1
#Google
#nameserver 8.8.8.8
#nameserver 8.8.4.4
#Cloudflare
#nameserver 1.1.1.1
#Classic Config
#nameserver 192.168.1.1
#search lan