Tên giải quyết không hoạt động, nhưng nslookup không


7

Tôi đang gặp một vấn đề rất lạ với việc cài đặt Solaris 11. Độ phân giải DNS sẽ không hoạt động, nhưng thật kỳ lạ, nslookup có và kết nối vẫn ổn:

root@solarisxyz:~# ping stackexchange.com
ping: unknown host stackexchange.com
root@solarisxyz:~# nslookup stackexchange.com
Server:         10.x.x.x (DNS)
Address:        10.x.x.x#y

Non-authoritative answer:
Name:   stackexchange.com
Address: 64.34.119.12

root@solarisxyz:~# ping 64.34.119.12
64.34.119.12 is alive

Các phần có liên quan của các tập tin:

  • /etc/resolv.conf : (đây là điều tương tự với các hộp Linux của chúng tôi)

    domain us.oracle.com
    nameserver 10.x.x.x
    nameserver 10.x.x.x  
    
  • / etc / host :

    # ::1 solarisxyz localhost (commented out)
    127.0.0.1 localhost loghost solarisxyz
    
  • /etc/nsswitch.conf :

    hosts:    files dns
    # pretty much everything else set to files
    

Trong resolv.conf, nó thực sự 10.x.x.xhoặc bạn đã ẩn địa chỉ IP?
amphetamachine

@amphetamachine Địa chỉ thực tế là chính xác và có thể truy cập thông qua ping.
NullUser

1
Bạn có thể vui lòng so sánh đầu ra của các lệnh này:dig @10.x.x.x stackexchange.com dig @8.8.8.8 stackexchange.com dig stackexchange.com
amphetamachine

Câu trả lời:


7

Cấu hình mạng đã thay đổi hoàn toàn bắt đầu với Solaris 11. nsswitch.conf hiện chỉ là thông tin. Giả sử bạn không ở chế độ tự động, trong trường hợp đó DNS sẽ được cấu hình đúng, đây là quy trình mới:

http://docs.oracle.com/cd/E23824_01/html/E24456/gliyc.html#OSTELgllcu


Vì vậy, về cơ bản chỉnh sửa các tập tin như nsswitch.confkhông có ảnh hưởng gì đến cấu hình mạng bây giờ?
NullUser

Thật vậy, nsswitch.conf hiện được quản lý bởi smf giống như độ phân giải và nhiều tệp cấu hình / etc khác. Bạn nên tham khảo các trang hướng dẫn của họ để biết thêm thông tin.
jlliagre

4

Định cấu hình dịch vụ đặt tên bằng SMF

Ví dụ sau đây cho thấy cách định cấu hình DNS bằng cách sử dụng các lệnh SMF.

# svccfg
svc:> select dns/client
svc:/network/dns/client> setprop config/search = astring: \
("us.company.com" "eu.company.com" "companya.com" "companyb.com" "company.com" )
svc:/network/dns/client> setprop config/nameserver = net_address: \
( 138.2.202.15 138.2.202.25 )
svc:/network/dns/client> select dns/client:default
svc:/network/dns/client:default> refresh
svc:/network/dns/client:default> validate
svc:/network/dns/client:default> select name-service/switch
svc:/system/name-service/switch> setprop config/host = astring: "files dns"
svc:/system/name-service/switch> select system/name-service/switch:default
svc:/system/name-service/switch:default> refresh
svc:/system/name-service/switch:default> validate
svc:/system/name-service/switch:default> 
# svcadm enable dns/client
# svcadm refresh name-service/switch
# grep host /etc/nsswitch.conf
hosts:  files dns
# cat /etc/resolv.conf

Tôi ghét hệ thống này. Cảm ơn lời khuyên của bạn.
Tối đa

3

Tôi nghĩ vấn đề của bạn có liên quan đến daemon Dịch vụ tên Solaris hay chính xác hơn là cấu hình của con thú này. Có lẽ bạn đã chỉnh sửa /etc/nsswitch.conf bằng tay? Điều này sẽ giải thích tại sao daemon Dịch vụ tên không nhận nó.

Lệnh nslookup không - afaik - sử dụng Dịch vụ tên Solaris. Điều này có thể giải thích tại sao bạn thấy nslookup hoạt động như bạn mong đợi trong khi mọi thứ khác thì không.

Trên Solaris luôn luôn là một ý tưởng tốt để xác minh xem các dịch vụ tra cứu có hoạt động như bạn mong đợi hay không bằng cách sử dụng getentlệnh. Trong ví dụ của bạn, nó sẽ là:

máy chủ lưu trữ stackexchange.com

Vì vậy, câu hỏi là làm thế nào để đảm bảo Dịch vụ Tên Solaris biết rằng nó phải tra cứu tên máy chủ trong cả các tệp cục bộ cũng như trong DNS. Hãy nhớ rằng trong Solaris 11, bạn không còn phải / được phép chỉnh sửa các tệp như /etc/nsswitch.conf trực tiếp. Chúng được điều khiển bởi các daemon chạy dưới SMF. Đây là cách thay đổi nó:

# svccfg
svc:> chọn tên dịch vụ / chuyển đổi
svc: / system / name-service / switch> setprop config / host = Astring: "files dns"
svc: / system / name-service / switch> chọn system / name-service / switch: default
svc: / system / name-service / switch: default> refresh
svc: / system / name-service / switch: default> xác thực
svc: / system / name-service / switch: default> exit
# svcadm làm mới tên dịch vụ / chuyển đổi

Sau đó, bạn sẽ thấy rằng /etc/nsswitch.conftập tin của bạn đã được ghi lại vào đĩa. Nếu trước đây bạn đã chỉnh sửa bằng tay, bạn có thể không thấy bất kỳ thay đổi thực tế nào. Cấp lại getentlệnh và hy vọng nó hoạt động ngay bây giờ.

Chúc may mắn.


1

Đối với Solaris 10, tôi đã làm svcadm restart /system/name-service-cache; sau đó, tôi có thể giải quyết máy chủ bằng telnet / ping.


1

Đầu tiên hãy bắt đầu trusstrên nscd:

truss -aefld -vall -wall -rall -o truss-nscd.out -u nss_\*:: -u libnsl:: -p `pgrep nscd`

Trong khi trusslệnh trên đang chạy, vui lòng thử

truss -aefld -vall -wall -rall -o truss-getent_1.out -u a.out,libnsl:: getent hosts ANY_HOSTNAME

Sau đó, tạm thời vô hiệu hóa nscd:

svcadm disable name-service-cache

và chạy:

truss -aefld -vall -wall -rall -o truss-getent_2.out -u a.out,libnsl:: -u nss_\*:: getent hosts ANY_HOSTNAME

Bây giờ bạn có thể kích hoạt lại tên-dịch vụ-bộ đệm:

svcadm enable name-service-cache

Bây giờ hãy thử ... hy vọng nó sẽ hoạt động.

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.