Mất điện tạm thời trong Linux


8

Tôi đang đối mặt với một vấn đề rất khó chịu mà tôi nhận thấy một tuần kể từ bây giờ và tôi không thể tìm thấy câu trả lời: mạng của tôi đột nhiên ngừng phản hồi, thường quay lại đúng 25 giây sau. Tôi đã sử dụng kernel 3.10.4 và bây giờ đã chuyển sang 3.11-rc4 để xem có gì thay đổi không, nhưng không, hành vi là như nhau. Và vì đây là một vấn đề khó phát hiện do thực tế việc lướt web thường xảy ra trong "vụ nổ" và việc ngừng hoạt động là hoàn toàn ngẫu nhiên, tôi thực sự không thể biết vấn đề này cũng xuất hiện trong kernel trước đó (tôi luôn sử dụng tùy chỉnh nhưng hạt nhân chưa được ghép từ kernel.org, tất cả do tôi tự biên soạn)

Tôi không thể nói hạt nhân là thủ phạm một trong hai, nhưng tôi có thể nói không có manh mối về các bản ghi hệ thống (tôi đã kiểm tra cả hai /var/log/syslog/var/log/messagesvà không có gì bất thường có) và phần cứng mà dường như không có lỗi, cho vấn đề chương trình sử dụng một trong các thẻ mạng của tôi:

lspci output:

02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5751 Gigabit Ethernet PCI Express (rev 01)
04:00.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone] (rev 30)

và tôi đã cố gắng trao đổi các cổng chuyển đổi ethernet và vẫn không có ai khác làm việc ở đó có vấn đề ngoại trừ tôi (mặc dù chúng tôi sử dụng các máy tương tự, tôi là người duy nhất sử dụng Linux, vì vậy tôi đã phải thực hiện một số trò đùa khét tiếng về nó như ừm ... hehe).

Tôi chạy wireshark trên máy của mình và để nó liên tục ping cổng của chúng tôi và một máy khác trên cùng phân khúc mạng. Sau đó, ở dấu hiệu đầu tiên của sự cố mạng, tôi sẽ kiểm tra nó và xác minh rằng cổng đã dừng phản hồi ping, nhưng máy kia vẫn ở đó phản hồi bình thường. Một số lần khác là máy khác dừng đáp ứng và cổng vẫn ổn, và một số lần khác cả hai đều dừng đáp ứng. Tôi không biết phải làm gì khác, vì vậy tôi muốn một số trợ giúp hoặc mẹo về cách gỡ lỗi này thêm, vì nhật ký hệ thống là hoàn toàn bình thường.

Tôi có tập tin cấu hình kernel và tập tin chụp từ wireshark hiển thị tình huống. Tôi có thể đăng ở đây hoặc tại một số trang web pastebin trong trường hợp bất kỳ ai thấy hữu ích để hiểu trường hợp này, chỉ xin vui lòng cho tôi biết mức độ chi tiết tôi nên sử dụng (tôi đoán mức độ gói mà không có dữ liệu thô là đủ).



Điều này nghe có vẻ giống như xung đột địa chỉ IP (tức là một số máy khác có cùng địa chỉ IP như của bạn). Các máy chủ khác xoay qua lại tùy thuộc vào cái nào chúng nhận được phản hồi ARP từ gần đây nhất.
Gilles 'SO- ngừng trở nên xấu xa'

Gilles, tôi khá chắc chắn IP của tôi là duy nhất trên mạng, nhưng giả sử điều đó có thể xảy ra thì tôi vẫn nghĩ rằng nó sẽ không giải thích được một máy chủ bị ping bình thường trong khi máy chủ kia thì không (chúng đang bị ping đồng thời). Bạn không đồng ý à?
Claudio

@Gilles, bạn đã đúng. Hôm nay tôi mới thấy điện thoại di động của ai đó đang sử dụng IP của tôi thông qua việc gán DHCP (IP của tôi đã được sửa nhưng nhóm DHCP bị chồng chéo). Như tôi đã nói, ban đầu tôi đã loại bỏ khả năng này vì tôi có thể ping máy chủ khác trong khi máy chủ đầu tiên không thể truy cập được, nhưng hôm nay tôi đã nhanh chóng thay đổi IP của mình trong khi mọi thứ dừng lại và có IP của tôi được ping từ một NIC khác. Bạn có vui lòng chuyển bình luận của bạn thành một câu trả lời để tôi có thể chấp nhận nó không? Dù sao, bạn là người đầu tiên thực sự trả lời nó. Cảm ơn!
Claudio

Câu trả lời:


10

Các triệu chứng phù hợp với xung đột địa chỉ IP. Xung đột địa chỉ IP phát sinh khi máy của bạn và một số máy khác trên cùng một mạng đang cố sử dụng cùng một địa chỉ IP .

