무선 로밍으로 인해 resolv.conf가 엉망이 됨

무선 로밍으로 인해 resolv.conf가 엉망이 됨

이건 내 무선 네트워크야interfaces

#auto wlp1s0
allow-hotplug wlp1s0
iface wlp1s0 inet manual
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#        up /usr/sbin/wondershaper -a wlan0 -d 9500 -u 15000
#        down /usr/sbin/wondershaper -a wlan0 -c

allow-hotplug RWB
iface RWB inet dhcp

여기서 RWBAP는 다음과 같이 정의됩니다./etc/wpa_supplicant/wpa_supplicant.conf

dhclient이 파일은 AP에 연결할 때마다 업데이트됩니다 /etc/resolv.conf. 즉, 한 발 물러서서 RWB다른 장치(유선 이더넷 포함)에 연결하면 IP 주소가 resolv.conf더 이상 라우팅 가능하지 않기 때문에 DNS가 실패합니다.

dhcp순진한 해결 방법은 클라이언트 업데이트를 방지하는 것이지만 resolv.conf확실히 이 상황에 대한 문제를 해결할 수 있는 일반적인 구성이 있습니다. 무엇입니까?

답변1

아직 댓글을 달 수 없으므로 답변은 다음과 같습니다. 이 YouTube에서는 resolv.conf를 사용하여 Ubuntu/Debian에서 영구 DNS 이름 서버를 설정하는 방법을 보여줍니다.

https://www.youtube.com/watch?v=NEyXDdBrw2c

@Hack Saw가 언급한 것처럼 systemd는 해결.conf에서 DNS 이름 서버를 영구적으로 변경하는 데 문제를 일으킬 수 있는 해결.conf를 관리할 수 있습니다.

답변2

man페이지 에서 dhclient-

BUGS
       If more than one interface is being used, there's no obvious way to avoid
clashes between server-supplied configuration parameters - for example, the stock
dhclient-script rewrites /etc/resolv.conf ...

dhclientDHCP 이벤트가 발생할 때 쉘 스크립트를 사용하여 시스템을 구성하십시오. dhclient덮어쓰기를 방지하려면 resolv.conf이 스크립트의 기본 동작을 수정해야 합니다. 하지만 먼저 여러 네트워크 인터페이스에 대한 DNS 정보를 관리할 수 있는 유사한 것을 설치하고 실행해야 합니다 systemd-resolved.

dhclient다음은 덮어쓰는 대신 DNS 정보를 업데이트하도록 수정하는 방법의 예 입니다 .systemd-resolved/etc/resolv.conf

/etc/dhcp/dhclient-enter-hooks.d/dns-update

#!/bin/sh

make_resolv_conf(){
    # DHCPv4
    if [ -x /usr/bin/systemd-resolve ]; then
        if [ -n "$new_domain_name" ]; then
            systemd-resolve --interface="$interface" --set-domain="${new_domain_name%% *}"
        fi
        if [ -n "$new_domain_name_servers" ]; then
            for nameserver in $new_domain_name_servers; do
                systemd-resolve --interface="$interface" --set-dns="$nameserver"
            done
        fi
    fi
}

dhclient이 스크립트는 DHCP에서 받은 시스템 구성을 적용하고 스톡을 덮어쓰기 전에 호출됩니다 make_resolv_conf().

/etc/dhcp/dhclient-enter-hooks.d운영 체제에 따라 디렉토리가 없을 수도 있습니다 . 이 경우 스크립트를 /etc/dhclient-enter-hooks.

관련 정보