컴퓨터 시스템 (Linux)에 호스트 이름이 하나만 있습니까? (Linux)에 호스트 이름이 하나만 있습니까? 가상 호스팅에서 여러

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

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

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

감사.



답변

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

“내부”호스트 이름 은 기본적으로 커널에 의해 유지되는 문자열입니다. 이것은 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에서 명시 적으로 설정하지 않고도 다른 호스트에서 자신의 호스트 이름을 볼 수 있습니다.


답변

컴퓨터 시스템 (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의 경우 서버 이름 표시 값에 따라 동일한 웹 서버가 서로 다른 가상 호스트에 대해 서로 다른 인증서를 사용할 수 있습니다.


답변

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

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