호스트 이름-무엇에 관한 것입니까?


54

나는 최근에 일부 sysadmin 작업을 수행하도록 "강제"되었습니다. 그러나 이것은 제가 읽고, 실험하고, 많이 배우고있는 것이 절대적으로 좋아하는 것이 아닙니다.

서버 구성에는 기본적으로 호스트 이름 을 파악할 수 없었습니다 .

예를 들어 우분투에서는 Linode Library 에 따라 호스트 이름을 다음과 같이 설정해야합니다 .

echo "plato" > /etc/hostname
hostname -F /etc/hostname

파일 : / etc / hosts

127.0.0.1        localhost.localdomain        localhost
12.34.56.78      plato.example.com            plato

나는 그것이 plato임의의 이름이고 그것이 plato.example.comFQDN 이라고 가정합니다 .

이제 내 질문은 :

  • 필수입니까?
  • 무슨 목적으로?
  • 어디에서 필요한가?
  • "localhost"를 모든 컴퓨터의 호스트 이름으로 정의 할 수없는 이유는 무엇입니까?
  • plato.example.comFQDN에 대한 DNS 항목을 설정해야 합니까?
  • plato.example.com내 IP의 역방향 DNS 항목으로 사용해야합니까 ?

또한 호스트 이름을 선택하기위한 "모범 사례"가 있습니까? 그리스 문자, 행성 이름 및 신화적인 인물을 사용하는 사람들을 보았습니다 ... 문자 / 행성이 부족하면 어떻게됩니까?

이것이 멍청한 질문이라면 죄송하지만 네트워크 구성에 너무 열중하지 않았습니다.


3
크리스 S는 기본이 아닌 것 같습니다. 시스템 호스트 이름은 무엇이며 DNS와 어떤 관련이 있는지에 대한 질문은 유효한 것입니다.
larsks

@Chris S : 알겠습니다. 한 번만 읽어 보았지만 모든 것이 크게 혼란 스러웠습니다. 나는 SA가되기를 간절히 바라지 않고 기본을 조금 더 잘 이해하려고 노력합니다.
Alix Axel

이것은 커뮤니티 위키
lynxman으로

1
@lynxman : 상관 없지만 왜?
Alix Axel

1
그것은 매우 흥미 롭기 때문에 :)
lynxman

답변:


28

요즘 시스템에는 여러 개의 인터페이스가있을 수 있으며 각 인터페이스에는 여러 개의 주소가 있으며 각 주소에는 여러 개의 DNS 항목이있을 수도 있습니다. "시스템 호스트 이름"은 무엇을 의미합니까?

많은 응용 프로그램은 다른 곳에서 통신 할 때 시스템 호스트 이름을 기본 식별자로 사용합니다. 예를 들어 중앙 서버에서 syslog 메시지를 수집하는 경우 메시지는 모두 원래 시스템의 호스트 이름으로 태그가 지정됩니다. 이상적인 세계에서는 아마도 클라이언트를 신뢰하고 싶지 않기 때문에 이것을 무시할 것입니다. 그러나 모든 시스템의 이름을 "localhost"로 지정하면 기본 동작으로 인해 많은 로그 메시지가 나타납니다. 특정 시스템과 연결할 수 없습니다.

다른 사람들이 지적했듯이 시스템 호스트 이름은 여러 시스템에 원격으로 액세스하는 경우 유용한 식별자입니다. "localhost"라는 시스템에 5 개의 창을 연결했다면 똑바로 유지하기가 어려울 것입니다.

비슷한 맥락에서 우리는 시스템 호스트 이름을 시스템에 대한 관리 액세스에 사용하는 호스트 이름과 일치 시키려고합니다. 이렇게하면 시스템, 이메일, 대화, 문서 등을 언급 할 때 혼동을 피할 수 있습니다.

DNS와 관련하여 :

혼동을 피하기 위해 응용 프로그램에 대해 올바른 정방향 및 역방향 DNS 항목을 원합니다. 당신이해야 할 몇 가지 편리하게 응용 프로그램에 액세스 할 수 있도록 사람들을위한 - (> IP 주소 이름) 앞으로 항목을. 역 입력 항목 일치는 여러 가지 이유로 유용합니다. 예를 들어 로그에서 해당 IP 주소를 찾은 경우 응용 프로그램을 올바르게 식별하는 데 도움이됩니다.

