Tại sao `host` và` nslookup` trên Solaris 10 giải quyết tên máy chủ trong khi` ping` và` telnet` thì không?


7
  • /etc/resolv.confchứa một máy chủ tên còn sống (theo báo cáo của pinglệnh)
  • hosthoặc nslookupcó thể giải quyếtgoogle.com

    $ host google.com
    google.com has address 74.125.228.3
    google.com has address 74.125.228.4
    ...
    $ nslookup google.com
    ...
    Non-authorative answer:
    Name:   google.com
    Address: 74.125.228.0
    Name:   google.com
    Address: 74.125.228.1
    ..
    
  • pinghoặc telnetkhông thể giải quyếtgoogle.com

    $ ping google.com
    ping: unknown host google.com
    $ telnet google.com
    google.com: node name or service name not known
    

Câu trả lời:


10

Dường như pingtelnetkhông thể giải quyết tên máy chủ, vì họ không truy vấn máy chủ DNS được định cấu hình ( hostnslookupdường như đang sử dụng mã truy vấn DNS khác nhau), giải pháp là:

Ghi đè /etc/nsswitch.confbằng /etc/nsswitch.dns:

cp /etc/nsswitch.dns /etc/nsswitch.conf

2
Tốt nhất là bạn nên sao chép /etc/nsswitch.dns sang /etc/nsswitch.conf, đây là cách thông thường và được ghi lại để thiết lập hệ thống của bạn để sử dụng DNS, trong khi tạo /etc/resolv.conf
BitsOfNix

Nó cũng phụ thuộc vào cách bạn cài đặt Solaris. Nếu tại trình cài đặt tương tác hoặc trong sysidcfg, bạn chỉ định DNS, nsswitch.conf đã được cấu hình đúng.
James O'Gorman

@AlexandreAlves Cảm ơn, tôi đã cập nhật câu trả lời.
Adam Siemion

@ JamesO'Gorman Vì tôi có rất ít kinh nghiệm với Solaris, tôi thừa nhận rằng có lẽ tôi đã bỏ lỡ nó trong quá trình cài đặt. Nhưng điều thực sự đáng ngạc nhiên là điều này không được đặt mặc định.
Adam Siemion

@AdamSiemion hãy nhớ rằng nhiều khách hàng lớn nhất của Solaris là những môi trường khép kín, nơi DNS có thể không nhất thiết phải được sử dụng, và thay vào đó NIS giữ vững. (hoặc LDAP đôi khi). Sun đã từng tập trung phần lớn năng lượng vào 50 khách hàng hàng đầu của mình. Công cụ DNS đã được thêm cho các khách hàng còn lại của họ, nhưng không được mặc định, bởi vì doanh thu từ top 50> phần còn lại. Oracle có thể chơi một trò chơi tương tự.
Tim Kennedy

2

Adam, bạn không cho chúng tôi biết phiên bản Solaris nào bạn đang sử dụng.

Tất cả các máy chủ tìm kiếm trên Solaris đều đi qua daemon Dịch vụ đặt tên Solaris. Ngoại lệ duy nhất là nslookuptruy vấn DNS trực tiếp đối với máy chủ DNS. Trình nền dịch vụ đặt tên về cơ bản hoạt động như một bộ đệm của thông tin đặt tên. Các hệ điều hành khác có dịch vụ tương tự. Dịch vụ đặt tên Solaris được cấu hình trong /etc/nsswitch.conftệp.

Tôi thực sự, thực sự hy vọng bạn đang ở một phiên bản cũ hơn, chẳng hạn như Solaris 10 hoặc trước đó. Nếu không, bây giờ bạn đã chỉnh sửa một cách thủ công một tệp mà bạn không còn phải chỉnh sửa: /etc/nsswitch.conftệp đó.

Dù sao, giả sử bạn đang ở trên Solaris 10 trở lên: Bạn /etc/nsswitch.confnên có một mục như thế này:

hosts:  files dns

Điều này cho Dịch vụ đặt tên Solaris rằng các máy chủ nên được tra cứu trước trong tệp cục bộ (tức là /etc/hosts) và sau đó trong DNS. Tất nhiên bạn cũng có thể chỉ có "dns" ở đây nhưng mọi người thường sẽ muốn nó để /etc/hostscó thể ghi đè lên những gì có trong DNS.

Bây giờ bạn có thể phải khởi động lại daemon dịch vụ đặt tên:

svcadm restart /system/name-service-cache

Bạn luôn có thể xác minh thiết lập dịch vụ đặt tên của mình bằng getentlệnh Solaris :

getent hosts google.com

Các getentthẩm tra lệnh rằng Solaris Naming Service hoạt động như bạn mong đợi. Bạn không thể sử dụng nslookupđể xác minh điều này.



Nếu bạn đang ở trên Solaris 11 thì bạn có thể sử dụng câu trả lời của nolan600 cho câu hỏi này . Các getentlệnh cũng áp dụng cho Solaris 11.



Hy vọng bạn có thể sử dụng một số này.


/usr/bin/hostlà một ngoại lệ khác vì đây là máy khách DNS trực tiếp và không sử dụng dịch vụ tên Solaris.
alanc

0
root @ solaris: ~ # svccfg -s name-service / switch
svc: / system / name-service / switch> setprop config / host = "files dns"
svc: / system / name-service / switch> listprop config
ứng dụng cấu hình
tập tin cấu hình / mặc định
config / value_ Authorization Astring solaris.smf.value.name-service.switch
cấu hình / máy in làm mờ "tập tin người dùng"
cấu hình / lưu trữ "tập tin dns"
svc: / system / name-service / switch> exit
root @ solaris11: ~ # svcadm làm mới tên dịch vụ / chuyển đổi 

bạn cũng có thể cập nhật DNS nếu vẫn còn sự cố Solaris 10 & 11
Michael James Perry

1
Bạn có thể giải thích câu trả lời của bạn? Dán một số mã không làm cho nó trả lời tốt
Romeo Ninov
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.