컴퓨터 시스템 (Linux)에 호스트 이름이 하나만 있습니까?


15

hostname 시스템의 DNS 이름을 표시하고 호스트 이름 또는 NIS 도메인 이름을 표시하거나 설정하는 데 사용됩니다.

컴퓨터 시스템 (Linux)에 호스트 이름이 하나만 있습니까?

가상 호스팅에서 여러 호스트 이름을 웹 서버의 다른 루트 디렉토리로 해석 할 수 있습니다. 컴퓨터 시스템 (Linux)에 호스트 이름이 하나만있을 수있는 경우 가상 호스팅은 어떻게 가능합니까?

감사.


DNS A 또는 AAA 레코드는 여러 도메인에 대해 동일한 IP 주소를 가리 킵니다. 머신의 호스트 이름이 반드시 중요한 것은 아닙니다.
RubberStamp

(1) hostname호스트 이름을 IP 주소로 확인하는 데 사용 된 출력이 있습니까? (2) A는 IPv4 주소, AAAA IPv6을 의미합니다. AAA 란 무엇입니까?
모두에 대한 StackExchange

mDNS 서비스 (예 : avahi시스템 호스트 이름에 따라 다름) 이 경우 hostname.local머신의 로컬 IP 주소로 확인됩니다. 누군가가 내 첫 번째 주석의 확장 인 답변을 썼습니다 ... 브라우저 알림에 너무 동시입니다.
RubberStamp

AAA는 'A'짧은 오타입니다
RubberStamp

가상 호스트는 호스트 이름과 관련이 없습니다. 순전히 웹 서버 동작에 달려 있습니다. 서버는 HTTP 요청 헤더의 다른 호스트 필드에 다르게 응답합니다. 일반적인 웹 서버가 가상 호스트 기능을 제공하기 위해 DNS 또는 호스트 이름과 관련된 작업을 수행하지 않을 것이라고 생각합니다.
炸鱼 薯条 德里克

답변:


26

예, 아니요 호스트 이름이라고하는 두 가지 별개의 것입니다.

"내부"호스트 이름 은 기본적으로 커널에 의해 유지되는 문자열입니다. 이것은 hostname명령 (또는 gethostname()호출)에 의해 반환되는 것이며 시스템 (*) 내에서 고유 합니다.

프로그램이 실행중인 시스템의 식별자를 출력하려고 할 때 주로 사용됩니다. 예 \h를 들어 Bash에서 PS1호스트 이름으로 확장됩니다. 마찬가지로 syslog 스타일 로그 파일에는 로그 항목의 호스트 이름도 포함됩니다.

(* Stephen Kitt가 언급 한 것처럼 네임 스페이스 를 사용하면 동일한 시스템의 프로세스에 다른 호스트 이름을 표시 할 수 있습니다. 주로 네임 스페이스 가 고유 한 시스템처럼 작동하는 컨테이너에 사용됩니다.)

그런 다음 다른 시스템에서 다른 시스템의 IP 주소를 조회하는 데 사용하는 DNS 이름도 있습니다 . 동일한 IP 주소 및 동일한 호스트를 가리키는 둘 이상의 DNS 이름이있을 수 있습니다.

내부 호스트 이름과 DNS 이름이 같을 필요는 없습니다. 누군가가 IP 주소로 orange(*) 호출하기로 결정한 웹 서버를 가지고 있다고 가정하십시오 192.0.2.9. 그것은 두 개의 서로 다른 도메인을 제공 할 수와 DNS는이하도록 설정 될 수 www.example.orgwww.example.com에게 모두 포인트 192.0.2.9시스템의 내부 호스트 이름이 될 수있는 반면, orange.example.org아니면 그냥 orange. 이 경우, DNS 설정은 일반적으로도 할 것이다 역방향 조회192.0.2.9이름에 점 등을 orange.example.org하지만, 그 힘 아무것도 없다.

(* 그들은 과일 이름을 따서 서버 이름을 짓고 싶기 때문에 누군가가 사용할 수도 webserver1있지만 실제 도메인 중 하나의 이름을 따서 지정할 필요는 없습니다.)

또한 가상 호스팅을 사용하려면 브라우저가 웹 서버에 액세스하려는 사이트 이름을 알려 주어야합니다. 그렇지 않으면 서버는 클라이언트가 도달하려고 시도한 가상 사이트를 알 수 없습니다. HTTP에는 Host헤더 가 있습니다.


DNS 이름과 내부 호스트 이름의 차이점은 mDNS 프로토콜 (예 : avahi 데몬에 의해 구현 됨 )과 다른 검색 프로토콜입니다. mDNS를 사용하면 호스트가 동일한 네트워크의 다른 모든 호스트에 이름 정보를 쿼리하고 DNS에서 명시 적으로 설정하지 않고도 다른 호스트에서 자신의 호스트 이름을 볼 수 있습니다.


감사. (1) "DNS 설정은 보통 orange.example.org라는 이름으로 192.0.2.9를 가리 킵니다."특정 호스트 이름에 대한 IP 주소를 확인하지 않는 이유는 무엇입니까? (2) hostname호스트 이름을 IP 주소로 확인하는 데 사용 된 출력이 있습니까?
모두에 대한 StackExchange

(2) ... 라우터와 모뎀을 사용하여 ISP에서 가정에 로컬 Wi-Fi 네트워크를 설정할 때 네트워크의 기계는 hostname명령 의 출력으로 식별 할 수 있습니까? 라우터 hostname가 네트워크에서 개인 IP 주소 의 출력을 확인하기 위해 DNS처럼 작동합니까 ?
모두에 대한 StackExchange