여기서는 특히 웹 서버에서 "시스템"이 아닌 "응용 프로그램"에 대해 이야기하고 있습니다. 왜냐하면 다른 호스트 이름 및 서비스와 관련된 시스템에 여러 개의 IP 주소를 갖는 것이 일반적이기 때문입니다.

/etc/hosts점점 더 많은 시스템을 관리함 에 따라 파일 에서 이름 대 ip 맵핑을 유지하려는 시도가 빨리 어려워집니다. 로컬 호스트 파일이 DNS와 관련하여 동기화되지 않는 것은 매우 쉽습니다. 혼동을 일으키거나 경우에 따라 시스템에 더 이상 존재하지 않는 IP 주소에 바인드하려고하기 때문에 오작동을 일으킬 수 있습니다.


답장을 보내 주셔서 감사합니다. DNS 항목에 의존하는 대신 / etc / hosts 파일을 유지 관리해야 할 경우에는 여전히 혼란스러워합니다.
Alix Axel

8
나는 일반적으로 /etc/hostsDNS에 찬성하여 무시 합니다. 이것은 이름-> 주소 매핑에 대한 정보를 유지하기 위해 필요한 장소 수를 줄입니다. 내가 관리하는 대부분의 시스템 /etc/hosts에는에 대한 단일 항목 만 포함되어 있습니다 localhost.
larsks

가네 티 또는 Linux-HA / Corosync 클러스터와 같은 클러스터를 처리 할 때 / etc / hosts를 사용하여 클러스터 멤버간에 대화합니다. DNS 서비스가 해당 클러스터에 있고 노드 변경 중에 마이그레이션되거나 오프라인 상태 일 수 있으므로 DNS에만 의존하는 것은 좋지 않습니다. 따라서 / etc / hosts와 올바른 호스트 이름이 즐거운 시간을 보내도록 도와줍니다.
coredump

그래서, "고유 한"에 관해서, 우리는 "고유 한" "고유 한 것"보다는 "고유 한"것을 시도하고 있는가? 서버가 너무 많고 모두 같은 범위에 있기 때문에 실제 "고유 한"상태는 불가능합니다. 이 이해가 맞습니까?
shenkwen

10

모든 호스트 이름을 "localhost"로 설정할 수 있지만 alix@plato ~ $ssh를 통해 시스템을 관리 할 때 명령 프롬프트에두면 매우 편리합니다 . 그렇지 않으면 원격으로 서버를 관리하는 것이 매우 혼란 스러울 수 있습니다.

웹 서버 또는 메일 서버를 호스트 할 때 올바른 FQDN을 갖는 것이 중요합니다. 이러한 종류의 서버 응용 프로그램은 자신이 실행중인 "누가"를 알고 싶어합니다.

좋은 이름 지정 체계를 선택하려면 이 매우 인기있는 질문 을 참조하십시오 .

FQDN은 다른 컴퓨터에 의미가있는 경우에만 유용합니다. 여기에는 세 가지 수준이 있습니다.

  • 로컬 네트워크의 한 컴퓨터에는 호스트 파일에 해당 컴퓨터를 가리키는 항목이 있습니다.
  • 로컬 네트워크에서 DNS 서버를 실행하고 있으며 DNS 서버로 사용하는 모든 로컬 컴퓨터는 이제 이름으로 플라톤을 알고 있습니다.
  • 도메인 이름을 등록하면 이제 plato.alixaxel.com이라는 이름의 컴퓨터가 전 세계에 알려집니다.

전자 메일을 보내거나 웹 페이지를 외부 세계에 제공 할 때 세 번째는 원하는 것입니다. 대부분의 경우 로컬 DNS를 사용하거나 호스트 파일을 편집 할 수도 있습니다.

이 경우 로컬 네트워크 내에서 사용할 도메인 이름 (plato.alixnetwork가 FQDN으로 적합 할 수 있음)을 구성하면됩니다. "alixnetwork"부분 (도메인 이름)을 갖는 유일한 부가 가치는 다른 로컬 네트워크와 구별 할 때 편리하다는 것입니다.


케니에게 감사드립니다. 웹 / 메일 서버가 적절한 FQDN을 갖는 것이 중요한 이유는 제 의심의 여지가 있습니다. 또한 "적절한"FQDN을 구성하는 요소는 무엇입니까? 호스트 이름을 도메인 앞에 추가하고 퍼블릭 IP 주소를 가리켜 야합니까? 호스트 이름으로 A / AAAA DNS 항목을 작성했다는 인상을 받았습니다.
Alix Axel

