Độ phân giải DNS không thành công cho ping và curl, nhưng không đào


11

Tôi đang chạy DNSMasq với tư cách là máy chủ DNS cục bộ, vì vậy tôi có thể giải quyết *.local.pcfdev.io(như đã thảo luận ở đây bằng PCF Dev Offline với Mac OS X ). Mọi thứ hoạt động khi tôi lần đầu tiên thiết lập mọi thứ.

Vài ngày sau, sau vài lần khởi động lại MacBook, trong khi ngoại tuyến, tôi không còn có thể giải quyết những việc như api.local.pcfdev.iosử dụng curlhoặc ping. Tuy nhiên, diglàm điều đúng đắn.

$ dig api.local.pcfdev.io

; <<>> DiG 9.8.3-P1 <<>> api.local.pcfdev.io
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46877
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;api.local.pcfdev.io.       IN      A

;; ANSWER SECTION:
api.local.pcfdev.io.    0       IN      A       192.168.11.11

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Sep  6 10:17:44 2016
;; MSG SIZE  rcvd: 53

$ curl api.local.pcfdev.io
curl: (6) Could not resolve host: api.local.pcfdev.io

Tôi đã thử thêm -AlwaysAppendSearchDomainslàm đối số /usr/sbin/mDNSRespondervào /System/Library/LaunchDaemons/com.apple.mDNSResponder.plistvà khởi động lại mDNSResponder với launchctlnhưng không có kết quả.


CẬP NHẬT 1

Chắc chắn có một cái gì đó nghe đúng IP cục bộ:

$ nslookup api.local.pcfdev.io
Server:     127.0.0.1
Address:        127.0.0.1#53

Name:   api.local.pcfdev.io
Address: 192.168.11.11

$ ping api.local.pcfdev.io
ping: cannot resolve api.local.pcfdev.io: Unknown host

$ telnet 192.168.11.11 80
Trying 192.168.11.11...
Connected to 192.168.11.11.
Escape character is '^]'.

HTTP/1.1 400 Bad Request

Connection closed by foreign host.

CẬP NHẬT 2

Sau khi thử đề xuất bên dưới về việc xóa tất cả các máy chủ DNS khỏi Tùy chọn mạng ngoại trừ 127.0.0.1, tôi không thể giải quyết bất cứ điều gì. Tôi đã quản lý để có được một số gỡ lỗi đăng xuất khỏi mDNSResponder:

mDNSResponder[91]:  74: DNSServiceCreateConnection START PID[32612](ping)
mDNSResponder[91]:  74: Error socket 75 created 00000000 00000001
mDNSResponder[91]:  74: DNSServiceQueryRecord(15000, 0, api.local.pcfdev.io., Addr) START PID[32612]()
mDNSResponder[91]:  74: Error socket 75 closed  00000000 00000001 (0)
mDNSResponder[91]:  74: DNSServiceQueryRecord(api.local.pcfdev.io., Addr) ADD    0 api.local.pcfdev.io. Addr
mDNSResponder[91]:  74: Cancel 00000000 00000001
mDNSResponder[91]:  74: DNSServiceQueryRecord(api.local.pcfdev.io., Addr) STOP PID[32612]()
mDNSResponder[91]:  74: DNSServiceCreateConnection STOP PID[32612](ping)

Tôi cũng đã quan sát điều đó như được giải thích trong câu trả lời được đề xuất nslookupdigkhông gây ra bất cứ điều gì để đăng nhập mDNSResponder, nhưng các công cụ khác ( ping, curl) thì có.

Vì vậy, có vẻ như vì bất kỳ lý do gì hoặc dnsmasqkhông hoạt động (tôi có thể thiết lập kết nối TCP đến 127.0.0.1:53) hoặc mDNSResponderkhông sử dụng nó.


CẬP NHẬT 3

etc/resolve.confchấm dứt tồn tại khi bộ điều hợp wifi của tôi hoạt động, nhưng tôi không kết nối với mạng. Đây có thể là lý do tại sao các công cụ CLI không sử dụng dnsmasqmáy chủ cục bộ ?


