Powershell với hai kết nối mạng


0

Máy tính tôi đang sử dụng (Windows 7 Enterprise) có hai kết nối mạng, một kết nối cung cấp quyền truy cập vào internet và mạng đại học - bộ điều hợp này trong bộ kết nối nên được sử dụng cho hầu hết mọi thứ. Bộ điều hợp thứ hai là một mạng cục bộ được kết nối với một số thiết bị phòng thí nghiệm thông qua bộ định tuyến và không có truy cập internet.

Tôi gặp vấn đề với việc git hoạt động trong tình huống này. Với bộ điều hợp thứ hai (cục bộ) bị vô hiệu hóa, mọi thứ hoạt động như mong đợi. Tuy nhiên, khi bộ điều hợp được bật, powershell không thể truy cập github - ví dụ như các yêu cầu kéo không nêu lỗi 443. Tuy nhiên, internet vẫn hoạt động cho mọi thứ khác ngoài powershell - ví dụ: IE / Firefox / cmd / v.v. Vì vậy, có vẻ như powershell đang cố gắng sử dụng bộ điều hợp thứ hai mặc dù nó không có quyền truy cập internet.

Thật thú vị nếu tôi chạy ping github.com từ powershell, phản hồi đầu tiên bị mất, nhưng sau đó tất cả các phản hồi khác được nhận. Nếu tôi sau đó cố gắng chạy git pull một lần nữa, nó kết nối, nhưng chỉ một lần. Nếu tôi cố gắng kéo lại, nó thất bại. Điều này có thể lặp lại, nếu tôi ping github trước khi tôi chạy lệnh git, thì nó hoạt động cho lệnh đó - nhưng nếu lệnh mất quá nhiều thời gian (như đồng bộ hóa một kho lưu trữ lớn), nó sẽ thất bại một nửa.

Tôi thực sự không chắc chắn những gì gây ra điều này. Tôi đã thử một số thứ, bao gồm cài đặt thủ công các số liệu giao diện trong Windows để bộ điều hợp đầu tiên là một số rất thấp và thứ hai là một số rất cao (vì vậy nó không thuận lợi). Nhưng điều này dường như không làm gì để giúp git - nó đã giải quyết vấn đề tôi gặp phải với các cửa sổ truy cập internet, nhưng không giúp được gì với git. Tôi cũng đã thử đặt bộ điều hợp thứ hai để có IP tĩnh không có cổng mặc định (như được đề xuất trong phần này câu hỏi siêu người dùng ).

Có điều gì tôi đang thiếu?


Đáp lại @LazyBadger, tôi đã chạy tracert github.com và nhận được kết quả sau:

Tracing route to github.com [192.30.252.131]
over a maximum of 30 hops:

  1  ******** [192.168.*.*]  reports: Destination host unreachable.

Nếu tôi chạy route print 0*, Tôi nhận được như sau:

===========================================================================
Interface List
 14...** ** ** ** cd 5e ......Intel(R) I210 Gigabit Network Connection #2  <- This one is the primary adapter
 13...** ** ** ** cd 5f ......Intel(R) I210 Gigabit Network Connection
  1...........................Software Loopback Interface 1
===========================================================================

IPv4 Route Table
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0        129.*.*.*       129.*.*.*      2
===========================================================================
Persistent Routes:
  None

IPv6 Route Table
===========================================================================
Active Routes:
  None
Persistent Routes:
  None

(*) Lưu ý: Tôi đã xóa các địa chỉ IP và MAC, nhưng 192.168.*.* là bộ điều hợp thứ hai không có truy cập internet và 129.*.*.* là bộ chuyển đổi đầu tiên có truy cập internet.


Nếu tôi sau đó chạy ping github.com, Tôi nhận được những điều sau đây

Pinging github.com [192.30.252.128] with 32 bytes of data:
Reply from 192.168.*.*: Destination host unreachable.
Reply from 192.30.252.128: bytes=32 time=84ms TTL=52

Và sau đó chạy tracert github.com tôi có

Tracing route to github.com [192.30.252.128]
over a maximum of 30 hops:

      1    <1 ms    <1 ms    <1 ms  ********* [129.*.*.*]
      ..............
      7    82 ms    82 ms    83 ms  ae-4-90.edge3.Washington4.Level3.net [4.69.149.210]
      8    83 ms    83 ms    83 ms  GITHUB-INC.edge3.Washington4.Level3.net [4.53.116.102]
      9    84 ms    84 ms    84 ms  192.30.252.201
     10    84 ms    84 ms    84 ms  github.com [192.30.252.128]

Sau đó, nó không hoạt động trở lại - về cơ bản, lệnh đầu tiên sau khi tôi thực hiện ping sẽ hoạt động, nhưng bất kỳ lệnh nào khác sẽ quay trở lại sử dụng bộ điều hợp sai cho đến khi tôi thực hiện một ping khác.


Hấp dẫn. tracert hoạt động tốt cho các trang web khác như Google và như vậy. Sự khác biệt dường như là bất kỳ bắt đầu với IP 192. dường như đi qua bộ chuyển đổi sai.


Git cục bộ với repo Github từ xa?
Lazy Badger

Làm không phải ping, đường dẫn thử nghiệm với tracert luôn luôn. Và hiển thị ít nhất route print 0*
Lazy Badger

.... tôi chạy tracert và nó cho thấy rằng nó cố gắng đi qua bộ điều hợp thứ hai (bộ không có truy cập internet) và vì vậy không thành công. Có lẽ nó không phải là một vấn đề git chút nào mà là một quyền hạn?
Tom Carpenter

1
Điều đó không giúp quá nhiều. : D Hãy chạy đi route print một lần nữa mà không cần thêm đối số và cung cấp đầu ra của nó. Git không có mối quan hệ đặc biệt với Powershell. pingtracert cũng không phải là lệnh Powershell.
Daniel B

@DanielB - bảng lộ trình đầy đủ là một sự lãng phí thời gian ( route print 192* sẽ hiển thị đường dẫn xấu, IMNSHO). Rõ ràng, Tom phải thêm kiên trì tuyến đường đến Github kết thúc chính xác giao diện hoặc sửa netmask "quá rộng" trên giao diện cục bộ 192.168
Lazy Badger

Câu trả lời:


3

Chà, hóa ra đó là một cấu hình sai của bộ định tuyến. Vì một số lý do, mặc dù thực tế là mặt nạ mạng con được cấu hình để được 255.255.255.0, Windows đã thiết lập giao diện thứ hai để có mặt nạ mạng con 255.0.0.0. Sau khi thay đổi một số cài đặt khác trong bộ định tuyến, mặt nạ mạng con chính xác đã được chỉ định.

Về cơ bản là vì mặt nạ mạng con quá rộng và tình cờ Github sử dụng 192.x.x.x là địa chỉ IP bên ngoài của nó, tất cả các yêu cầu tới Github đều được chuyển qua giao diện thứ hai. Khi mặt nạ mạng con được sửa chữa, vấn đề sẽ biến mất.

Điều này cũng giải thích tại sao các trang web như Google có thể được truy cập chính xác từ PS nhưng Github không 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.