/etc/hosts 일치는 어떻게 작동합니까?

/etc/hosts 일치는 어떻게 작동합니까?

Linux 및 기타 *nix 플랫폼에서 /etc/hosts 항목이 어떻게 일치하는지 궁금합니다(차이가 있는 경우).

특히 "게임 시간"이 항목 수에 따라 직접적으로 확장되는지 확인하는 데 관심이 있습니다.

첫 번째 일치 항목이 발견되면 "일치"가 중지됩니까? 아니면 일치하는 항목이 발견된 경우에도 모든 항목을 사용합니까?

매우 감사합니다

답변1

Linux에서는 /etc/hosts가일치할 때까지 구문 분석항목을 해결합니다. 이것은 또한어떻게 처리되나요?1983년에 출시된 4.3 BSD는 현대 Unix IP 스택의 최초의 범용 버전이었습니다.

BSD 4.3부터 인터넷에 연결된 전체 호스트 목록이 중앙 네트워크 정보 센터에 보관되고 번호가 매겨져 있다는 점을 기억하는 것이 중요합니다.약 325명에 불과. 연결된 호스트는 NIC에서 인터넷의 모든 호스트 목록을 검색하며 수백 줄의 선형 검색이면 충분합니다. 이 무렵 IETF는 이것이 확장성이 좋지 않다는 것을 깨달았습니다.제안된 도메인 이름 시스템. 그 후 /etc/hosts에 수백 줄 이상이면 "잘못하고 있는 것"입니다.

또한 /etc/hosts는 libc(사용자 공간 라이브러리)에 의해 처리됩니다. 커널은 다음을 제외하고는 아무것도 존재하지 않는다는 것을 모릅니다.sockaddr. 따라서 이 답변은 /etc/hosts 처리에만 적용되며 특히 캐싱 동작과 시간 복잡성이 크게 달라지는 일반적인 이름 확인 시스템을 무시합니다.

답변2

/etc/hosts 일치는 어떻게 작동합니까?

정보를 읽을지 여부 에 따라 결정됩니다 /etc/nsswitch.conf./etc/host.conf/etc/hosts

@msw가 말했듯이 nsswitch.conf를 읽고 Tag를 읽는 libc(사용자 공간 라이브러리)에 의해 처리됩니다."호스트:filedns" , 그 다음에문서독서를 의미 /etc/hosts하며도메인 이름 서버방법/etc/resolve.conf

이제 클릭한다고 가정해 보겠습니다.http://www.google.com파이어폭스에서는

  1. 그런 다음 Firefox는 먼저 로컬 확인자( libresolve.so )의 도움으로 google.com을 확인한 다음
  2. 우선순위를 먼저 확인하세요문서그리고도메인 이름 서버,
  3. 기본적으로 "/etc/hosts" 파일을 검색합니다.
  4. google.com이 일치하지 않으면 "/etc/resolv.conf"를 참조합니다. 이 파일에서 nameserver구성되지 않은 경우 태그를 확인한 다음 확인자는 포트 53의 localhost에 DNS 쿼리를 보냅니다.
  5. 네임서버가 가정을 정의하면 nameserver 8.8.8.8쿼리를 예를 들어 다음으로 보냅니다. dig google.com @8.8.8.8. 물론 이제 공개 DNS에서 쿼리에 대한 답변을 얻을 수 있습니다.

편집 1 사용자는 "HOSTALIASES" 변수를 사용하여 자신의 호스트 파일을 유지 관리할 수도 있으므로 /etc/hosts를 읽기 전에 먼저 이 파일을 확인합니다.

전임자.

echo "fb  www.fb.com" >> ~/my_hosts
echo "export HOSTALIASES=~/my_hosts" >> ~/.bashrc
source ~/.bashrc 

답변3

필요한 두 가지 기능은 gethostbyname()gethostbyaddr()에 설명되어 있습니다.http://linux.die.net/man/3/gethostbyname아직 사용 가능한 것이 있다면 예를 nslookup들어 사용해 보세요 . nslookup www.google.com하나의 이름으로 인해 다른 IP 주소가 나타날 수 있습니다. 다른 방법도 정상입니다. 동일한 IP 주소가 다른 호스트 이름을 가리킬 수 있습니다. 이를 확인하려면 /etc/hosts에 IP 주소와 호스트 이름을 추가하고 위 기능을 사용하여 확인하면 됩니다.

관련 정보