Kết nối với Internet thông qua 3 cầu Raspberry Pi - Có thể ping, nhưng không thể tải trong trình duyệt


0

Tôi có một thiết lập như sau:

                Internet
                    |
                    |                                                           192.168.0.3
PC1                 |                                                             Laptop1                                                  
   |---------------Switch(Gateway)---------------Pi1-------Pi2---------Pi3------------|
PC2                192.168.0.1              192.168.0.*(DHCP)     192.168.0.2     Laptop2                  
                                                                                192.168.0.4

Từ máy tính xách tay, tôi có thể ping các trang web bên ngoài như '176.34.131.233' (DuckDuckGo), tuy nhiên khi tôi cố gắng kết nối với các máy chủ này thông qua trình duyệt (bằng cách dán địa chỉ IP trong thanh URL) tôi nhận được 'Không tìm thấy máy chủ'.

Từ máy tính để bàn mọi thứ hoạt động hoàn toàn tốt.

Vì vậy, rõ ràng vấn đề phải nằm ở Pi hoặc máy tính xách tay.

Các máy tính xách tay không chạy DNS do đó dán IP vào URL.

Tôi đã nhận thấy trên wireshark rằng các máy tính xách tay có thể hoàn thành bắt tay 3 bước (SYN> SYN, ACK> ACK), nhưng vì một số lý do, nó dường như hoàn thành 2 (với cùng một cổng dst và các cổng src khác nhau).

Sau khi hoàn thành bắt tay, kết nối ngay lập tức bị kết thúc bởi FIN, ACK từ máy tính xách tay theo sau là kết nối đóng bình thường của FIN khác, ACK từ máy chủ sau đó là ACK cuối cùng (Việc đóng kết nối này cũng được sao chép qua 2 cổng khác nhau) .

Không có gói HTTP GET nào được gửi đến máy chủ.

Pi đang chạy phần mềm bắc cầu mà tôi tự viết bằng python, đánh giá bằng thực tế là máy tính xách tay có thể ping máy chủ bên ngoài và có thể hoàn thành bắt tay 3 cách, có vẻ như phần mềm hoạt động.

Vì vậy, câu hỏi là tại sao trên trái đất có 2 bộ bắt tay 3 cách đang diễn ra và tại sao tôi có thể ping một trang web, nhưng không tải nó trong trình duyệt của tôi?

Nếu bất cứ ai có bất kỳ ý tưởng hoặc đề xuất, nó sẽ được đánh giá cao nhất.

Suy nghĩ của tôi là cách mà máy tính xách tay đã được cấu hình (Chạy linux), một loại tường lửa trong bộ định tuyến chặn dữ liệu hoặc có lỗi cơ bản với mã của tôi. Tôi đã xem xét tất cả mà không có kết quả.


Bạn có thể giải thích làm thế nào các pi được kết nối và ý nghĩa của bạn bằng cách bắc cầu. Bạn có thể có nghĩa là phát sóng lại?
davidgo

Tất cả thông qua các giao diện không dây, bằng cách bắc cầu tôi có nghĩa là Pis đang hoạt động như một cầu nối mạng. Pi1 được kết nối với công tắc khi bạn kết nối máy tính xách tay của mình với điểm truy cập. Sau đó, có các kết nối adhoc giữa giao diện xa Pis và Pi3s là điểm truy cập để máy tính xách tay kết nối. vi.wikipedia.org/wiki/Bridging_(networking)
Slinky

Mỗi thiết bị Pi của bạn có 2 giao diện không dây? Nếu không, bạn không bắc cầu, bạn đang lặp lại. Điều này có thể giải thích nhiều gói giống hệt nhau.
davidgo

Có 2 giao diện trên mỗi, nhờ sự giúp đỡ, nó thực sự được đánh giá cao! Nhưng gronostaj đã bắn đinh vào đầu
Slinky

Câu trả lời:


2

Phần này có lẽ là cốt lõi của vấn đề của bạn:

Các máy tính xách tay không chạy DNS do đó dán IP vào URL.

Khi một trình duyệt yêu cầu một tài liệu qua HTTP, nó sẽ gửi Hosttiêu đề chỉ định tên miền được yêu cầu. Tiêu đề này hữu ích để chạy "máy chủ ảo", đó là lưu trữ nhiều trang web trên một địa chỉ IP. Máy chủ web kiểm tra Hosttiêu đề đến để xác định khách hàng nào cố gắng liên hệ và xử lý yêu cầu phù hợp.

Nhập địa chỉ IP trực tiếp vào thanh địa chỉ của trình duyệt sẽ không có Hosttiêu đề nào được gửi. Nếu máy chủ được cấu hình để chạy trong thiết lập máy chủ ảo (khá phổ biến ngay cả đối với các máy chủ lưu trữ một trang web), nó sẽ không thể xác định máy chủ ảo nào bạn đang cố gắng kết nối và nó sẽ trả lời với một số lỗi chung phản hồi như 404.

Nếu bạn không muốn sử dụng DNS thực, có một cách giải quyết đơn giản: thêm tên miền thực vào hoststệp. Bạn chưa chỉ định loại HĐH nào đang chạy trên các máy có vấn đề, vì vậy đây là hướng dẫn chung. Các hoststập tin nằm ở %SystemRoot%\System32\drivers\etc\hoststrên Windows và /etc/hoststrên Linux (xem Wikipedia cho một danh sách toàn diện hơn ). Đó là một tệp văn bản đơn giản, nhưng bạn sẽ cần đặc quyền quản trị để chỉnh sửa nó. Chỉ cần nối một dòng ở định dạng <ip> <domain>ở cuối, ví dụ:

151.101.193.69 superuser.com

Lưu các tập tin. Mục này sẽ ghi đè độ phân giải DNS cho miền này. Tất cả các khách hàng HTTP sử dụng hệ điều hành cung cấp DNS bây giờ sẽ giải quyết superuser.comđến 151.101.193.69, vì vậy các trình duyệt sẽ gửi đúng Hosttiêu đề.


Bạn anh hùng tuyệt đối, đó chính xác là vấn đề!
Slinky

Tôi sẽ chỉ cần để DNS hoạt động chính xác sau đó
Slinky
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.