Làm cách nào để khắc phục sự cố mạng trên Debian


8

Hôm nay tôi khởi động lại hộp linux của mình và sau khi khởi động lại, hộp linux của tôi không có kết nối mạng.

Đây là những gì tôi đã thử cho đến nay:

  1. Sử dụng cáp ethernet khác hoạt động trên máy tính khác của tôi. Không thay đổi.

  2. Trong NetworkManager (KDE), xóa và tạo lại kết nối mạng có dây. Không hoạt động. Tôi vẫn nhận được thông báo hệ thống ở góc dưới bên phải của màn hình nói rằng

    Network Interface
    Connection New Wired Connection failed
    
  3. > sudo /etc/init.d/networking restart Nó dường như khởi động lại thành công nhưng vẫn không có kết nối mạng.
  4. Đã kiểm tra /etc/network/interfaces. Mã duy nhất trong đó là những gì internet nói rằng nó phải là:

    auto lo
    
    iface lo inet loopback
    
  5. Đảm bảo rằng đó không chỉ là sự cố DNS bằng cách thử ping một trong các máy chủ DNS công cộng của google

    $ ping 8.8.8.8
    connect: Network is unreachable
    

    Có vẻ như không phải là vấn đề DNS.

  6. NEW Fix định tuyến. Tôi đã sử dụng routelệnh để thêm một cổng mặc định trỏ đến địa chỉ IP của bộ định tuyến của tôi (cảm ơn @chaos).

    $ /sbin/route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
    
  7. MỚI Xem tôi có địa chỉ IP không

    $ /sbin/ifconfig -a
    eth0      Link encap:Ethernet  HWaddr 74:d4:35:5f:0b:09  
      inet6 addr: fe80::76d4:35ff:fe5f:b09/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:2999 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:1711 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:365026 (356.4 KiB)  TX bytes:0 (0.0 B)
      Interrupt:73 Base address:0xc000 
    
    
    lo        Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:16436  Metric:1
      RX packets:4913 errors:0 dropped:0 overruns:0 frame:0
      TX packets:4913 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:1559718 (1.4 MiB)  TX bytes:1559718 (1.4 MiB)
    

Có vẻ như tôi có địa chỉ IPv6 nhưng không phải là địa chỉ IPv4? Tôi hy vọng eth0sẽ có một dòng bắt đầu với inet addr:, nhưng nó không.

Vậy làm thế nào để tôi có được một địa chỉ IP?

Dưới đây là một số thông tin có thể (hoặc có thể không) hữu ích:

Thông tin hệ thống

$ uname -a
Linux mocha 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1 x86_64 GNU_Linux

bộ điều khiển liên kết mạng internet

$ lspci | grep -i eth
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 06)

Tôi nên làm gì tiếp theo?


2
Tôi sẽ thử khởi động từ đĩa CD và xem nó có kết nối không, để đảm bảo đây là cấu hình Debian bị lỗi.
Anthon

Cấu hình Debian không có lỗi. Tôi đã chạy nó trong nhiều tháng với mạng. Mạng chỉ bị hỏng sau khi khởi động lại gần đây.
khủng long

Câu trả lời:


3

Tôi sẽ (tất cả các lệnh này là root) ifconfig -ađể kiểm tra xem giao diện có địa chỉ IP không, nếu không bạn đã tìm thấy vấn đề của mình, nếu có, thì tôi sẽ netstat -rnkiểm tra xem các tuyến có đúng không. Nếu có, tôi sẽ iptables -Lkiểm tra xem có quy tắc tường lửa nào không cho phép tôi thoát ra không. Nếu tất cả đều ổn thì có lẽ địa chỉ IP của bạn không thuộc về mạng bộ định tuyến.


Bạn có thể vui lòng cho biết cách khắc phục sự cố, ví dụ: nếu giao diện không có địa chỉ IP hoặc nếu các tuyến bị sai.
khủng long

1
Nếu bạn không có IP, bạn có thể chỉ định một cách thủ công, trong trường hợp đó bạn nên biết phân đoạn mạng có bộ định tuyến và sử dụng IP miễn phí từ phạm vi đó ( ifconfig eth0 192.168.1.15/24thay thế eth0 cho giao diện của bạn và 192.168.1.15/24 cho địa chỉ và mạng của bạn ) nếu bạn muốn thử lấy IP từ máy chủ DCHP dhclientthì nên lấy địa chỉ cho bạn. Nhưng sẽ tốt hơn nếu chỉ định những gì bạn muốn trong / etc / mạng / giao diện và bạn sẽ có kết nối mạng của mình và chạy bất cứ khi nào bạn khởi động máy. route addlệnh sẽ cho phép bạn thiết lập các tuyến đường.
YoMismo 4/2/2015

3

connect: Network is unreachable trỏ đến một tuyến bị thiếu đến mạng đó (tuyến mặc định trong trường hợp này).

Sử dụng:

route -n

Để hiển thị bảng định tuyến hiện tại. Phải có một tuyến đường trông như thế này:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         <gateway-ip>    0.0.0.0         UG    0      0        0 eth0

Lưu ý rằng, <gateway-ip>là địa chỉ IP của bộ định tuyến / cổng của bạn. Và Ifacecũng có thể khác, khi bạn có nhiều giao diện mạng trong hệ thống của mình.

Tuy nhiên, thêm tuyến mặc định bằng tay với lệnh này:

route add default gw <gateway-ip>

Thiết lập của tôi không có tuyến đường và khi tôi cố thêm tuyến đường mặc định, tôi gặp lỗiSIOCADDRT: No such process
GisMofx

0

