Interface link state shows whether a Linux network interface has carrier and can actually transmit frames, making it the fastest way to separate physical/link problems from higher-layer issues during an outage.

Linux tracks both an administrative state and an operational state for each interface. The administrative state is toggled by configuration (up/down), while the operational state reflects driver readiness and carrier detection, exposed by ip as a state plus flags such as UP and LOWER_UP.

The carrier bit is also available in sysfs at /sys/class/net/<iface>/carrier as a simple 1 or 0, which helps confirm whether the link is physically (or logically) connected. Virtual interfaces such as bridge, bond, vlan, and veth inherit link state from underlying devices or peers, so the physical NIC may still need checking when troubleshooting.

  1. List interfaces with their operational state.
    $ ip -br link
    lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> 
    eth0             UP             02:00:00:00:00:10 <BROADCAST,MULTICAST,UP,LOWER_UP> 

    UNKNOWN is expected for lo on many systems.

  2. Inspect link flags for the target interface.
    $ ip link show dev eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 02:00:00:00:00:10 brd ff:ff:ff:ff:ff:ff

    Flag LOWER_UP indicates carrier; missing LOWER_UP indicates no carrier while admin UP is set.

  3. Read the carrier value from sysfs for the interface.
    $ cat /sys/class/net/eth0/carrier
    1

    Value 1 means carrier is detected; value 0 means no carrier.

  4. Show IP addresses assigned to the interface.
    $ ip -br addr show dev eth0
    eth0             UP             192.0.2.40/24 metric 100 fe80::20/64 

    No address indicates missing static configuration or DHCP failure.