Internet Sharing phát sai địa chỉ máy chủ DNS


6

Tôi đang sử dụng MacBook Pro với OS X Mavericks 10.9.2. Nó kết nối với internet thông qua khóa USB 3G và tôi muốn chia sẻ kết nối internet đó qua wifi. Tuy nhiên, trên các thiết bị kết nối với điểm truy cập wifi đã tạo, tra cứu DNS sẽ không hoạt động (mặc dù tôi có thể ping 8.8.8.8 tốt). Nếu tôi định cấu hình tĩnh các thiết bị để sử dụng 8.8.8.8, mọi thứ đều hoạt động, nhưng không phải mọi thiết bị đều hỗ trợ điều đó (hoặc chỉ khi bạn cũng sẵn sàng định cấu hình IP tĩnh và cổng).

Vấn đề dường như là OS X cấu hình bootp (máy chủ DHCP) để phát địa chỉ máy chủ DNS của chính MacBook:

$ cat /etc/bootp.list
...
            <key>dhcp_domain_name_server</key>
            <array>
                <string>192.168.2.1</string>
            </array>
...

Đây thực sự là địa chỉ IP của chính máy:

$ ifconfig
...
bridge100: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=3<RXCSUM,TXCSUM>
    ether 02:26:bb:66:19:64
    inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255
...

Và đó là những gì khách hàng đang nhận được trong phản hồi DHCP:

$ sudo tcpdump -vv
15:26:07.265635 IP (tos 0x0, ttl 255, id 9846, offset 0, flags [none], proto UDP (17), length 328)
    192.168.2.1.bootps > 192.168.2.2.bootpc: [udp sum ok] BOOTP/DHCP, Reply, length 300, xid 0x4e0988af, Flags [none] (0x0000)
      Your-IP 192.168.2.2
      Server-IP 192.168.2.1
      Client-Ethernet-Address 10:bf:48:cc:49:7d (oui Unknown)
      sname "ip-77-24-232-37.web.vodafone.de"
      Vendor-rfc1048 Extensions
        Magic Cookie 0x63825363
        DHCP-Message Option 53, length 1: ACK
        Server-ID Option 54, length 4: 192.168.2.1
        Lease-Time Option 51, length 4: 85536
        Subnet-Mask Option 1, length 4: 255.255.255.0
        Default-Gateway Option 3, length 4: 192.168.2.1
        Domain-Name-Server Option 6, length 4: 192.168.2.1

Bây giờ, điều đó sẽ ổn nếu nó thực sự hoạt động như viết ở đây , tức là OS X chạy một liên kết ( named ) chính máy chủ, chỉ chuyển tiếp các yêu cầu và phản hồi DNS tới các máy chủ của ISP.

Tuy nhiên ... sử dụng tcpdump Tôi có thể thấy rằng máy khách đang nhận được phản hồi lỗi từ tra cứu DNS của nó:

$ sudo tcpdump
15:23:33.181447 IP 192.168.2.2.57291 > 192.168.2.1.domain: 32713+ A? google.com. (28)
15:23:33.181528 IP 192.168.2.1 > 192.168.2.2: ICMP 192.168.2.1 udp port domain unreachable, length 36

Thật vậy, không named máy chủ đang chạy và dường như nó không được cài đặt:

$ ps aux | grep named
thomas           2175   0.0  0.0  2423368    188 s000  R+    3:14pm   0:00.00 grep named
$ which named
$

Không có gì khác đang nghe trên cổng UDP 53, mặc dù có một thứ gọi là mDNSResponder trên 5353:

$ sudo lsof -i -P | grep 53
mDNSRespo   47 _mdnsresponder    8u  IPv4 0x4dcb7c0f075daa1d      0t0    UDP *:5353
mDNSRespo   47 _mdnsresponder    9u  IPv6 0x4dcb7c0f075da835      0t0    UDP *:5353
natpmpd   1664           root    4u  IPv4 0x4dcb7c0f064b6f15      0t0    UDP 192.168.2.1:5351

