환경 변수를 사용하면 HOSTALIASES
사용자가 이를 수행할 필요 없이 자신의 호스트 별칭을 설정할 수 있습니다 sudoedit
/etc/hosts
(자세한 내용은 예를 들어http://blog.tremily.us/posts/HOSTALIASES/)
그러나 /etc/hosts
IP 주소를 이름으로 별칭을 지정할 수 있고 이름을 이름으로 별칭을 지정할 수 있지만 HOSTALIASES
이름 별칭만 작동하는 것 같습니다.
나는 시도했다:
cat > .hosts
work 10.10.0.1
g www.google.com
^D
export HOSTALIASES=$PWD/.hosts
지금
curl g #works
curl 10.10.0.1 #works
curl work #doesn't work
curl work
쓰기 권한이 없는 파일( )을 편집하지 않고도 작업을 완료 할 수 있나요 /etc/hosts
?
답변1
HOSTALIASES
이 기능은 glibc의 파서 함수에 의해 제공됩니다 gethostbyname()
. 이 함수에서는 별칭 조회 결과가 hosts:
에 지정된 후속 libnss 모듈 호출 에 변경 없이 전달되므로 /etc/nsswitch.conf
이를 처리할 수 있는 모듈이 없으면 gethostbyname()
실패합니다 .
10.10.0.1
대부분의 프로그램에서는 이전에 처리된 숫자 주소 기호(예: 및 )가 호출됩니다 .2a00:1450:400c:c05::67
inet_aton()
inet_pton()
getaddrinfo()
gethostbyname()
일부 DNS 서버(dnsmasq 포함)는 숫자 주소 문자열이 적용된 쿼리에 유효한 주소 레코드를 반환합니다 inet_aton()
. 예를 들어 10.10.0.1
FQDN이 포함된 쿼리에 대해 A 레코드를 반환합니다 10.10.0.1.
. 그러나 BIND를 포함한 다른 서버는 그러한 쿼리에 대해 NXDOMAIN만 반환합니다. 따라서 work 10.10.0.1
대체품 HOSTALIASES
을 정의하기 위해 이에 의존할 수 없습니다 /etc/hosts
.
한 가지 가능한 해결책은 공용 DNS 서비스를 활용하는 것입니다.xip.io모든 IPv4 주소의 확인 가능한 FQDN을 가져옵니다. 예를 들어 work
다음과 같이 정의 할 수 있습니다 10.10.0.1
.
work 10.10.0.1.xip.io