tra-loi-cau-hoi-phat-trien-web.com

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

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 wiki cộng đồng trang cho phép khái quát hóa trải nghiệm xử lý 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 phải là Thực hành tốt nhất để chẩn đoán sự cố . Nhưng ở đây, chúng ta nên tập trung vào khắc phục sự cố các sự cố mạng từ user- và kernel-space.

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 hoặc công thức chung 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 varios công cụ chẩn đoánhướng dẫn đơn giản 12 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 Mạng Linux-HOWTO .

83
dr.

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ên SolveNetworkProblem(information_about_system_state, my_experience, people_experience), đôi khi có thể trả về chính xác câu trả lời 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. ping cũ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 không. Và sau đó traceroute hoặc tracepath hoặ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 | less hoặc là dmesg | tail hoặc là 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 lệnh ss mới (từ iproute2 bộ mới tiêu chuẩn bộ công cụ mạng Linux) và lsof như trong lsof -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ố TCP.
  • iptables-save (trên Linux) - để kết xuất các bảng đầ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 -d tùy 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 sự cố 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.
  • route hoặ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, dtrace hoặc tusc tù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 mạng trong gdb có 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 sự cố tường lửa trên Linux: iptables -nvL hiển thị có bao nhiêu gói được khớp theo từng quy tắc (iptables -Z đến không các quầy). Mục tiêu LOG được chèn trong chuỗi tường lửa rất hữu ích để xem gói nào tiếp cận chúng và cách chúng đã được chuyển đổi khi chúng đến đó. Để biết thêm NFLOG (được liên kết với ulogd) sẽ ghi nhật ký gói đầy đủ.
120
dr.

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, HostDig có 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.

15
Bruce Ediger

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.

[[email protected] ~]# 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 tìm hiểu xem NIC được tăng tốc hoặc cáp là. Một máy tính khác được cắm vào cùng một bộ định tuyến cho biết 100Mb/s, Full duplex.

8
Bruce Ediger