Bây giờ tôi có thể nghĩ ra hai cách để khắc phục điều này, không thực tế lắm:

  1. Chạy một số máy chủ DNS trên cổng UDP 53. Thật không may, không có cái nào được cài đặt.
  2. Yêu cầu DHCP phân phát địa chỉ máy chủ DNS thực sự hoạt động, như 8.8.8.8. thật không may InternetSharing ghi đè ứng dụng /etc/bootp.plist mỗi lần chia sẻ internet được bật, vì vậy ngay cả khi tôi đã thêm địa chỉ IP ở đó và ngay cả khi nó hoạt động, nó sẽ không hoạt động mãi mãi.

Nhưng một cái gì đó cho tôi biết rằng cái này nên (và thường không) hoạt động chính xác ra khỏi hộp ... tôi đang thiếu gì?


Tôi đã chia sẻ internet đang hoạt động trên MacBook giữa năm 2010 chạy OS X 10.9.2. Tôi không có named Dịch vụ đang chạy, nhưng tôi có 53 hoạt động. Lưu ý tôi đã xóa giá trị hex khỏi lsof mDNSRespo 42 _mdnsresponder 8u IPv4 0t0 UDP *:5353 mDNSRespo 42 _mdnsresponder 9u IPv6 0t0 UDP *:5353 mDNSRespo 42 _mdnsresponder 64u IPv4 0t0 UDP *:53 mDNSRespo 42 _mdnsresponder 65u IPv6 0t0 UDP *:53 mDNSRespo 42 _mdnsresponder 66u IPv4 0t0 TCP *:53 (LISTEN) mDNSRespo 42 _mdnsresponder 67u IPv6 0t0 TCP *:53 (LISTEN)
MichaelStoner

Hấp dẫn. Tôi bắt đầu nghĩ rằng có thể có một số phần mềm không phải của Apple gây rối với cấu hình.
Thomas

Có, sau khi tôi kiểm tra hệ thống của mình để tìm dịch vụ 'có tên', tôi đã có một google nhanh chóng và nhiều dự án phần mềm khác nhau khởi động bộ phản hồi DNS. Chúc may mắn trong việc tìm thấy nó. Bạn đã sửa chữa quyền trên ổ cứng btw chưa?
MichaelStoner

Chạy điều xác minh trong Disk Utility ngay bây giờ. Không có gì nhảy ra khỏi tôi.
Thomas

1
Rõ ràng trong Mavericks, chia sẻ internet được cho là cho phép khả năng proxy DNS trong quy trình mDNSResponder (các phiên bản trước đã sử dụng BIND / có tên, nhưng không được cài đặt trong Mav). Thật không may, tôi không thể thấy proxy DNS được kích hoạt như thế nào hoặc điều gì có thể can thiệp vào nó ...
Gordon Davisson

Câu trả lời:


2

Các bài báo bạn tham khảo đã thực sự chính xác khi nó được xuất bản và đó là cách nó hoạt động trước Mavericks. Bên dưới Mountain Lion 'được đặt tên' được khởi chạy khi Internet Sharing hoạt động với /etc/com.apple.named.proxy.conf làm tệp cấu hình. Đây là tất cả có thể quan sát được dưới Mountain Lion - tôi đã xác minh nó.

