버그: resolv.conf 자동 완성 검색 및 네임서버 조회: 영구 또는 임시(시스템이 시작될 때마다 실행됩니다.)
권장 솔루션: resolvconf 패키지는 자동 완성 문제를 해결합니다(resolv.conf와 혼동하지 마십시오).
-https://www.youtube.com/watch?v=NEyXDdBrw2c
-https://unix.stackexchange.com/q/209760/441088
-https://unix.stackexchange.com/q/362587/441088
내 문제는 이전 문제(441088)와 동일합니다. 단, resolv.conf가 검색 및 이름 서버를 업데이트(자동 완성)하는 데 더 이상 필요하지 않습니다.
#sudo vi 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
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 84.200.70.40
nameserver 84.200.69.80
nameserver 192.168.4.1
nameserver 192.168.4.1
nameserver 192.168.1.1
nameserver 1.1.1.1
search autopopulated-isp-router 1.1.1.1
분명히 기존 이름 서버 아래에 자동 완성 이름 서버를 추가하는 것뿐입니다. (이것은 약간 교묘하므로 resolvconf 설정에 자동으로 추가되는 네임서버 및 검색 서버의 자동 채우기를 포착하려면 resolv.conf를 계속 확인해야 합니다.)
네임서버가 자동으로 채워지는 것을 방지하고 isp IP 주소를 사용하여 검색하도록 resolv.conf를 어떻게 변경합니까?
시험을 마친:
# service networking stop && service network-manager start
# service networking start && service network-manager stop
네트워크 관리자:
네트워크와 네트워크 관리자가 모두 Wicd를 중지했는데
wicd는 없었고 nmtui만 있었습니다.네트워크 부팅그리고 나서네트워크 관리자가 시작됩니다
debian 10.1 및 kali 2020에서 재현 가능(모든 버전 - 모두 시도)
DHCP 또는 정적 구성을 사용하여 복제 가능(예, 로컬 게이트웨이 네트워크 라우터 및 네트워크의 다른 IP를 핑할 수 있음)
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: files systemd
group: files systemd
shadow: files
gshadow: files
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname mymachines
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
답변1
여기서 문제는 resolv.conf 파일을 채우는 NetworkManager에 있다고 생각합니다.
DNS 업데이트를 비활성화합니다.
1- 편집기를 사용하여 conf 파일을 엽니다.
sudo vi /etc/NetworkManager/NetworkManager.conf
2- 위의 내용을 [main] 섹션에 추가합니다.
dns=none
3- 네트워크 관리자를 다시 시작합니다.
sudo service network-manager restart
마지막 수정 이후:
여기에서 볼 수 있듯이 NetworkManager.service를 사용하고 있습니다.
A- 인터페이스가 dhcp를 사용하는 경우 DHCP 서버의 DNS 설정을 확인하십시오.
cat /var/lib/NetworkManager/*.lease | grep 'domain-name-servers'
이 경우 필요한 DNS 항목을 직접 설정하고 DHCP가 해당 항목을 제공하지 못하도록 비활성화할 수 있습니다.
# Edit dhclient configuration file
vi /etc/dhcp/dhclient.conf
# Set the fixed your dns server entries
supersede domain-name-servers 84.200.69.80, 84.200.70.40;
B - 분명히 /etc/resolv.conf는 systemd-resolved 서비스에 의해 관리됩니다.
따라서 이 서비스를 비활성화하거나 구성을 실행하고 편집하도록 할 수 있습니다./etc/systemd/resolved.conf, 비활성화하려면 다음을 수행하십시오.
1- 먼저 현재 systemd-resolved.conf 파일의 출력을 확인하고 systemd-resolved가 실행 중인지 확인합니다.
sudo cat /run/systemd/resolve/resolv.conf
sudo systemd-resolve status
2- 서비스 중지/비활성화:
sudo systemctl disable systemd-resolved.service
sudo systemctl stop systemd-resolved.service
3- 더 이상 systemd-resolved 또는 NetworkKService에 의해 관리되지 않도록 NetworkManager에서 DNS 처리 모드를 설정합니다(/etc/NetworkManager/NetworkManager.conf 편집).
[main]
dns=none
4- 심볼릭 링크 /etc/resolv.conf -> /run/systemd/resolve/resolv.conf를 삭제합니다.
sudo unlink /etc/resolv.conf
5- 네트워크 관리자를 다시 시작합니다.
sudo systemctl restart NetworkManager
6- resolv.conf 파일을 다시 만듭니다.
sudo touch /etc/resolv.conf
sudo chown root:root /etc/resolv.conf
sudo chmod 644 /etc/resolv.conf
7- resolv.conf 파일을 수동으로 채웁니다.
echo 'nameserver 84.200.70.40
nameserver 84.200.69.80
nameserver 192.168.4.1
nameserver 192.168.4.1
nameserver 192.168.1.1
nameserver 1.1.1.1' > /etc/resolv.conf
답변2
resolv.conf
파일을 영구적으로 변경 하는 스크립트를 만들었습니다 .
#!/usr/bin/env bash
f="/etc/resolv.conf"
chattr -i "$f"
rm -f "$f"
echo "nameserver 1.1.1.1" >> "$f"
echo "nameserver 8.8.8.8" >> "$f"
chattr +i "$f"
이 스크립트는 파일을 변경할 수 없도록 만들어서 변경하거나 삭제할 수 없도록 합니다. 파일을 삭제하려면 다음 명령을 사용해야 합니다.
chattr -i /etc/resolv.conf
그런 다음 파일을 삭제하십시오.