lo
(Loopback 接口)详解
lo
是 Loopback(环回)接口,它是一个虚拟网络接口,主要用于 本地通信,不依赖物理网卡。所有操作系统(包括 Linux、Windows、macOS)默认都会创建lo
接口。
1. lo
接口的作用
- 本地回环测试:用于测试本机网络协议栈是否正常(如
ping 127.0.0.1
)。 - 服务监听:某些服务(如数据库、Web 服务器)默认绑定到
127.0.0.1
,仅允许本机访问。 - 避免外部流量:如果服务只监听
lo
,外部网络无法访问,提高安全性。
2. lo
接口的特性
- IP 地址:默认绑定
127.0.0.1
(IPv4)和::1
(IPv6)。 - 接口状态:始终为
UP
(即使没有物理网络)。 - 不依赖硬件:纯软件实现,没有对应的物理设备。
- MTU(最大传输单元):通常为
65536
(64KB),远高于普通网卡(1500)。
3. 查看 lo
接口信息
(1)使用 ip
命令(推荐)
ip addr show lo # 查看 lo 的 IP 地址(简写 ip a show lo)
ip link show lo # 查看 lo 的链路状态(简写 ip l show lo)
输出示例:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
LOOPBACK
:表示这是一个环回接口。mtu 65536
:最大传输单元(64KB)。inet 127.0.0.1/8
:IPv4 环回地址。inet6 ::1/128
:IPv6 环回地址。
(2)使用 ifconfig
(传统方式)
ifconfig lo
输出示例:
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
4. lo
接口的常见用途
(1)测试本地网络协议栈
ping 127.0.0.1 # 测试 IPv4 环回
ping6 ::1 # 测试 IPv6 环回
curl http://127.0.0.1 # 测试本地 HTTP 服务
(2)绑定服务到 lo
(仅限本机访问)
# 启动一个仅监听 127.0.0.1 的 Python HTTP 服务器
python3 -m http.server 8000 --bind 127.0.0.1
此时,外部机器无法访问该服务,只有本机可以通过 127.0.0.1:8000
访问。
(3)禁用 lo
(通常不建议)
ip link set lo down # 禁用 lo(可能导致本地服务异常!)
ip link set lo up # 重新启用
5. 常见问题
Q1:为什么 ip l
只显示 lo
?
- 容器使用
--network=none
,未分配网络。 - 宿主机/虚拟机未正确识别网卡(如驱动问题)。
- Docker 网络配置异常(可尝试
docker network prune
清理)。
Q2:127.0.0.1
和 localhost
的区别?
127.0.0.1
是 IPv4 环回地址。localhost
是主机名,默认解析到127.0.0.1
(可通过/etc/hosts
修改)。
Q3:如何检查服务是否监听 lo
?
ss -tulnp | grep 127.0.0.1 # 查看绑定到 127.0.0.1 的端口
netstat -tulnp | grep 127.0.0.1 # (旧版 Linux)
6. 总结
特性 | lo (Loopback 接口) |
---|---|
作用 | 本地通信,不依赖物理网络 |
IP 地址 | IPv4: 127.0.0.1/8 ,IPv6: ::1/128 |
状态 | 默认 UP ,MTU=65536 |
典型用途 | 本地服务测试、安全隔离 |
禁用影响 | 本地服务(如数据库、API)可能无法正常工作 |