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> 
    tunl0@NONE       DOWN           0.0.0.0 <NOARP> 
    gre0@NONE        DOWN           0.0.0.0 <NOARP> 
    gretap0@NONE     DOWN           00:00:00:00:00:00 <BROADCAST,MULTICAST> 
    erspan0@NONE     DOWN           00:00:00:00:00:00 <BROADCAST,MULTICAST> 
    ip_vti0@NONE     DOWN           0.0.0.0 <NOARP> 
    ip6_vti0@NONE    DOWN           :: <NOARP> 
    sit0@NONE        DOWN           0.0.0.0 <NOARP> 
    ip6tnl0@NONE     DOWN           :: <NOARP> 
    ip6gre0@NONE     DOWN           :: <NOARP> 
    eth0       UP             3e:a8:03:62:2f:a8 <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
    11: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 65535 qdisc noqueue state UP mode DEFAULT group default 
        link/ether 3e:a8:03:62:2f:a8 brd ff:ff:ff:ff:ff:ff link-netnsid 0

    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 

    No address indicates missing static configuration or DHCP failure.