Là bộ điều hợp mạng của bạn xuống do tình cờ? Nếu bạn đi đến 'Mạng' trong Tùy chọn hệ thống, có dấu chấm màu xanh bên cạnh bộ điều hợp mà dnsmasq được định cấu hình để sử dụng không?
xoài

Chà, tôi đang ở trên một chuyến tàu không có wi-fi, nên có lẽ vậy.
EngineeringBetter_DJ

1
Cụ thể, bộ chuyển đổi wifi đã tắt? Nếu vậy, vui lòng thử lại với bộ điều hợp wifi được bật (mặc dù nó có thể không thực sự được kết nối với internet). Để thiết lập hoạt động, dnsmasq cần phải là máy chủ DNS trên giao diện mạng đang sử dụng .
xoài

Cảm ơn vì đã cố gắng theo dõi điều này. Tôi cũng đang vật lộn với điều này, không hiểu tại sao "curl foo: 8989" không thể tìm thấy máy chủ nhưng "đào foo" thì có thể. Có, "curl 172.20.0.17:8989" hoạt động tốt. Giống như bạn, tôi có DNS mạng Wi-Fi được đặt thành 127.0.0.1 (một dnsmasq đang chạy trong bộ chứa docker). FWIW trong tình huống hiện tại của tôi, sự cố cụ thể đối với mạng wifi tôi kết nối - hoạt động tốt trên điểm phát sóng cá nhân của tôi, sự cố nằm ở wifi coffeeshop.
Jamshid

Tôi đã không thiết kế ngược lại các chương trình đang được đề cập, nhưng tôi dự đoán rằng họ đang gọi các cơ sở mã độ phân giải DNS hoàn toàn khác nhau và đó là lý do tại sao bạn thấy sự cố - một số thì chỉ cục bộ, một số khác thì không. Tôi có thể đào sâu vào curlhoặc wgetđưa chúng vào các công cụ / trình biên dịch / trình gỡ lỗi và xem điều gì thực sự xảy ra để gây ra lỗi không thể giải quyết.
bmike

Câu trả lời:


12

Có vấn đề tương tự. Tôi nghĩ bộ đệm DNS cục bộ có dữ liệu xấu từ thử nghiệm trước đây của tôi. Nó đã nhanh chóng được sửa bởi:

sudo killall -HUP mDNSResponder

1
Tôi đã nhận thấy điều đó pingdigđôi khi trả về các địa chỉ IP khác nhau (thường là với DNS đường chân trời phân tách) và lệnh này sửa nó. Nguyên nhân sâu xa là gì, tôi không chắc chắn, không may.
Gia-cơ

7

đào một mặt và curl / ping mặt khác đang lấy dữ liệu từ các máy chủ khác nhau:

đào truy vấn máy chủ DNS - trong trường hợp của bạn là localhost (127.0.0.1) - cho mục nhập cơ sở dữ liệu: địa chỉ IP liên quan đến api.local.pcfdev.io của FQDN. Bản thân máy chủ không phải chạy hoặc thậm chí tồn tại.

curl / ping cố gắng giải quyết địa chỉ IP bằng mDNSResponder hoặc bằng các phương tiện khác và cuối cùng hoạt động trên / tương tác với máy chủ từ xa. Nếu máy chủ 192.168.11.11 không chạy hoặc hoàn toàn không tồn tại, cả hai sẽ thất bại.

Bây giờ, mục nhập DNS là sai (api.local.pcfdev.io có IP khác hơn 192.168.11.11) hoặc mục nhập DNS là chính xác nhưng máy chủ 192.168.11.11 không chạy.


Thêm -AlwaysAppendSearchDomains như một cuộc tranh cãi đến / usr / sbin / mDNSResponder trong /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist không được khuyến khích. Thay vào đó, bạn nên thêm nó vào / L Library /Pferences / com.apple.mDNSResponder.plist (nguồn man mDNSResponder:):

Để khiến mDNSResponder chạy với các đối số tùy chọn này khi nó khởi chạy trên OS X 10.11 (El Capitan) và sau đó, hãy đặt các khóa boolean của LuônAppendSearchDomains hoặc NoMulticastAdSpaceements thành true trong /L Library/Preferences/com.apple.mDNSResp.