Tuy nhiên, độ phân giải tên miền không chỉ dựa trên DNS trong OS X giống như trong OSen khác mà thay vào đó, nó dựa trên Dịch vụ thư mục - cho phép tra cứu DNS từ các tệp phẳng, NIS, NetInfo, LDAP, ZeroConfig / Bonjour. .. và DNS - và đó là mDNSResponder được sử dụng để phân giải các lượt tên này. (Theo trang người đàn ông của nó mDNSResponder is also the system-wide Unicast DNS Resolver. Đó là những gì (hoặc nên) thực hiện độ phân giải DNS cho các máy khách được chia sẻ Internet của bạn trong Mavericks. (Thật kỳ lạ khi họ bắn lên named dưới Mt Lion thay vì sử dụng mDNSResponder hồi đó.)

Khi Chia sẻ Internet được kích hoạt có tên (trước Mavericks) hoặc mDNSResponder (Mavericks) là "máy chủ DNS" sẽ thực hiện phân giải tên cho Chia sẻ Internet và điều đó tạo ra 192.168.2.1 một cách chính xác cho máy khách DNS của NAPT'ed Chia sẻ. Vì vậy, câu trả lời thẳng thắn và đơn giản cho các câu hỏi của bạn là nó không đưa ra "địa chỉ máy chủ DNS sai".

Điều này có thể giúp tôi thiết lập Chia sẻ Internet để chia sẻ kết nối WiFi của mình qua Ethernet. Các khách hàng được phân phối bởi Internet Sharing đã gửi các yêu cầu DNS đến 192.168.2.1 đã được quan sát để nhận các truy vấn chính xác từ trình duyệt và khi phát hành dig @192.168.2.1 apple.com; Tôi đã quan sát điều này trong hành động với tcpdump để xác minh. Tất cả mọi thứ "chỉ hoạt động" như bạn mong đợi.

Tôi lưu ý rằng trong cấu hình này từ máy chủ lưu trữ Mac tôi cũng có thể telnet 192.168.2.1 53 và kết nối với mDNSResponder. Tôi cũng lưu ý rằng tôi có Lệnh dịch vụ cho các mạng được định cấu hình với WiFi được ưu tiên hơn Ethernet.

Tuy nhiên, khi chạy ngược lại, chia sẻ kết nối Ethernet qua WiFi, ban đầu tôi gặp phải vấn đề tương tự mà bạn đang gặp phải. Cụ thể tôi đã thấy yêu cầu DNS UDP được gửi qua nhưng không có phản hồi, giống như bạn quan sát. Ping chuyển qua đến 8.8.8.8 và giải quyết chống lại 8.8.8.8 bằng cách sử dụng đào cũng hoạt động tốt. Tôi đã chuẩn bị sẵn sàng để viết lỗi này nhưng sau đó tôi đã có cơ hội khởi động lại MacBook Pro của mình và thử lại lần nữa, cũng đảm bảo lần này tôi có Ethernet được ưu tiên hơn WiFi trong Lệnh dịch vụ khung tùy chọn mạng. Lần này nó "chỉ hoạt động" và tôi không thể tạo lại vấn đề. Vấn đề được giải quyết bằng cách khởi động lại và kiểm tra thứ tự dịch vụ.

Ngoài ra, tôi xác minh rằng tôi có thể:

  • Phát hành một dig @192.168.2.1 apple.com từ một khách hàng (được gán 192.168.2.3) của Chia sẻ Internet và nhận được phản hồi thành công. Tôi cũng đã quan sát truy vấn và phản hồi UDP bằng tcpdump:

01:01:05.620240 IP 192.168.2.3.58817 > 192.168.2.1.domain: 34923+ A? apple.com. (27) 01:01:06.051566 IP 192.168.2.1.domain > 192.168.2.3.58817: 34923 3/0/0 A 17.149.160.49, A 17.172.224.47, A 17.178.96.59 (75)

  • Từ máy chủ lưu trữ Mac đã có thể telnet 192.168.2.1 53 và nhận được một kết nối.

Chia sẻ Internet luôn luôn là một chút mong manh. Tôi thường thấy hành vi kỳ lạ và thấy tốt nhất là khởi động lại trước khi thử chạy Chia sẻ Internet hoặc ít nhất là "Làm cho [Dịch vụ] không hoạt động" trong Tùy chọn mạng cho các giao diện được đề cập và sau đó đặt lại chúng hoạt động. (Cũng chắc chắn là "Áp dụng" khi thực hiện các thay đổi như vậy ".) Ngoài ra, Lệnh dịch vụ (điều khiển các cổng mặc định) cũng có thể có tác động (như mong đợi.) Bạn cũng có thể chắc chắn rằng mình đang sử dụng Apple đã cung cấp Vị trí "Tự động" (hoặc một bản fax hợp lý). Hãy nhớ khi gỡ lỗi, mỗi giao diện mạng có thể có cổng riêng và thích sử dụng máy chủ DNS hơn sau khoảng Leopard.

Vì vậy, tôi đề nghị ba điều: (1) khởi động lại và xác nhận quyền ưu tiên đặt hàng dịch vụ mạng của bạn và / hoặc (2) cài đặt sạch Mavericks để xem điều này có giải quyết được sự cố của bạn không, cũng như (3) xác minh bạn có thể nhận được Internet không Chia sẻ làm việc trong đó Ethernet được chia sẻ qua WiFi và ngược lại. Nếu bạn không thể làm cho (3) hoạt động thì bạn cần xem xét một cái gì đó được cấu hình cụ thể sai trên máy Mac của bạn và một lần nữa gợi ý cài đặt sạch.

Nếu bạn có thể làm cho nó hoạt động cho Ethernet - & gt; WiFi và WiFi - & gt; Ethernet, điều này gợi ý điều gì đó với USB Dongle - và có lẽ điều chỉnh Đơn đặt hàng dịch vụ để có thể được ưu tiên cao hơn.

Đảm bảo rằng bạn không có bất kỳ quy tắc Tường lửa nào hoặc đang chạy Little Snitch hoặc bất cứ điều gì có thể can thiệp.

Chia sẻ Internet cũng xuất hiện để có một số tùy chọn gỡ lỗi nếu bạn phát hành

$ /usr/libexec/InternetSharing --help

Những tệp này và tệp nhật ký cùng với tệp nhật ký cho mDNSResponder cũng có thể hữu ích nếu bạn vẫn gặp sự cố.

Nhưng như câu trả lời cho câu hỏi: Không đưa ra địa chỉ máy chủ DNS sai trong DHCP vì 192.168.2.1 là máy chủ DNS "đúng" để chia sẻ Internet dựa trên cách thức thiết kế để hoạt động. Và mDNSResponder là những gì nên xử lý DNS trên máy chủ đang chạy Chia sẻ Internet dưới Mavericks. Không `named là cần thiết.


Chấp nhận câu trả lời này bởi vì nó ghi lại chi tiết như thế nào Nên công việc. Tôi có thể thực hiện một cú đâm khác sau đó, nhưng hy vọng băng thông rộng của tôi sẽ sớm được kết nối và tôi sẽ không cần khóa ngu ngốc nữa :)
Thomas

@Thomas, vậy câu trả lời không giải quyết được vấn đề? Và bạn đã thử bất kỳ lời đề nghị từ câu trả lời khác?
l'L'l

Tôi không có 3G Dongle để kiểm tra hình dạng mạng cụ thể của bạn, mặc dù nó hoạt động như tôi mô tả khi tôi kết nối iPhone của mình và nên có sự tương đương giữa bất kỳ giao diện mạng nào được chia sẻ.
ColonelMode

Tôi gặp vấn đề tương tự và tôi không thể tìm ra cách để nó hoạt động. Cuối cùng tôi cũng đi theo wiki.base22.com/display/btg/ để đặt máy chủ DNS của tôi thành 8.8.8.8.
some user

2

Vấn đề dường như nằm ở chỗ bạn đã thu hẹp tìm kiếm; mặc dù đó không phải là trường hợp khách hàng nhận nhầm địa chỉ Máy chủ DNS, nhưng liên quan nhiều hơn đến các máy khách không thể sử dụng 192.168.2.1 làm Máy chủ DNS của họ. Không rõ bạn đã cài đặt Máy chủ DNS trên hệ thống bằng Internet Sharing như thế nào, nhưng vấn đề có thể nằm trong lĩnh vực đó. Vì vậy, với điều đó, dchp_domain_name_server Địa chỉ IP trong bootpd.plist là chính xác (ít nhất là bình thường).

Tôi khuyên bạn nên thực hiện một số kiểm tra đơn giản:

Mở tùy chọn hệ thống & gt; Chia sẻ , sau đó kiểm tra như sau:

  1. Chia sẻ kết nối của bạn từ: Wi-Fi
  2. Để máy tính sử dụng: Wi-Fi, Ethernet

Nếu bạn kiểm tra Ethernet, bạn có thể nhận được hộp thoại:

Nếu bạn bật cổng này, nhà cung cấp dịch vụ Internet của bạn có thể   chấm dứt dịch vụ của bạn để ngăn chặn bạn phá vỡ mạng của nó.

Trong một số trường hợp (ví dụ: nếu bạn sử dụng modem cáp), bạn có thể   vô tình ảnh hưởng đến cài đặt mạng của ISP của bạn và vi phạm   các điều khoản của thỏa thuận dịch vụ của bạn.

Tôi không chắc chắn điều đó có nghĩa là gì (mặc dù tôi cảm thấy bị vi phạm bởi ISP của mình).

Tùy chọn hệ thống & gt; Cài đặt mạng & gt; Ethernet / Wi-Fi :

  1. Định cấu hình IPv4 - Sử dụng DHCP
  2. Sau đó dưới Advanced...
  3. Cấu hình IPv6 - Tự động

Thẻ DNS & gt; Máy chủ DNS :

(Normally this would be set to your Router IP from the previous TCP/IP Tab:
Router: ... (3G USB Dongle IP Address)

/etc/bootpd.list

  1. Ngừng chia sẻ Internet.
  2. Mở /tmp/bootpd.plist
  3. Xác định vị trí khóa này:

<key>reply_threshold_seconds</key> <integer>4</integer>

  1. Thay đổi giá trị 4 thành 0
  2. Bắt đầu chia sẻ Internet.

* Như bạn đã biết khi dừng Chia sẻ Internet, nó sẽ xóa sạch các cài đặt. Một giải pháp khả thi cho điều đó là tạo ra một công việc định kỳ hoặc trình khởi chạy luôn giữ các cài đặt của bạn. Cũng có một vài lựa chọn cho bootpd có thể được chạy qua Terminal mà bạn có thể không biết.

Ghi chú khác :

  • Kiểm tra (các) thiết bị / máy tính tại 192.168.2.2, v.v. không chặn 192.168.2.1
  • Có thể nếu tường lửa nội bộ OS X được bật, OS X chuyển tiếp và nhận yêu cầu từ Internet đến các thiết bị / máy tính sử dụng Internet Sharing, nhưng có thể không chuyển tiếp trả lời cho chúng (DNS).
  • Định cấu hình thiết bị / máy tính để sử dụng IP tĩnh và (các) máy chủ DNS khác với 192.168.2.1 (nhưng có thể không phải là giải pháp tối ưu như bạn đã nói). Ngoài ra, trong một số trường hợp, cài đặt IP tĩnh có thể không hoạt động (DHCP thường được khuyên dùng cho Chia sẻ Internet và mặc định).
  • Một số Bộ định tuyến / Bộ định tuyến USB 3G có cài đặt AP Isolation, cần được vô hiệu hóa để chia sẻ Internet.

Tôi biết bạn không phải là n00b và có khả năng đã kiểm tra nhiều thứ trong số này, tuy nhiên, đó có thể chỉ là một điều nhỏ mà bạn có thể đã bỏ lỡ trên đường đi. Ngoài ra, nếu không có những điều đơn giản này có vẻ giúp giải quyết vấn đề, có những lệnh cụ thể hơn tôi có thể cung cấp trong khi chờ kết quả.


0

Dòng này trong của bạn tcpdump là câu trả lời:

15:23:33.181528 IP 192.168.2.1 > 192.168.2.2: ICMP 192.168.2.1 udp port domain unreachable, length 36

Nó có nghĩa là của bạn Firewall hoặc một phần mềm khác có vai trò tương tự hoặc cấu hình thủ công của bạn về /etc/pf.conf chặn yêu cầu DNS của bạn tiếp cận MBP của bạn.

Tắt bất kỳ chức năng lọc nào một lần để tìm ra chức năng lọc nào. Sau khi tìm thấy, cấu hình chính xác.

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.