그것은 당신이 달성하고자하는 것에 달려 있습니다. plato를 사용하여 전자 메일을 보내거나 웹 페이지를 전세계에 제공하지 않으면 해당 시스템에 대한 글로벌 DNS 레코드를 만들 필요가 없습니다.
케니 Rasschaert

"도메인 이름을 등록하면 이제 전 세계에서 plato.alixaxel.com 이름이 가리키는 기계를 알고 있습니다." 이해가 안 돼요 "alixaxel.com"의 DNS 확인을 통해 plato.alixaxel.com이라는 이름의 컴퓨터가 전세계에 무엇인지 알지 못합니까? 임의 컴퓨터에서 FQDN을 설정하는 것과는 어떤 관계가 있습니까?
shenkwen

8

기본 개요. 호스트 이름은 포인터 일뿐입니다. 하나의 특정 이름을 시스템이 참조하는 호스트 이름으로 지정할 수 있지만 여러 이름을 가질 수 있습니다. 주목할만한 메일 및 HTTP와 같은 일부 서비스는 도메인 이름을 사용하여 서비스의 위치와 도착 방법을 알고 있습니다.

오래 전에이 모든 이름 (다시 말해 IP 주소에 대한 포인터 임)은라는 파일에서 추적되었습니다 hosts. 시스템이 커짐에 따라 다양한 상호 연결된 네트워크에 참여하는 모든 관련 컴퓨터에서 파일 동기화를 유지할 수 없었습니다. 그래서 DNS 시스템이 발명되었습니다. 이름 조회를 수행 할 때 여전히 호스트 파일을 먼저 확인한 다음 DNS 시스템을 확인합니다. Windows는 WINS 또는 NetBIOS와 같은 다른 시스템도 확인할 수 있습니다.

hosts파일에 항목을 넣으면 컴퓨터에 해당 항목 이 할당되지 않습니다. 컴퓨터가 사용하는 호스트 이름을 구성 파일 (* nix 시스템) 및 Windows 시스템 (Windows 시스템에도 NIC 특정 접미어가있을 수 있음)의 시스템 속성에서 지정합니다.

hostsDNS 시스템과 같이 파일의 항목은 호스트 이름에서 IP 주소로의 매핑 일뿐입니다. 호스트 이름 'localhost'를 사용하려면 (특별한 것은 없으며 나머지와 마찬가지로 호스트 이름 임) 루프백 인터페이스에 매핑되어야합니다 (따라서 항상 로컬 컴퓨터를 가리 킵니다). 이것이 작동하도록 모든 컴퓨터에는 hosts파일 에이 기본 매핑이 제공 되지만 해당 호스트 이름을 사용하지 않으려는 경우 제거 될 수 있습니다.

또한 다른 사람들이 지적했듯이 컴퓨터에 호스트 이름을 할당하는 것이 매우 유용합니다. 컴퓨터에 연결하면 로그인 할 때 또는 프롬프트 나 다른 여러 위치로 호스트 이름을 표시 할 수 있습니다. 이렇게하면 연결된 컴퓨터를 쉽게 식별 할 수 있습니다. 해당 호스트 이름을 DNS에 설정하거나 모든 hosts파일 에 넣으면 항상 IP 주소를 알 필요없이 호스트 이름을 참조하여 컴퓨터에 연결할 수 있습니다. (주소가 변경 될 수 있으므로 컴퓨터가 DHCP를 사용하는 경우 더 유용합니다. 컴퓨터가 DNS를 업데이트하면 DNS 레코드가 새 IP 주소를 가리키게됩니다. DNS 이름을 알고 있기 때문에 새 IP 주소를 모르더라도 연결할 수 있습니다 ).

hostsDNS와 DNS 를 모두 많이 사용 하지만이 모든 것을 읽으면 답변보다 더 많은 질문이 있다고 생각합니다.


4
질문에 대한 초기 좌절감에도 불구하고 좋은 답변을 작성하는 데 시간을내어 +1.
케니 Rasschaert

멋진 설명! 내 이해가 올 바르면 FQDN을에 배치 할 /etc/hosts필요가없는 경우, DNS 항목에 호스트 이름이 있으면 같은 결과를 얻을 수 있습니다.
Alix Axel

2
항목이 DNS에 있고 (DNS가 올바로 작동하는 경우) @Alix 인 경우 hosts파일에 입력하면 중복됩니다. 또한 hosts파일 의 항목은 DNS를 무시합니다 (때로는 테스트에 유용하지만 잊어 버릴 때 성가신 경우가 있습니다). 이것은 모두 A 및 AAAA 레코드와 관련이 있으며 호스트 이름에 대한 다른 유형의 레코드가 있지만 명확성을 위해 생략했습니다.
Chris S

