Tôi gặp lỗi Tên máy chủ lưu trữ: Tên hoặc dịch vụ không được biết đến khi kiểm tra IP của tên máy chủ


13

Tôi đang chạy Ubuntu 14.04 trên dịch vụ đám mây của công ty tôi (ví dụ của tôi có IP đàn hồi). Tôi muốn kiểm tra địa chỉ IP của cá thể tôi đang chạy bằng dòng lệnh, nhưng nó không hoạt động.

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

Tôi không hiểu lý do tại sao. 

Tôi đã cố gắng ping đến ubfox14-graphit nhưng nó nói:

unknown host ubuntu14-graphite.

Điều đó có nghĩa là máy chủ của tôi thậm chí không tồn tại?

Tôi có một máy chủ khác (không phải đám mây mà là máy chủ vật lý). Trong máy chủ này, tôi đã cài đặt CentOS 6.7. Tôi đã kiểm tra IP của tên máy chủ và nó vẫn hoạt động mặc dù không có gì đặc biệt /etc/hosts.

Đây là đầu ra của 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

Câu trả lời:


15

Nó có nghĩa là "hệ thống" (tôi đang sử dụng thuật ngữ đó theo nghĩa rộng, chung chung, mơ hồ) không biết rằng tên đó ubuntu14-graphite tương ứng với máy chủ của bạn và địa chỉ IP của nó. (Thực tế đó là là lưu trữ của bạn tên là không đủ để thực hiện điều này). Điều này gần như chắc chắn có nghĩa là bạn không có một dòng cho ubuntu14-graphite trong của bạn /etc/hoststập tin , và rằng nó không phải phục vụ đặt tên của bạn (ví dụ, DNS hay NIS). Do đó, một cách để khắc phục là thêm ubuntu14-graphite(và địa chỉ IP của nó) vào của bạn /etc/hosts. Nếu bạn đang sử dụng một hệ thống đặt tên (phân tán) tinh vi hơn như DNS hoặc NIS (hoặc có thể là ActiveDirectory?), Giải pháp cuối cùng là thêm máy chủ của bạn vào dịch vụ đó.
___________
...

Có một số tranh luận về câu hỏi địa chỉ IP nào bạn nên liên kết với tên máy chủ của bạn. Mọi người đồng ý rằng đó phải là một địa chỉ "hoạt động" cho máy chủ của bạn; tức là các lệnh như nên thành công. Một số người khuyên nên sử dụng địa chỉ loopback. Địa chỉ loopback luôn có dạng 127 .BCD ; các giá trị phổ biến là 127.0.0.1 và 127.0.1.1. Những người khác khuyên bạn nên sử dụng địa chỉ LAN, trông giống như 192.168 .CD (nhưng nó có thể là hầu hết mọi thứ) - nhưng bạn không nên đặt địa chỉ được gán động vào tệp máy chủ của mình (và, nếu bạn đang sử dụng DHCP với DNS, thì địa chỉ được gán động sẽ được nhập tự động vào bản ghi DNS của bạn). Sử dụng các lệnh như và để xem địa chỉ nào đang được sử dụng.ping A.B.C.Difconfighostname -I


Cảm ơn câu trả lời của bạn. Tôi đã chỉnh sửa câu hỏi của mình vì tôi nhận thấy một trường hợp nữa liên quan đến máy chủ CentOS của tôi không có gì ngoài localhost 127.0.0.1 nhưng tôi vẫn có thể kiểm tra IP của máy chủ.
Một

Chà, có thể tên và địa chỉ của máy chủ CentOS được nhập vào hệ thống DNS (hoặc bất kỳ dịch vụ tên nào đang được sử dụng).
G-Man nói 'Phục hồi Monica'

Trong hệ thống CentOS, các liên kết và liên kết không được cài đặt. Vì vậy, tôi thực sự bối rối.
Một

@TheOne Ubuntu xử lý hostnamekhác nhau mà RH dựa systems..put 127.0.1.1 ubuntu14-graphitetrong /etc/hoststập tin và check..note, nó 127.0.1.1, chứ không phải 127.0.0.1(mà bạn có thể bảo quản nào chỉ cho localhost, như 127.0.0.0/8là loopback chặn bạn có thể sử dụng bất kỳ địa chỉ mặc dù một số hệ thống này đã được xác định trước các địa chỉ bị hạn chế )
heemayl

@heemayl Vì vậy, bằng cách đặt 127.0.1.1 ubfox14-graphit vào / etc / hosts sau đó kiểm tra IP tôi không nhận được đúng IP. Điều đó không có ý nghĩa, phải không?
Một

1

Cách thực tế để kiểm tra địa chỉ IP của máy là sử dụng ifconfiglệnh.

Lưu ý rằng tùy thuộc vào thiết lập đám mây thực tế, cá thể máy chủ có thể không biết IP công khai và chỉ biết IP Vlan. Để biết chi tiết về điều này, bạn cần tham khảo tài liệu của nhà cung cấp của bạn.


Không; ip a s. Xem serverfault.com/q/458628/89813 - ifconfig không dùng nữa trên Linux.
Phục hồi Monica - M. Schröder

0

Thêm myhostnamemục vào hostsdịch vụ trong /etc/nsswitch.conf.

Nói cách khác, thay đổi dòng này trong /etc/nsswitch.conf:

hosts:      files dns

đến đây:

hosts:      files dns myhostname

Trường hợp thông thường tên máy chủ được giải quyết bằng /etc/hoststệp và dns, tên máy chủ của hệ thống cũng có thể được giải quyết bằng cách yêu cầu Chuyển đổi dịch vụ tên để làm như vậy (vì thay đổi cấu hình này sẽ làm).

Điều này sẽ giải thích lý do tại sao bạn không thấy bất cứ điều gì đặc biệt về /etc/hoststệp trên hệ thống mà bạn có thể giải quyết tên máy chủ cục bộ.

Thông tin thêm về myhostnamecờ ở đây .


0

Theo tôi, nó phụ thuộc vào phiên bản của lệnh hostname (gói công cụ net).

Xem: https://ormszilla.redhat.com/show_orms.cgi?id=319981

  • ví dụ về "openSuse Leap 42.3":
    # hostname -V
    net-tools 1.60
    hostname 1.100 (2001-04-14)

    # hostname -i
    hostname: Name or service not known
  • trên Lubfox 17.10
  $ hostname -V
  hostname 3.18

hostname -i - cung cấp cho tôi thông tin về IPv6 và IPv4


Đó là báo cáo lỗi là về hostname -s, không hostname -i. Điều này không liên quan đến các phiên bản của hostname, nó liên quan đến việc tên máy chủ được cung cấp hostnamecó thể phân giải được hay không.
Stephen Kitt

-2

Truy cập etc / hosts.save kiểm tra tên máy chủ của bạn ở đó. Và sau đó chỉnh sửa /etc/hosts để ghi tên máy chủ của bạn và tên máy chủ vào hosts.save. Ngoài ra kiểm tra địa chỉ IP. Thí dụ:

127.0.0.1    ubuntu   
127.0.1.1    ubuntu.ubuntu-domain    ubuntu

1
Đặt IP localhost /etc/hostssẽ không cung cấp cho họ địa chỉ IP thực. Tôi cũng không biết tại sao bạn cũng nhìn vào /etc/hosts.saveđó là một kỹ thuật và rất không liên quan.
Julie Pelletier
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.