Trên mạng liên kết cục bộ, việc đánh địa chỉ dựa trên địa chỉ MAC . Mỗi thẻ Ethernet có địa chỉ MAC riêng (không được cấu hình sai hoặc không đúng). Một bộ định tuyến quyết định nơi gửi gói IP sẽ gửi yêu cầu ARP cho địa chỉ IP đích trên tất cả các cổng của nó. Thông điệp đó đôi khi được biết đến như là người có tên: bộ định tuyến đang cố gắng tìm ra đồng nghiệp nào chịu trách nhiệm cho địa chỉ IP này. Khi bộ định tuyến nhận được phản hồi chứa địa chỉ MAC, nó có thể xây dựng và gửi khung Ethernet (gói Ethernet) chứa gói IP đến địa chỉ MAC đó. Vì quá trình trao đổi này mất một thời gian, bộ định tuyến sẽ lưu bộ đệm thông tin ARP gần đây. (Có các loại thông báo ARP khác, nhưng những gì tôi đã giải thích ở đây là đủ để hiểu vấn đề hiện tại.)

Vì vậy, tóm lại, các bộ định tuyến cần biết thiết bị vật lý nào có mỗi địa chỉ IP mà chúng đang gửi các gói IP đến. Vậy điều gì xảy ra khi có hai thiết bị yêu cầu cùng một địa chỉ IP? Bộ định tuyến nhận được phản hồi từ một trong các thiết bị và từ đó nó quyết định rằng địa chỉ IP này thuộc về thiết bị đó, cho đến khi mục nhập bộ đệm tương ứng hết hạn. Sau khi hết bộ nhớ cache, bộ định tuyến sẽ gửi yêu cầu ARP mới và có thể thiết bị kia sẽ trả lời nhanh hơn lần này. Điều này giải thích tại sao những tình huống như vậy không ổn định: một phút bộ định tuyến đang nói chuyện với bạn, phút tiếp theo nó nói chuyện với anh chàng kia.

Nếu bạn liên tục ping ai đó, thì bộ định tuyến sẽ giữ địa chỉ IP của bạn trong bộ đệm ARP của nó mọi lúc. Vì vậy, trong khi bạn đang ping, chỉ có một cửa sổ nhỏ trong đó anh chàng kia có thể thay thế bạn trong bộ đệm (sau khi mục bộ nhớ cache của bạn hết hạn, trước khi ping tiếp theo xuất hiện). Đó là lý do tại sao quan sát vấn đề khiến nó gần như biến mất, điều này có thể gây bực bội cho đến khi bạn nhận ra vấn đề có thể là gì.

Trong trường hợp của bạn, có vẻ như bộ định tuyến cục bộ của bạn giữ các mục trong bộ đệm trong 25 giây. Khi bạn ở trong bộ đệm, bạn sẽ ổn trong 25 giây. Sau đó, đôi khi anh chàng kia đến, vào những khoảnh khắc trông ngẫu nhiên, và bạn ra khỏi đó trong 25 giây.

Khi bạn cố gắng liên hệ với nhiều máy trên cùng một liên kết cục bộ, mỗi máy có bảng ARP riêng, do đó bạn có thể quan sát kết quả không nhất quán, với một máy quyết định rằng bạn sở hữu địa chỉ IP và một máy khác quyết định rằng người kia sẽ làm.

Bộ định tuyến cao cấp ghi lại xung đột địa chỉ IP, vì vậy nếu bạn nghĩ rằng bạn đang gặp phải một, hãy tranh thủ sự giúp đỡ của quản trị viên hệ thống của bạn. Trước tiên, hãy đảm bảo rằng đó không phải là máy của bạn đang cố sử dụng địa chỉ IP mà nó không nên sử dụng!


1
BTW: Bạn cũng có thể sử dụng arpingđể tìm kiếm các bản sao, bằng cách sử dụng ARP cho địa chỉ IP của bạn. Bạn sẽ không nhận được phản hồi. Hoặc thực hiện từ máy khác và bạn sẽ thấy cả hai phản hồi.
derobert

1

Tôi sẽ đề nghị rằng bạn đã có 2 mục nhập "máy chủ tên" /etc/resolv.confvà mục nhập đầu tiên đề cập đến một máy chủ DNS bị hỏng hoặc không thể truy cập được hoặc theo thứ tự định kỳ. Mã trình phân giải trong libc sẽ thử địa chỉ IP máy chủ tên đầu tiên, hết thời gian chờ và sau đó thử địa chỉ IP máy chủ tên thứ hai, thành công.

Để kiểm tra điều này, bạn có thể thay thế địa chỉ IP "máy chủ tên" chỉ /etc/resolv.confbằng một, 8.8.8.8, là máy chủ DNS công cộng của Google. Nếu mất điện không xảy ra, máy chủ tên của bạn là vấn đề.

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.