Vấn đề ở đây là giao diện có dây (eth0) của bạn không có địa chỉ IPv4. Bạn đã thêm thủ công tuyến đường IPv4 nhưng, không có địa chỉ IPv4, lưu lượng truy cập không thể được định tuyến vì nó không thể gán địa chỉ IP cho IP nguồn (hệ thống của bạn).

Không biết thêm thông tin về môi trường của bạn (Bạn có đang sử dụng kết nối DSL không? Bạn có thuộc mạng công ty không? Ai sẽ cung cấp cho bạn địa chỉ IP?) Tôi đoán rằng trước khi khởi động lại, bạn có địa chỉ IP được định cấu hình tĩnh hoặc đang hoạt động DHCP server. Nếu bạn có một địa chỉ được cấu hình tĩnh (mà cấu hình của bạn không hiển thị) thì nó đã bị mất sau khi khởi động lại.

Bạn thấy một địa chỉ IPv6 vì địa chỉ đó là "được cấu hình tự động". Vì bạn chưa cấu hình nên giao diện có dây chỉ tạo một giao diện có thể được sử dụng để liên lạc với mạng cục bộ.

Từ thông tin ifconfig bạn cung cấp, có vẻ như card mạng của bạn đang nhận các gói Ethernet, nhưng không gửi bất kỳ. Kỳ lạ thay, nó cũng hiển thị nhiều gói bị rơi.

Để bắt đầu, tôi sẽ đề nghị bạn làm như sau:

  1. Nhận thông tin về sơ đồ địa chỉ IP mạng của bạn. Hỏi quản trị viên mạng của bạn hoặc kiểm tra thông tin được cung cấp bởi ISP của bạn. Ngoài ra, (nếu bạn in đậm), bạn có thể lắng nghe lưu lượng mạng trên mạng bằng cách chạy tcpdump -ni eth0và cố gắng đoán địa chỉ mạng nội bộ của bạn dựa trên các gói mà hệ thống của bạn nhận được.

    Từ giờ trở đi, hãy giả sử rằng mạng của bạn nằm trong dải địa chỉ IP riêng, vì điều này khá phổ biến. Nhiều mạng hiện nay được cấu hình sẵn trong phạm vi không gian 192.168.1.0/24, có nghĩa là các địa chỉ IP bắt đầu trong 192.168.1.1 và kết thúc vào 192.168.1.254

  2. Định cấu hình giao diện mạng của bạn với địa chỉ IP tĩnh và cổng bằng Trình quản lý mạng (tức là thông qua máy tính để bàn) hoặc định cấu hình /etc/network/interfacesđúng. Điều này được mô tả đầy đủ ở đây trong Debian Wiki .

    Lưu ý: Bạn cũng có thể cấu hình nó chạy thủ công ip addr add 192.168.1.15 dev eth0; ip route add default via 192.168.1.1. Nhưng điều này sẽ không tồn tại khi khởi động lại hệ thống.

  3. Hãy thử xem bạn có đến được cổng không bằng cách gửi gói tin. Điều này có thể được thực hiện đơn giản, giả sử cổng của bạn là 192.168.1.1 bằng cách chạy ping -c 10 192.168.1.1. Nếu lệnh trả về rằng tất cả 10 bài kiểm tra đều hoạt động tốt thì bạn có thể thấy cổng của mình.

  4. Sau đó cố gắng truy cập một địa chỉ IP công cộng nổi tiếng. Ví dụ: một máy chủ DNS của Google, đang làm ping -c 10 8.8.8.8. Nếu điều này không hoạt động thì hãy thử chạy thử nghiệm theo dõi bằng cách sử dụng traceroute -n 8.8.8.8để xem các gói của bạn đang bị rơi ở đâu.

  5. Cuối cùng, đảm bảo rằng bạn có thể thực hiện phân giải DNS đúng cách bằng cách chạy host www.google.comhoặcping -c 10 www.google.com

Nếu mọi việc suôn sẻ đến bước 5, tôi sẽ đề nghị rằng, để chẩn đoán các sự cố trong tương lai, bạn hãy cài đặt gói ifupdown-Extra . Công cụ này cài đặt công cụ kiểm tra mạng thực hiện nhiều kiểm tra mạng được liệt kê ở trên (và hơn thế nữa) để chẩn đoán nếu có sự cố mạng hoặc cấu hình sai.

Khi bạn có thể kết nối bằng địa chỉ IP tĩnh. Hãy thử quay lại với những gì trước đây bạn có thể là cấu hình IP động bằng DHCP.

Để làm điều này:

  1. Cấu hình lại giao diện để sử dụng địa chỉ IP động.

  2. Đợi Quản lý mạng thực hiện công việc của mình. Bạn sẽ thấy trong môi trường Desktop của mình nếu nó bị lỗi (hoặc không) nhưng bạn cũng có thể nhận thông tin chi tiết trong nhật ký hệ thống. Cụ thể hơn / var / log / syslog. Lọc các nhật ký Trình quản lý mạng sẽ cho bạn biết khá nhiều thông tin, chỉ cần chạy grep NetworkManager /var/log/syslogvà xem lại đầu ra.

  3. Chạy network-testđể xem bạn có được kết nối đúng không

  4. Nếu bạn không được kết nối với mạng, hãy thử tự hỏi địa chỉ IP đang chạy dhclient eth0và xem liệu địa chỉ đó có cung cấp cho bạn địa chỉ IP không.

Dựa trên các thử nghiệm trên, bạn sẽ có kiến ​​thức tốt hơn về những gì đã phá vỡ và những gì hoạt động trong mạng của bạn và định cấu hình hệ thống của bạn phù hợp.

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.