Trong trường hợp của bạn, không cần thiết phải đặt khóa này, vì đó không phải là nguyên nhân gây ra sự cố của bạn.


Sau khi đào vào VirtualBox, PCF Dev (không thành công liên tục với một số "thông tin sai" khi cố gắng đăng nhập vào VM) và dnsmasq tôi khuyên bạn chỉ nên truy vấn DNS để dnsmasq:

  • Trong Tùy chọn hệ thống> Mạng> Giao diện> Máy chủ DNS xóa tất cả các máy chủ DNS ngoại trừ 127.0.0.1 và áp dụng các thay đổi. Bạn cũng có thể định cấu hình Vị trí thứ hai với thiết lập chỉ 127.0.0.1 và giữ máy chủ DNS hiện tại của bạn trong cấu hình khác.
  • thêm một tập tin /usr/local/etc/resolv.dnsmasq.conf với nội dung

    #use your preferred DNS servers here. In the example I use some Google name servers
    nameserver 8.8.8.8
    nameserver 8.8.4.4
    
  • thêm resolv-file=/usr/local/etc/resolv.dnsmasq.conftại dòng ~ 46 của /usr/local/etc/dnsmasq.conf
  • thêm hoặc di chuyển address=/.local.pcfdev.io/192.168.11.11tại / đến dòng ~ 80 của /usr/local/etc/dnsmasq.conf
  • khởi động lại dnsmasq với:

    sudo launchctl stop homebrew.mxcl.dnsmasq
    sudo launchctl start homebrew.mxcl.dnsmasq
    

Cảm ơn đã dành thời gian trả lời. Chắc chắn có một cái gì đó lắng nghe 192.168.11.11; mục nhập DNS công cộng thực tế *.local.pcfdev.ioluôn luôn quay lại cùng một IP cục bộ, vì vậy ngay khi tôi kết nối với các inforwebs curlphải nhận được câu trả lời từ máy chủ DNS đó và có thể tìm ra địa chỉ IP nào sẽ sử dụng.
Kỹ

1
Có vẻ như curl, pingvà các nhị phân khác mà tôi muốn đánh vào thứ này đang sử dụng một phương tiện tra cứu các mục DNS (không sử dụng dnsmasqmáy chủ trên localhost) nslookupdigđang sử dụng một phương tiện khác. Tôi đoán tôi cần tìm hiểu thêm về mDNSResponder!
Kỹ

@EngineerBetter Bạn có bất kỳ mục nào khác trong Tùy chọn hệ thống> Mạng> Giao diện> DNS hơn 127.0.0.1 không? - Tôi sẽ cài đặt toàn bộ bộ phần mềm (VBox, PCF Dev, v.v.) và kiểm tra điều này ... Có cấu hình đặc biệt nào không?
klanomath

Cảm ơn một lần nữa vì đã dành thời gian để giúp tôi với điều này. Câu hỏi đã được cập nhật, vẫn không có may mắn.
EngineeringBetter_DJ

0

Tôi mất nhiều thời gian hơn để giải quyết vấn đề này. Sau khi khởi động lại mDNSResolver hàng chục lần như khuyến nghị trên các luồng khác:

sudo killall -HUP mDNSResponder

Cuối cùng tôi đã thử một cái gì đó khác. Tôi đã tắt Wi-Fi và xóa tất cả các mạng ưa thích của mình. Sau đó, tôi đã thiết lập lại kết nối Wi-Fi và mọi thứ đều hoạt động tốt:

  1. Menu Apple -> Tùy chọn hệ thống -> Wi-Fi (ở bên trái)
  2. 'Tắt Wi-Fi' rồi chọn 'Nâng cao'
  3. Xóa kết nối Wi-Fi mà bạn gặp sự cố (hoặc tất cả chúng nếu bạn muốn). Thực hiện việc này bằng cách chọn mạng Wi-Fi bạn muốn xóa và nhấn "-"
  4. Nhấp vào 'Áp dụng' và 'OK'
  5. Bật lại Wi-Fi.
  6. Chọn mạng Wi-Fi của bạn và đăng nhập lại.

YMMV, nhưng đây là những gì cuối cùng đã làm việc cho tôi. Nó có lẽ nên là điều đầu tiên tôi thử.

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.