서비스 이름을 포트로 확인할 수 있는 데몬이 있나요?

서비스 이름을 포트로 확인할 수 있는 데몬이 있나요?

DNS 서버는 호스트 이름을 IP 주소로 확인합니다. 내 말이 맞다면 프로그램은 getaddrinfo()DNS 서버를 호출한 다음 이를 확인하기 위해 호출하여 호스트 이름을 IP 주소로 확인할 수 있습니다.

SysV init에는 DNS 서버처럼 서비스 이름을 포트로 확인하는 데몬이 있습니까? 독서를 통해서 그렇게 됩니까 /etc/services? getaddrinfo()구문 분석을 수행하기 위해 데몬도 호출 됩니까 ?

나는 inetd읽기가 /etc/services 어떤 소켓을 수신할지 결정하는 것임을 알고 있습니다. 하지만 inetd서비스 이름을 포트로 확인하는 것 같지는 않습니다. 그렇죠?

감사해요.

답변1

DNS 는 getaddrinfo()정의된 경우에만 호출됩니다. nsswitch.conffiles항목은 에서 직접 읽습니다 /etc/hosts.

기본적으로 "네임 서비스 전환" 기능(NSS)을 살펴보고 /etc/nsswitch.conf아마도동적 로딩"libnss" 루틴. 예를 들어, 에서 언급할 /lib/x86_64-linux-gnu/libnss_files.so.2때 로드되는 라이브러리가 있을 수 있습니다.filesnsswitch.conf

호스트의 경우 해당 nsswitch.conf줄은 다음과 같이 읽을 수 있습니다.

hosts: files dns

이는 이름 서비스 확인자에게 "nss_files" 라이브러리(에서 검색됨 /etc/hosts)를 로드하거나, 실패할 경우 "nss_dns" 라이브러리를 로드하도록 지시합니다. 그것은저것DNS 서버를 호출하는 라이브러리입니다.

서비스의 경우 nsswitch.conf 행은 다음과 같습니다.

services:       files ldap

그러면 "nss_files" 라이브러리( 에서 검색됨 /etc/services)가 로드되고, 로드가 실패하면 "nss_ldap" 라이브러리가 로드됩니다.

이름 확인 방법을 결정하는 다양한 백엔드(file, db, ldap, nis, compat, dns...)가 있습니다.

inet다음과 같은 항목의 경우

service time
{
...
}

timeNSS 맵에서 조회할 값입니다 services. filesin을 사용 하면 nsswitch.conf선이 보일 것입니다.

time        37/tcp      timserver

inetdTCP 포트 37에 바인딩하라고 지시합니다 .

관련 정보