2
(1)과 마찬가지로 IP 주소를 가져 와서 이름을 반환하는 역방향 조회도 있습니다. (하나의 이름과 하나의 주소를 가진 시스템의 경우, 명확성을 위해 두 가지를 모두 해결하고자합니다)
ilkkachu

3
소규모 네트워크에서 사용 중일 수 있습니다 mDNS. 더 좋든 나쁘 든 시스템 소유자는 DNS 서버에 등록 할 필요없이 로컬 네트워크의 다른 시스템에서 액세스 할 수있는 자신의 호스트 이름을 선택할 수 있습니다.
Mark Plotnick 1

2
많은 홈 네트워크에서 로컬 라우터는 DNS 확인자 역할을합니다. 호스트는 DHCP를 사용하여 주소를 요청할 때 호스트 이름을 보내며 라우터는 해당 이름을 기억하고 네트워크의 모든 호스트에 대해 이름을 확인합니다. Mark와 RubberStamp가 언급했듯이 LAN (특히 프린터)에서 서비스를 검색 할 수있는 Bonjour (Avahi에서 구현)도 있습니다. 호스트는 여러 IP 주소를 가질 수 있으며 호스트 이름은 이제 네임 스페이스이므로 프로세스는 동일한 호스트에서 다른 호스트 이름을 볼 수 있습니다.
Stephen Kitt

7

컴퓨터 시스템 (Linux)에 호스트 이름이 하나만 있습니까?

아니.

[누군가가 자신의 주소를 가리키는 DNS 레코드를 가짐으로써 호스트가 원하는 이름을 주거나 이름에 대해 하나 이상의 별칭을 가질 수 /etc/hosts있거나 이름이 실제로 무엇인지에 대한 철학적 고려 사항을 완전히 무시할 것 입니다.]

Linux 시스템에서 호스트 이름은 기본적으로 하위 프로세스에 의해 상속되지만 프로세스와 함께 unshare(2)또는 플래그 clone(2)를 사용하여 분리 될 수있는 프로세스 별 자원 ( "UTS 네임 스페이스")입니다 CLONE_NEWUTS. namespaces(7)맨 페이지를 살펴 봐야합니다 .

pid, 포트 번호, 마운트 포인트 등과 같이 호스트 이름은 더 이상 전역 식별자가 아니며 주소 공간 (가상 메모리) 또는 프로세스의 파일 디스크립터 테이블과 동일하게 가상화 될 수 있습니다.

가상 호스팅에서 여러 호스트 이름을 웹 서버의 다른 루트 디렉토리로 해석 할 수 있습니다. 컴퓨터 시스템 (Linux)에 호스트 이름이 하나만있을 수있는 경우 가상 호스팅은 어떻게 가능합니까?

가상 호스팅은 완전히 다른 것으로, 일반적으로 웹 서버에서 실행되고 http 헤더의 값에 따라 다른 디렉토리 / 자원을 제공 하는 와일드 카드 DNS 레코드 (예 : *.foo.com=> 13.13.13.13)를 구성하여 수행됩니다 [1] (높은 구성 가능) 대부분의 웹 서버에 따라 서로 다른 자원을 제공 할 수 있는 HTTP 헤더뿐 아니라 ). 이 모든 것에서 웹 서버가 실행되는 시스템의 OS는 아무런 역할을하지 않습니다.13.13.13.13Host:Host:

[1] 또는 https의 경우 서버 이름 표시 값에 따라 동일한 웹 서버가 서로 다른 가상 호스트에 대해 서로 다른 인증서를 사용할 수 있습니다.


이것에 대해 당신의 의견에 동의하지 않습니다. 가상 호스팅의 경우 일반적으로 단일 호스트를 가리키는 특정 cname 레코드 세트가 있습니다. 도메인 내에 가상 호스트가 필요한 시스템이 많으므로 와일드 카드 DNS 레코드를 사용하지 않습니다. UTS 네임 스페이스를 제외하고 (어쨌든 이것이 널리 사용됩니까?), 주어진 서버에 대해 단일 호스트 이름을보고하는 hostnamectl이 있습니다. DNS와 hostnamectl은 직교하며 서로 관련이 없습니다.
doneal24

1
@ DougO'Neal 당신은 무엇에 동의하지 않습니까? 와일드 카드 DNS 레코드는 내가 설명하는 방식으로 사용됩니까? 그들은 당신이 그것을 좋아하든 그렇지 않든간에 그렇게 많이 사용됩니다. uts 정보가 리눅스에서 프로세스별로 가상화된다고? 그것이 바로 그 방법입니다. 네임 스페이스가 통조림 컨테이너화 / 가상화 솔루션에서만 사용 / 사용된다는 아이디어 (다른 답변에서 제안한 바와 같이)는 미안하지만 "여자 아이 만 가지고 노는 인형"또는 "수동 변속기는 대형 트럭에서만 사용됩니다" 품질 ;-)
엉클 빌리

1

일반적으로 / etc / hostname에 단일 호스트 이름을 설정합니다. 그리고 / etc / hosts에 많은 도메인 이름을 설정했습니다.

UTS 네임 스페이스를 사용하면 단일 시스템이 다른 프로세스와 다른 호스트 및 도메인 이름을 갖는 것처럼 보일 수 있습니다. 자세한 정보를 원하시면 https://en.wikipedia.org/wiki/Linux_namespaces . 따라서 동일한 시스템에 대해 여러 개의 호스트 이름과 도메인 이름을 가질 수 있습니다. 예를 들어, 동일한 호스트 내의 도커 컨테이너는 호스트 시스템과 다른 호스트 이름을 갖습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.