Xử lý sự cố và gỡ lỗi mạng Linux


80

Thỉnh thoảng người dùng Linux và Unix phải đối mặt với các vấn đề mạng khác nhau. Nhiều vấn đề trong số này được trình bày ở đây và tại một số diễn đàn khắc phục sự cố khác, nhưng chúng rất cụ thể và chứa nhiều thông tin kỹ thuật bổ sung, và đôi khi khá khó để hiểu được ý chính và lý do thực sự của hành vi lỗi hệ thống.

Bằng cách đặt câu hỏi này, ý định của tôi là bắt đầu một trang wiki cộng đồng cho phép khái quát hóa trải nghiệm khắc phục sự cố và gỡ lỗi mạng của chúng tôi. Tôi hy vọng người dùng Linux và Unix có thể dễ dàng nhận ra và giải quyết ("phân chia và chinh phục") các vấn đề mạng của họ khi sử dụng trang này.

Phụ huynh của trang này nên được thực hành tốt nhất để chẩn đoán các vấn đề . Nhưng ở đây chúng ta nên tập trung vào việc khắc phục sự cố mạng từ không gian người dùng và kernel.

Tôi cho rằng, nếu bạn:

  1. Chia sẻ thông tin về việc sử dụng một số công cụ chẩn đoán mạng tuyệt vời với các ví dụ sử dụng cụ thể và ví dụ về các lỗi mạng mà chúng giúp nắm bắt.
  2. Chia sẻ liên kết đến hướng dẫn mạng tuyệt vời được kết nối với chủ đề này
  3. Giới thiệu về một phương pháp chung hoặc công thức cho phép giải quyết một số loại sự cố mạng
  4. Chia sẻ thông tin về bộ công cụ của bạn để gỡ lỗi và khắc phục sự cố mạng

nó sẽ hoàn toàn phù hợp cho chủ đề này.


Tôi sẽ bắt đầu từ việc chia sẻ liên kết đến các công cụ chẩn đoán varios và hướng dẫn đơn giản 12 năm tuổi . Ngoài ra hướng dẫn archlinux dường như có thông tin thực tế về chủ đề của chúng tôi. Và để đi sâu vào mạng linux, chúng tôi chắc chắn cần phải truy cập Linux Network-HOWTO .


Câu hỏi và trả lời này có một điều khác cần xem xét, 2 máy trên mạng được định cấu hình có cùng địa chỉ IP: unix.stackexchange.com/questions/85887/ Lỗi .
slm

Một hướng dẫn khắc phục sự cố mạng hữu ích khác: cisco.com/en/US/docs/iternetworking/troubledh Boot /
Ryne Everett

Câu trả lời:


118

Tôi nghĩ rằng, các nguyên tắc chung của xử lý sự cố mạng là:

  1. Tìm hiểu ở cấp độ ngăn xếp TCP / IP (hoặc một số ngăn xếp khác) xảy ra sự cố.
  2. Hiểu hành vi hệ thống chính xác là gì và độ lệch so với trạng thái hệ thống bình thường là gì
  3. Cố gắng diễn đạt vấn đề bằng một câu hoặc bằng nhiều từ
  4. Sử dụng thông tin thu được từ hệ thống lỗi, kinh nghiệm của chính bạn và kinh nghiệm của người khác (google, diễn đàn khác nhau, v.v.), cố gắng giải quyết vấn đề cho đến khi thành công (hoặc thất bại)
  5. Nếu bạn thất bại, hãy hỏi người khác về sự giúp đỡ hoặc một số lời khuyên

Đối với tôi, tôi thường có được tất cả thông tin cần thiết bằng cách sử dụng tất cả các công cụ cần thiết và cố gắng khớp thông tin này với kinh nghiệm của tôi. Quyết định cấp độ ngăn xếp mạng nào chứa lỗi giúp cắt bỏ các biến thể không mong muốn. Sử dụng kinh nghiệm của người khác giúp giải quyết vấn đề nhanh chóng, nhưng thường dẫn đến tình huống, tôi có thể giải quyết một số vấn đề mà không hiểu và nếu vấn đề này xảy ra lần nữa, tôi không thể giải quyết lại nếu không có Internet.

Và nói chung, tôi không biết làm thế nào tôi giải quyết các vấn đề mạng. Dường như có một số chức năng ma thuật trong não tôi được đặt tên SolveNetworkProblem(information_about_system_state, my_experience, people_experience), đôi khi có thể trả lại chính xác câu trả lời đúng và đôi khi cũng có thể thất bại (như ở đây TCP chết trên máy tính xách tay Linux ).

