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.
tracert
luôn luôn. Và hiển thị ít nhất route print 0*
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?
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. ping
và tracert
cũng không phải là lệnh Powershell.
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