콘텐츠로 건너뛰기

dhclient-script overwrites resolv.conf 초기화 방지

    지워도 지워도 계속 똑같은 resolv.conf 파일!!

    ; generated by /usr/sbin/dhclient-script
    search ap-northeast-2.compute.internal
    nameserver 172.31.0.2

    아마존 AWS EC2 사용자라면 가상화 VM 에서 사설 아이피로 인한 DHCP 환경으로 /usr/sbin/dhclient-script 스크립트에 의해서 자동으로 초기화가 됩니다.

    vi /sbin/dhclient-script

    vi 편집 프로그램으로 주석 하나 달아주면 해결됩니다.

    # After dhclient brings an interface UP with a new IP address, subnet mask, 
        # and routes, in the REBOOT/BOUND states -> search for "dhclient-up-hooks".
        if [ "${reason}" = "BOUND" ] || [ "${reason}" = "REBOOT" ] ||
           [ ! "${old_ip_address}" = "${new_ip_address}" ] ||
           [ ! "${old_subnet_mask}" = "${new_subnet_mask}" ] ||
           [ ! "${old_network_number}" = "${new_network_number}" ] ||
           [ ! "${old_broadcast_address}" = "${new_broadcast_address}" ] ||
           [ ! "${old_routers}" = "${new_routers}" ] ||
           [ ! "${old_interface_mtu}" = "${new_interface_mtu}" ]; then
    
            if [ -x ${ETCDIR}/dhclient-${interface}-up-hooks ]; then
                . ${ETCDIR}/dhclient-${interface}-up-hooks
            elif [ -x ${ETCDIR}/dhclient-up-hooks ]; then
                . ${ETCDIR}/dhclient-up-hooks
            fi
        fi
    
        #제 경우에는 626번째 라인이었습니다.
        #make_resolv_conf
    
        if [ -n "${new_host_name}" ] && need_hostname; then
            hostname ${new_host_name} || echo "See -nc option in dhclient(8) man page."
        fi
    
        if [[ ( "${DHCP_TIME_OFFSET_SETS_TIMEZONE}" = [yY1]* ) &&
              ( -n "${new_time_offset}" ) ]]; then
            # DHCP option "time-offset" is requested by default and should be
            # handled.  The geographical zone abbreviation cannot be determined
            # from the GMT offset, but the $ZONEINFO/Etc/GMT$offset file can be
            # used - note: this disables DST.
            ((z=new_time_offset/3600))
            ((hoursWest=$(printf '%+d' $z)))
    
            if (( $hoursWest < 0 )); then
                # tzdata treats negative 'hours west' as positive 'gmtoff'!
                ((hoursWest*=-1))
            fi
    
            tzfile=/usr/share/zoneinfo/Etc/GMT$(printf '%+d' ${hoursWest})
            if [ -e ${tzfile} ]; then
                cp -fp ${tzfile} /etc/localtime
    

    주석처리하고 네트워크 재실행 하면 이때부터 resolv.conf 계속 유지됩니다.

    검색 해보면 chmod 444 준다니 여러 방법 보이지만 버전이 오르면서 그러한 부분들도 모두 되지 않습니다.

    2023년 2월 기준으로 현재는 위 방법으로 해결하고 있으니 도움되셨으면 합니다.

    모든 부분들을 직접 해결하다보니 시간이 많이 걸리며 더디게 걸어가고 있지만…

    계속 성장중입니다.

    AWS EC2 인스턴스에서 네임서버 운영중인데 resolv.conf 파일이 변하니깐 DNS가 오락가락 했네요.

    서버때문에 2~3개월 다른일 못하고 있네요.

    곧 마무리되는대로 다시 돌아오겠습니다.

    오늘은 백업서버 자동화, DNS 서버 안정화 작업했습니다.

    일단 모두 해결되었습니다.