Tôi thường sử dụng các tiện ích từ bộ này để gỡ lỗi mạng:

  • ifconfig(hoặc ip link, ip addr) - để lấy thông tin về giao diện mạng
  • ping- để xác thực, nếu máy chủ đích có thể truy cập được từ máy của tôi. pingcũng có thể được sử dụng cho chẩn đoán DNS cơ bản - chúng tôi có thể ping máy chủ theo địa chỉ IP hoặc theo tên máy chủ của nó và sau đó quyết định xem DNS có hoạt động hay không. Và sau đó traceroutehoặc tracepathhoặc mtrđể xem những gì đang diễn ra trên đường tới đó.
  • dig - chẩn đoán mọi thứ DNS
  • dmesg | lesshoặc dmesg | tailhoặc dmesg | grep -i error- để hiểu nhân Linux nghĩ gì về một số rắc rối.
  • netstat -antp+ | grep smth- cách sử dụng lệnh netstat phổ biến nhất của tôi, hiển thị thông tin về các kết nối TCP. Thường thì tôi thực hiện một số bộ lọc bằng grep. Xem thêm sslệnh mới (từ bộ công cụ mạng Linux tiêu chuẩniproute2 mới ) và như trong .lsoflsof -ai tcp -c some-cmd
  • telnet <host> <port> - rất hữu ích để liên lạc với các dịch vụ TCP khác nhau (ví dụ: trên giao thức SMTP, HTTP), chúng tôi cũng có thể kiểm tra cơ hội chung để kết nối với một số cổng TCP.
  • iptables-save(trên Linux) - để kết xuất các bảng iptables đầy đủ
  • ethtool - nhận tất cả các tham số thẻ giao diện mạng (trạng thái của liên kết, tốc độ, thông số giảm tải ...)
  • socat- công cụ quân đội Thụy Sĩ để kiểm tra tất cả các giao thức mạng (UDP, multicast, SCTP ...). Đặc biệt hữu ích (hơn cả telnet) với một vài -dlựa chọn.
  • iperf - để kiểm tra tính khả dụng của băng thông
  • openssl( s_client, ocsp, x509...) để gỡ lỗi tất cả các vấn đề SSL / TLS / PKI.
  • wireshark - công cụ mạnh mẽ để nắm bắt và phân tích lưu lượng mạng, cho phép bạn phân tích và bắt được nhiều lỗi mạng.
  • iftop - hiển thị người dùng lớn trên mạng / bộ định tuyến.
  • iptstate (trên Linux) - chế độ xem hiện tại của theo dõi kết nối của tường lửa.
  • arp(hoặc mới (Linux) ip neigh) - hiển thị trạng thái bảng ARP.
  • routehoặc mới hơn (trên Linux) ip route- hiển thị trạng thái bảng định tuyến.
  • strace(hoặc truss, dtracehoặc tusctùy thuộc vào hệ thống) - là công cụ hữu ích cho biết các cuộc gọi hệ thống nào xử lý sự cố, nó cũng hiển thị mã lỗi (errno) khi cuộc gọi hệ thống thất bại. Thông tin này thường nói đủ để hiểu hành vi hệ thống và giải quyết vấn đề. Ngoài ra, sử dụng điểm dừng trên một số chức năng kết nối mạng gdbcó thể cho phép bạn tìm hiểu khi nào chúng được tạo và với đối số nào.
  • để điều tra các vấn đề về tường lửa trên Linux: iptables -nvLhiển thị có bao nhiêu gói được khớp với mỗi quy tắc ( iptables -Zbằng không các bộ đếm). Các LOGmục tiêu đưa vào chuỗi tường lửa rất hữu ích để xem những gói tin tiếp cận họ và cách họ đã được biến đổi khi họ đạt được điều đó. Để có thêm NFLOG(liên kết với ulogd) sẽ đăng nhập gói đầy đủ.

Geez, nói về kỹ lưỡng!
mVChr

7
Tôi muốn thêm nmap. Cấu hình của các cổng mở trên máy có thể nhanh chóng đưa ra gợi ý cho bạn về việc bạn đang xem máy chủ Linux hay Windows chẳng hạn.
Adam Monsen

7
Tôi muốn thêm tcpdump. Là phân tích gói tiêu chuẩn cho TCP.
jhvaras

14

Một số lượng đáng ngạc nhiên các "sự cố mạng" đã giải quyết vấn đề DNS thuộc loại này hay loại khác. Xử lý sự cố ban đầu nên sử dụng ping -n w.x.y.zđể loại bỏ độ phân giải DNS của tên máy chủ và chỉ cần kiểm tra kết nối IP. Sau đó, sử dụng route -nđể kiểm tra tuyến IP mặc định mà không cần độ phân giải DNS.

Sau khi xác minh kết nối IP, và định tuyến nslookup, hostdigcó thể mang lại thông tin. Hãy nhớ rằng "khóa" có thể chỉ ra rằng thời gian chờ DNS đang xảy ra.

Đừng quên kiểm tra sự tồn tại và nội dung của /etc/resolv.conf. Các máy khách DHCP thay đổi tệp đó với mỗi lần thuê và đôi khi chúng bị lỗi hoặc nếu không gian đĩa bị chật, một bản cập nhật có thể không xảy ra.


8

Vấn đề cáp có thể tồn tại. Nếu bạn có quyền truy cập vào phần cứng, đảm bảo rằng tất cả các dây cáp được cắm và tham gia cơ học. Nếu bạn có thể thấy các bộ định tuyến hoặc giao diện ethernet, hãy đảm bảo rằng đèn liên kết được bật.

Từ xa, bạn phải phụ thuộc vào ethtoolmii-tool.

[root@flask ~]# ethtool eth0
Settings for eth0:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
        Advertised pause frame use: Symmetric
        Advertised auto-negotiation: Yes
        Speed: 10Mb/s
        Duplex: Half
        Port: MII
        PHYAD: 24
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: g
        Wake-on: d
        Current message level: 0x00000001 (1)
                               drv
        Link detected: yes

"Liên kết được phát hiện: có" là tốt, nhưng 10Mb / s và Half duplex không tốt, vì NIC trên máy tính đó có thể làm tốt hơn. Tôi cần phải tìm hiểu xem liệu NIC có bị hỏng hay cáp không. Một máy tính khác cắm vào cùng một bộ định tuyến cho biết 100Mb / s, Full duplex.

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.