호스트 이름의 IP를 확인할 때 "호스트 이름 : 이름 또는 서비스를 알 수 없습니다"오류가 발생했습니다.


13

회사 클라우드 서비스에서 Ubuntu 14.04를 실행하고 있습니다 (내 인스턴스에는 탄력적 IP가 있음). 커맨드 라인으로 실행중인 인스턴스의 IP 주소를 확인하고 싶지만 작동하지 않습니다.

root@ubuntu14-graphite:~# hostname
ubuntu14-graphite
root@ubuntu14-graphite:~# hostname -i
hostname: Name or service not known

이유를 이해할 수 없습니다. 

나는 우분투 14 흑연에 핑을 시도했지만 그것은 말했다 :

unknown host ubuntu14-graphite.

내 호스트가 존재하지 않습니까?

다른 서버 (클라우드 인스턴스가 아니라 실제 서버)가 있습니다. 이 서버에서 CentOS 6.7을 설치했습니다. 호스트 이름의 IP를 확인했는데 특별한 내용이 없어도 작동했습니다 /etc/hosts.

출력은 다음과 같습니다 cat /etc/hosts.

127.0.0.1   localhost

# The following lines are desirable for IPv6 capable hosts
::1         ip6-localhost ip6-loopback
fe00::0     ip6-localnet
ff00::0     ip6-mcastprefix
ff02::1     ip6-allnodes
ff02::2     ip6-allrouters
ff02::3     ip6-allhosts

답변:


15

그것은 "시스템"(넓고 일반적이고 모호한 의미로 그 용어를 사용하고 있음)은 그 이름 ubuntu14-graphite 이 당신의 호스트와 IP 주소에 해당 한다는 것을 알지 못한다는 것을 의미 합니다. (이것은 귀하의 호스트 이름입니다 만으로는 충분하지 않습니다.) 이는 거의 파일 ubuntu14-graphite 에 줄 이없고 이름 지정 서비스 (예 : DNS 또는 NIS). 따라서 문제를 해결하는 방법은에 (및 해당 IP 주소)를 추가 하는 것 입니다. DNS 또는 NIS (또는 ActiveDirectory?)와 같이보다 정교하고 분산 된 이름 지정 시스템을 사용하는 경우 궁극적 인 솔루션은 호스트를 해당 서비스에 추가하는 것입니다. _____________ † .../etc/hostsubuntu14-graphite/etc/hosts

호스트 이름과 어떤 IP 주소를 연결해야하는지에 대한 논쟁이 있습니다. 모든 사람은 그것이 호스트에게 "작동하는"주소 여야한다는 것에 동의합니다. 즉, 같은 명령 이 성공해야합니다. 루프백 주소를 사용하는 것이 좋습니다. 루프백 주소는 항상 127.BCD 형식입니다 . 일반적인 값은 127.0.0.1 및 127.0.1.1입니다. 다른 사람들은 192.168 .CD 와 같은 LAN 주소를 사용하는 것이 좋습니다.ping A.B.C.D 수 있지만 거의 모든 것이 가능합니다. 그러나 동적으로 할당 된 주소를 호스트 파일에 넣지 않아야합니다 (DNS와 함께 DHCP를 사용하는 경우에는 동적으로 할당 된 주소는 DNS 레코드에 자동으로 입력되어야합니다. 같은 명령을 사용 ifconfighostname -I 사용에 어떤 주소를 확인합니다.


답변 감사합니다. 127.0.0.1 localhost 외에는 없지만 CentOS 서버와 관련된 하나 이상의 사례를 발견했지만 여전히 호스트의 IP를 확인할 수 있기 때문에 질문을 편집했습니다.
하나는

아마도 CentOS 서버의 이름과 주소가 DNS 시스템 (또는 사용중인 이름 서비스)에 입력되었을 수 있습니다.
G-Man, 'Reinstate

CentOS 시스템에서 bind 및 bind-utils가 설치되지 않았습니다. 그래서 정말 혼란 스러워요.
하나

@TheOne 우분투 취급 hostname다르게 그 RH 기반 systems..put 127.0.1.1 ubuntu14-graphite에서 /etc/hosts파일 및 check..note, 그것의 127.0.1.1,하지 127.0.0.1(당신이 구명 어쨌든 단지 로컬 호스트를 들어, 같은 수있는 127.0.0.0/8어떤 주소를 사용할 수 있습니다 차단 루프백 일부 시스템은 미리 정의하고 있지만 제한 주소 )
heemayl

@heemayl 따라서 / etc / hosts에 127.0.1.1 ubuntu14-graphite를 넣어서 IP를 확인하면 올바른 IP를 얻지 못했습니다. 말이 안 돼요?
하나

1

머신의 IP 주소를 확인하는 실제 방법은 ifconfig명령 을 사용하는 것 입니다.

실제 클라우드 설정에 따라 서버 인스턴스는 퍼블릭 IP를 인식하지 못하고 VLAN IP 만 알 수 있습니다. 이에 대한 자세한 내용은 공급자의 설명서를 참조하십시오.


아니; ip a s. Linux에서 serverfault.com/q/458628/89813-ifconfig 가 더 이상 사용되지 않습니다를 참조하십시오 .
Reinstate Monica-M. Schröder

0

추가 myhostnamehosts서비스에 항목을/etc/nsswitch.conf .

즉,이 줄을 /etc/nsswitch.conf 다음 .

hosts:      files dns

이에:

hosts:      files dns myhostname

일반적으로 /etc/hosts파일과 dns를 사용하여 호스트 이름을 확인하는 경우 ,이 구성 변경과 마찬가지로 이름 서비스 스위치에 시스템의 호스트 이름을 지정하여 확인할 수도 있습니다.

이것은 왜 당신이 특별한 것을 보지 못했는지 설명 할 것입니다. /etc/hosts로컬 호스트 이름을 확인할 수있는 시스템 파일에 .

myhostname국기 에 대한 자세한 정보 는 여기에 있습니다 .


0

제 생각에는 호스트 이름 명령 (net-tools 패키지)의 버전에 달려 있습니다.

참조 : https://bugzilla.redhat.com/show_bug.cgi?id=319981

  • "openSuse Leap 42.3"의 예 :
    # hostname -V
    net-tools 1.60
    hostname 1.100 (2001-04-14)

    # hostname -i
    hostname: Name or service not known
  • 루 분투 17.10에서
  $ hostname -V
  hostname 3.18

hostname -i -IPv6 및 IPv4에 대한 정보를 제공합니다


그 버그 보고서는 hostname -s아닙니다 hostname -i. 이것은의 버전과 관련이 없으며 hostname제공된 호스트 이름을 hostname확인할 수 있는지 여부와 관련 이 있습니다.
Stephen Kitt

-2

etc / hosts로 이동하여 호스트 이름을 저장하십시오. 그런 다음에 /etc/hosts 호스트 이름과 호스트 이름을 작성하도록 편집 하십시오 hosts.save. IP 주소도 확인하십시오. 예:

127.0.0.1    ubuntu   
127.0.1.1    ubuntu.ubuntu-domain    ubuntu

1
로컬 호스트 IP를 설정 /etc/hosts하면 실제 IP 주소가 제공되지 않습니다. 나는 또한 당신이 왜 /etc/hosts.save기술적이고 매우 관련 이 없는지 보지 못합니다 .
Julie Pelletier
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.