
호스트의 확인된 주소를 수정하려면 /etc/hosts를 변경할 수 있습니다. /etc/hosts를 실제로
수정하지 않고 단일 스크립트를 실행할 때 해당 기능을 갖고 싶습니다.
$HOST=foo.bar:10.0.1.256 ping foo.bar
/etc/hosts에 항목을 갖는 것과 동일
10.0.1.256 foo.bar
하며$ ping foo.bar
이것이 가능합니까?
답변1
중복/etc/hosts를 보완하기 위해 사용자별 호스트 파일을 생성할 수 있습니까?, 여기서는 HOSTALIASES의 사용을 설명합니다.
기본적으로 자신의 호스트 파일을 가리키는 HOSTALIASES 환경 변수를 설정합니다.
자세한 내용은호스트 이름(7) 매뉴얼 페이지
답변2
사용자 호스트 파일이 없습니다. 복잡한 바인드 설정은 다른 내부 IP 뒤에서 애플리케이션을 호스팅하는 데 작동합니다. 그러나... 애플리케이션은 DNS를 건너뛸 수 있어야 합니다...
http/https 호출을 수행하는 애플리케이션에 대해 이 작업을 수행하려는 경우 DNS를 완전히 건너뛸 수 있습니다. http 요청을 할 때 도메인이 헤더에 복사됩니다. 헤더를 재정의하여 이 단계를 건너뛸 수 있습니다.
예를 들어;
wget --header="호스트: www.example.com" "http://127.0.0.1/bob/is/cool"
그러면 http 요청이 localhost로 전송되지만 http 요청은 127.0.0.1이 아닌 www.example.com에 대한 것입니다...
(DNS를 우회하고 올바른 도메인에 대해 유효한 http 호출을 수행했습니다).
어떤 이유로 요청 시 호스트와 같은 식별자가 없는 대체 TCP 서비스인 경우 미친 바인드 설정이 작동합니다(애플리케이션의 src IP를 거부하면 다른 DNS 서비스에서 해결됩니다).
또 다른 해결책은 커널 방화벽을 사용하는 것입니다.
애플리케이션을 다른 LAN이나 루프백 주소로 분할하면 소스 패킷 주소를 기반으로 다른 IP로 DNAT를 수행할 수 있습니다.