크리스 감사합니다.이 모든 것이 훨씬 더 명확합니다.
Alix Axel

5

호스트에게는 의미있는 이름이 주어져야합니다. 호스트 이름은 여러 가지 목적으로 서버를 사용할 수 있습니다.

1- 현재 작업중인 것을 인식하는 데 도움이됩니다.

2- /etc/hosts많은 IP 주소를 기억하는 것보다 DNS 레코드에 구성된 이름을 사용 하는 것이 더 쉽습니다.

3- Localhost는 현재 시스템 (주소 127.0.0.1)을 나타내는 예약 된 이름입니다.

4- DNS 레코드는 서버를 공개적으로 액세스하는 데 유용합니다.

각 서버에 적합한 이름을 선택하면 관리에 많은 도움이됩니다. 또한 클라이언트가 서버에 액세스하는 데 도움이됩니다.


2

참고로, 적절하게 앞뒤로 DNS 확인을 진행하는 것이이 지구상 모든 IT 설치의 절대 초석입니다. 잘 유지 관리 된 DNS와 적절한 호스트 이름 확인의 필요성을 결코 과소 평가하지 마십시오!


왜 중요한지 이해할 수 없습니다. 많은 웹 사이트를 호스팅하는 linode 서버가 있습니다. 호스트 이름 설정의 목적을 이해하지 못하고 그대로 "우분투"로 그대로 둡니다. 이 서버는 몇 년 동안 운영되어 왔으며 전혀 불편을 느끼지 않습니다. 나는 당신의 대답에 의문을 제기하지 않고 단지 호스트 이름이 중요한 이유를 이해하려고 노력하고 있습니다. 제 경우에는 언제 호스트 이름을 올바르게 설정하고 싶습니까?
shenkwen

1
@ shenkwen-솔직히 하나의 서버 만 있으면 마음이 원하는대로 이름을 지정할 수 있으며 분명히 중요하지 않습니다. 서버 수가 1보다 커지면 관리해야 할 새로운 문제가 있으며 적절한 이름 지정이 중요한 도구입니다.
mfinni

1

면책 조항 : 주요 질문은 Linux 시스템에 관한 것이므로 문제의 Windows 측에 관심이 없다면이 답변을 무시하십시오.

어쨌든 Windows 시스템에서는 다른 답변에서 언급 한 모든 사항을 제외하고 호스트 이름은 네트워킹 및 인증 목적으로 OS 자체에서 실제로 사용됩니다. 구체적으로 :

  • 도메인 구성원이든 아니든 각 시스템 은 동일한 네트워크 (예 : 동일한 IP 서브넷) 에서 고유 한 이름을 가져야합니다 . 그렇지 않으면 이름이 충돌하고 다양한 네트워크 서비스 (주로 파일 및 인쇄 공유)가 발생하지 않습니다. 작업.
  • 동일한 Active Directory 도메인의 구성원 인 모든 시스템은 네트워크 경계에 관계없이 고유 한 이름을 가져야합니다.
  • 도메인 환경에서 시스템의 호스트 이름은 보안 주체 역할을하며 원격 인증에 사용될 수 있습니다 (시스템의 사용자 계정으로 생각하면됩니다). 권한과 액세스 권한을 할당 할 수 있으며 보안을 위해 그룹으로 배치 할 수 있습니다. 이는 기본 제공 LocalSystemNetworkService사용자 계정을 사용하여 시스템에서 실행중인 모든 프로세스에 영향을 미치며, 실행중인 시스템의 자격 증명을 사용하여 다른 시스템을 인증 할 수 있습니다. 이를 통해 NetworkServiceSystemA에서 실행중인 프로세스 는 SystemA의 사용자 계정에 폴더에 대한 권한을 부여하여 SystemB의 공유 폴더에 액세스 할 수 있습니다.

-1

많은 사이트 및 / 또는 '관리자'는 이제 '호스트 이름'속성에 OS 인스턴스의 FQDN이 포함되어 있으며 '도메인 이름'을 추가하는 해결 방법을 '중단'한다고 말합니다.

호스트 이름
system1.domain1.org

hostname
-system1.domain1.org.domain1.org를 확인할 수 없습니다


진술서에 대한 참조 자료를 제공 할 수 있습니까?
Dave M
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.