- Máy chủ thư của khoa thống kê tại một trường đại học ở Mỹ gặp hiện tượng kỳ lạ: không thể gửi email đến nơi cách hơn 500 dặm
- Kết quả điều tra cho thấy nguyên nhân là phiên bản Sendmail bị hạ cấp trong quá trình cập nhật SunOS, khiến tệp cấu hình không còn tương thích
- Do Sendmail 5 không nhận ra các tên tùy chọn dài trong tệp cấu hình dành cho Sendmail 8, nhiều giá trị mặc định bị đặt thành 0
- Trong đó, thời gian chờ kết nối SMTP bị đặt thành 0, khiến mọi kết nối từ xa mất hơn khoảng 3 mili giây đều thất bại
- Khi độ trễ mạng tăng tỷ lệ với khoảng cách, kết quả là xuất hiện hiện tượng chặn gửi thư tới các máy chủ cách hơn 500 dặm
Khởi đầu của sự cố
- Khoa thống kê báo cáo rằng “không thể gửi thư đến nơi cách hơn 500 dặm”
- Có thể gửi đến khoảng 520 dặm, nhưng xa hơn thì thất bại
- Trưởng khoa còn huy động một chuyên gia địa thống kê để vẽ bản đồ bán kính có thể nhận thư, và xác nhận bán kính vào khoảng 500 dặm
- Quản trị viên hệ thống gửi thư thử tới nhiều khu vực để tái hiện vấn đề
- Princeton cách 400 dặm thì thành công, Memphis cách 600 dặm thì thất bại
- New York (420 dặm) thành công, còn Providence (580 dặm) thất bại
Phân tích nguyên nhân
- Tệp cấu hình sendmail.cf của máy chủ trông hoàn toàn bình thường và là tệp cấu hình cho Sendmail 8 do chính tác giả tạo ra
- Tuy nhiên, khi kiểm tra banner của cổng SMTP thì thấy SunOS Sendmail 5 đang chạy
- Trong quá trình vá máy chủ, hệ điều hành được nâng cấp nhưng Sendmail lại bị hạ từ 8 xuống 5
- Tệp cấu hình cũ vẫn còn nguyên, nhưng Sendmail 5 không hiểu các tên tùy chọn dài của Sendmail 8
- Các tùy chọn không được nhận diện bị bỏ qua, và giá trị mặc định của các mục đó bị khởi tạo về 0
- Đặc biệt, giá trị timeout kết nối tới máy chủ SMTP từ xa là 0, nên các lần thử kết nối bị dừng sau khoảng 3 mili giây
Mối quan hệ giữa khoảng cách và tốc độ
- Khi đó, mạng trong khuôn viên trường có kiến trúc 100% dựa trên switch, nên gần như không có độ trễ từ router
- Vì vậy thời gian kết nối được quyết định chủ yếu bởi khoảng cách vật lý (tốc độ ánh sáng)
- Tính toán cho thấy 3 mili giây tương ứng với khoảng 558 dặm
- Điều này khớp với hiện tượng được báo cáo là “500 dặm hoặc hơi hơn một chút”
Kết luận
- Nguyên nhân gốc rễ của sự cố là lỗi phân tích cấu hình do không khớp phiên bản Sendmail
- Khi timeout bị đặt thành 0, đã xuất hiện hiện tượng mạng trông như thể có giới hạn khoảng cách vật lý
- Đây là một giai thoại kinh điển cho thấy tầm quan trọng của tính tương thích phiên bản và việc kiểm chứng cấu hình trong quản trị hệ thống
1 bình luận
Ý kiến trên Hacker News
Vào khoảng giữa thập niên 1990, có một sự cố kỳ lạ là PC ở văn phòng mỗi sáng đều không khởi động được
Hóa ra là mỗi mùa đông, chuột nhắt chui vào qua khe ổ cứng để trú ấm rồi tiểu làm chập mạch
Khi máy tính bật lên một lúc và tỏa nhiệt, nó khô đi nên lại có thể khởi động được
Sau đó người ta mua khay ổ đĩa rỗng để bịt lại, và vấn đề biến mất hoàn toàn
Bất kể có thật hay không, quá trình lần theo những vấn đề kiểu này rất thú vị
Liên kết liên quan
Trước đây tôi còn từng thấy một con dơi bám vào cáp CAT của mình
Có lẽ để cửa sổ mở vào ban đêm cũng sẽ ảnh hưởng đến băng thông
Là lập trình viên thì phải chuẩn bị cả cho những tình huống ngớ ngẩn như "Frog on Keyboard error"
Bài liên quan
Có vẻ trong bài gốc, việc vị chủ tịch thu thập thông tin cần thiết để giải quyết vấn đề chưa được đánh giá đúng mức
Nếu không có dữ liệu đó, tác giả hẳn đã mất rất lâu để lần mò những vấn đề máy chủ hoàn toàn không liên quan
Nếu chỉ nói “email không hoạt động như thế đâu”, thì lần sau sẽ chẳng ai cung cấp dữ liệu nữa hoặc họ sẽ đưa ra phỏng đoán sai
Đây là một bài kinh điển đã nhiều năm liền lặp đi lặp lại và nổi lên trên HN
Nó đã được đăng lại vào nhiều thời điểm như 2023, 2020, 2015
Bản 2023, Bản 2020, Bản 2015
May mà lần này tôi không bỏ lỡ. Nó nhắc tôi rằng đừng bao giờ đánh mất sự khiêm tốn
Trên HN, đăng lại sau khoảng một năm là chấp nhận được, và các bài kinh điển nên được đưa lên lại cho người dùng mới
Xem HN FAQ
Tôi cũng đã gom lại các liên kết tới nhiều phiên bản liên quan
Lúc đó ta có thể vừa debug lỗi của AI vừa bật cười
Tối qua tôi phát một tập phim TV bằng VLC, và khoảng sau 30 giây thì máy tắt nguồn
Nó tắt đúng chỗ đó tới ba lần nên rất kỳ lạ. Tôi bắt đầu nghĩ liệu bản thân video có phải nguyên nhân không
Tôi nhớ tới trường hợp video Janet Jackson làm hỏng ổ cứng trước đây
Mà tập đó lại còn là Black Mirror S7E01, nên càng thấy rợn
Liên kết tham khảo
Nếu là trường hợp sau thì rất có thể là vấn đề nhiệt
Mỗi codec có tải giải mã khác nhau, nên một đoạn cụ thể có thể khiến hệ thống quá nóng
Tôi khuyên nên thử phát từ vị trí khác hoặc bỏ qua đoạn đó để kiểm tra
Nên thử thay bộ nguồn hoặc chuyển đổi codec
Hoặc cũng có thể đó là file đã bị chỉnh sửa với mục đích xấu, nên cần kiểm tra nguồn gốc
Câu chuyện này giống như phiên bản hacker của giai thoại kiểm tra tốc độ SR-71 Blackbird
Cứ mỗi lần thấy là tôi lại đọc lại, đúng kiểu kinh điển
Liên kết liên quan
Nó làm tôi nhớ đến câu chuyện kinh điển “mua kem vani thì xe nổ máy, mua kem dâu thì không”
Liên kết câu chuyện
Liên kết liên quan
Những câu chuyện như “Stalking the Wiley Hacker” đã đưa tôi vào thế giới máy tính
Nhưng khi làm việc trong ngành, tôi thấy tiếc vì niềm vui thuần khiết ngày đó đã phai đi
Liên kết bài gốc
Ông ấy thuyết trình tại một hội nhóm làm chăn ghép, và dù chủ đề chẳng liên quan, ông vẫn cực kỳ nhiệt huyết và cuốn hút
Tôi hoàn toàn bị chinh phục bởi năng lượng và sự tò mò của ông
Tôi nhớ tới câu đùa “hãy thử gửi email xa hơn 500 dặm nữa xem”
Câu “You had me at EHLO” làm tôi bật cười
Hồi đó tôi thuộc hết các lệnh, còn bây giờ thì không chắc nữa
Trước đây máy tính tôi dùng có vấn đề là cứ mỗi khi tôi rời khỏi chỗ ngồi thì nó lại tắt
Hóa ra nguyên nhân là sàn gỗ lỏng lẻo trong một tòa nhà cũ
Rung động khi tôi đứng dậy đã làm chập một bộ nguồn bị lỗi
Đọc bài xong tôi lập tức chạy
apt install units. Đúng là một công cụ tuyệt vờiDùng lệnh
unitsthì kết quả tính toán hiện ra theo chiều ngược lạiVí dụ: 1 mile → 1.609 km là đúng, nhưng 1 unit → 1.609 units thì lại bị đảo ngược