Cách sửa lỗi 'connect: Network is unreachable' trên Linux

intermediate🌐 Networking2026-04-30| Linux (Ubuntu, Debian, CentOS, RHEL), các hệ thống tương tự Unix, WSL2

Error Message

connect: Network is unreachable
#networking#linux#gateway#routing#netplan

Giải mã lỗi

Bạn thử ping một máy chủ hoặc chạy nhanh lệnh apt update, nhưng terminal phản hồi ngay lập tức bằng một thông báo cụt lủn: connect: Network is unreachable. Lỗi này xảy ra tức thì. Không giống như 'Connection Timeout' (hệ thống chờ phản hồi nhưng không thấy), lỗi này có nghĩa là hệ điều hành của bạn thậm chí còn chưa thử gửi gói tin đi. Đơn giản là nó không biết phải gửi đi đâu.

$ ping 8.8.8.8
connect: Network is unreachable

Hãy coi nhân (kernel) Linux như một người phân loại thư. Nếu bạn đưa cho nó một bức thư với địa chỉ mà nó không nhận ra và không có hòm thư 'Gửi trả người gửi' hoặc 'Lối thoát mặc định', kernel sẽ chỉ đơn giản là vứt bức thư đó xuống sàn.

Nguyên nhân gốc rễ: Thiếu định tuyến

Lỗi này hầu như luôn chỉ ra vấn đề với Bảng định tuyến (Routing Table) của bạn. Danh sách nội bộ này cho Linux biết giao diện mạng nào (như eth0 hoặc wlan0) cần sử dụng cho các dải IP cụ thể. Nếu bạn cố gắng truy cập internet mà không có 'Default Gateway' (Cổng mặc định) được xác định, hệ thống sẽ bỏ cuộc ngay lập tức.

Các nguyên nhân phổ biến bao gồm:

  • Một giao diện mạng bị tắt về mặt vật lý hoặc logic (trạng thái 'Down').
  • DHCP không cấp được địa chỉ IP hoặc gateway.
  • Lỗi đánh máy trong cấu hình IP tĩnh (Netplan hoặc /etc/network/interfaces).
  • Tuyến mặc định (default route) bị xóa thủ công hoặc bị ghi đè bởi VPN.

Cách khắc phục

1. Kiểm tra giao diện mạng có đang hoạt động không

Bắt đầu bằng việc kiểm tra xem card mạng của bạn có đang "thức" hay không. Chạy lệnh sau:

ip addr show

Tìm tên giao diện mạng của bạn—thường là enp0s3, eth0, hoặc wlp2s0. Nếu bạn thấy <BROADCAST,MULTICAST> nhưng thiếu từ UP, giao diện đó đang bị tắt. Hãy kích hoạt nó bằng:

sudo ip link set enp0s3 up

2. Kiểm tra Gateway mặc định

Đây là nơi hầu hết người dùng tìm thấy vấn đề. Hãy kiểm tra các tuyến đường (routes):

ip route show

Một hệ thống hoạt động bình thường sẽ hiển thị một dòng bắt đầu bằng default, như thế này:

default via 192.168.1.1 dev enp0s3 proto dhcp src 192.168.1.50 metric 100
192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.50

Nếu kết quả trống hoặc thiếu dòng default, hệ thống của bạn đang bị cô lập. Nó không biết rằng 192.168.1.1 là lối ra để đi ra thế giới bên ngoài.

3. Áp dụng bản sửa lỗi tạm thời

Bạn cần trực tuyến ngay lập tức? Bạn có thể thông báo thủ công cho kernel biết gateway ở đâu. Bạn chỉ cần địa chỉ IP của router (thường là .1 hoặc .254).

sudo ip route add default via 192.168.1.1 dev enp0s3

Kiểm tra kết nối ngay bằng cách ping 8.8.8.8. Nếu thành công, bạn đã xác định đúng vấn đề. Lưu ý rằng thay đổi này sẽ biến mất ngay khi bạn khởi động lại máy.

4. Thiết lập tuyến đường vĩnh viễn

Để giữ bản sửa lỗi sau khi khởi động lại, bạn phải cập nhật các tệp cấu hình.

Dành cho Ubuntu hiện đại (Netplan)

Mở tệp YAML trong /etc/netplan/ (tên tệp có thể khác nhau, nhưng thường bắt đầu bằng 01 hoặc 50):

sudo nano /etc/netplan/01-netcfg.yaml

Netplan hiện đại (phiên bản 0.100+) ưu tiên khối routes hơn là khóa gateway4 đã cũ. Sử dụng cấu trúc này:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: no
      addresses: [192.168.1.50/24]
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]

Lưu và áp dụng các thay đổi:

sudo netplan apply

Dành cho Debian hoặc Ubuntu cũ

Chỉnh sửa /etc/network/interfaces và đảm bảo khối cấu hình tĩnh của bạn bao gồm gateway:

iface enp0s3 inet static
    address 192.168.1.50
    netmask 255.255.255.0
    gateway 192.168.1.1

Kiểm tra đường truyền

Sau khi áp dụng bản sửa lỗi, hãy sử dụng mtr để theo dõi các gói tin rời khỏi mạng của bạn:

mtr -n 8.8.8.8

Nếu chặng (hop) đầu tiên hiển thị gateway của bạn (ví dụ: 192.168.1.1) và sau đó tiếp tục đến các IP bên ngoài, bạn đã chính thức quay trở lại mạng.

Phòng ngừa và Máy ảo

Tính toán sai subnet mask là một cách kinh điển làm hỏng việc định tuyến. Nếu bạn xác định mạng /28 nhưng gateway của bạn lại nằm ở .30, nó sẽ không thể truy cập được. Tôi thường sử dụng Công cụ tính Subnet này để xác minh dải CIDR của mình trước khi áp dụng cấu hình IP tĩnh. Đây là một cách đơn giản để tránh các lỗi đánh máy không đáng có.

Nếu bạn đang chạy Linux trong Máy ảo (như VirtualBox), hãy kiểm tra kỹ 'Loại Adapter' (Adapter Type). Adapter 'Host-Only' không cung cấp đường dẫn ra internet. Chuyển sang chế độ 'Bridged' hoặc 'NAT' thường sẽ giải quyết lỗi 'Network is unreachable' ngay lập tức mà không cần thay đổi cấu hình nội bộ nào.

Related Error Notes