Linux ip 命令超详细完整教程
一、基础说明
ip是 Linux 现代网络管理工具,替代老旧ifconfig、route,属于iproute2工具集,绝大多数发行版(CentOS7+/Ubuntu16+/Debian)默认预装。
语法通用结构
ip[选项]对象[命令][参数]# 对象常用:link(网卡)、addr(IP地址)、route(路由)、neigh(ARP邻居)、rule(路由策略)、maddr(组播)常用全局选项
| 选项 | 作用 |
|---|---|
-s | 输出详细统计信息(收发包、错误、丢包) |
-4 | 仅操作 IPv4 |
-6 | 仅操作 IPv6 |
-h | 人性化易读输出(带宽、字节单位自动转换) |
-r | 反向解析IP为主机名 |
-d | 显示详细设备描述 |
二、ip link:管理网卡硬件、状态、MAC、MTU
1. 查看所有网卡信息
# 简洁查看iplink# 带详细流量统计ip-slink# 只看IPv4相关网卡ip-4link# 人性化流量单位ip-shlink输出关键字段解释:
state UP/DOWN:网卡启用/关闭mtu 1500:最大传输单元,以太网默认1500link/ether xx:xx:MAC物理地址txqueuelen 1000:网卡发送队列长度- RX/TX:收发包、错误、丢包、溢出统计
2. 只查看单个网卡(如 eth0 / ens33)
iplinkshow ens33ip-slinkshow eth03. 启用/关闭网卡(UP/DOWN)
# 开启网卡iplinksetens33 up# 关闭网卡iplinksetens33 down4. 修改网卡MAC地址(临时,重启失效)
# 先关网卡iplinksetdev ens33 down# 设置新MACiplinksetdev ens33 address 00:11:22:33:44:55# 重新启用iplinksetdev ens33 up5. 修改 MTU 值(VPN/宽带常用9000巨帧)
# 设置MTU为9000iplinksetens33 mtu90006. 修改网卡队列长度
iplinksetens33 txqueuelen20007. 网卡重命名(临时)
iplinksetoldname name newname8. 创建/删除虚拟网卡(veth、dummy)
dummy 虚拟网卡(本地环回虚拟口)
# 创建dummy0iplinkadddummy0typedummy# 删除iplinkdelete dummy0veth 成对虚拟网卡(容器/网桥通信)
# 创建一对 veth0 <-> veth1iplinkaddveth0typeveth peer name veth1# 删除任意一端即可整体删除iplinkdelete veth09. 网桥操作(bridge)
# 创建网桥br0iplinkaddbr0typebridge# 将ens33加入网桥iplinksetens33 master br0# 脱离网桥iplinksetens33 nomaster# 删除网桥iplinkdelete br0typebridge三、ip addr:管理网卡IP地址(替代 ifconfig)
1. 查看所有网卡IP
ipaddr# 简写等价ipa# 仅IPv4ip-4a# 仅IPv6ip-6a字段说明:
inet 192.168.1.100/24:IPv4地址+子网掩码前缀inet6 fe80::xxx:链路本地IPv6scope global:公网可路由地址scope link:仅局域网链路地址
2. 给网卡添加静态IP
基础格式
ipaddraddIP/掩码 dev 网卡名示例:给 ens33 加 192.168.2.10/24
ipaddradd192.168.2.10/24 dev ens33同时设置广播地址
ipaddradd192.168.2.10/24 broadcast192.168.2.255 dev ens33添加第二个IP(单网卡多IP)
# 网卡可以绑定多个IP,无需额外配置ipaddradd192.168.2.11/24 dev ens333. 删除网卡IP
# 删除指定IPipaddr del192.168.2.10/24 dev ens33# 清空网卡所有IPipaddr flush dev ens334. 清空所有网卡IPv4/IPv6地址
# 清空全部IPv4ip-4addr flush all# 清空全部IPv6ip-6addr flush all5. 临时设置网卡为自动获取DHCP
ip addr本身不支持DHCP,需搭配客户端:
dhclient ens33# 释放IPdhclient-rens33四、ip route:路由管理(替代 route 命令)
1. 查看路由表
iproute# 简写ipr# 详细带统计ip-sroute# 仅IPv6路由ip-6r路由字段释义:
192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.100 # 目标网段 出口网卡 路由来源 作用域 本机出口IP default via 192.168.1.1 dev ens33 # 默认路由:所有未知流量转发到网关192.168.1.12. 添加静态路由
格式
iprouteadd目标网段 via 网关IP dev 网卡示例1:访问10.0.0.0/8走网关192.168.2.1
iprouteadd10.0.0.0/8 via192.168.2.1 dev ens33示例2:直连网段(无需网关,同一二层)
iprouteadd172.16.1.0/24 dev ens33示例3:添加默认网关(上网出口)
iprouteadddefault via192.168.1.1 dev ens333. 删除路由
# 删除指定网段路由iproute del10.0.0.0/8 via192.168.2.1# 删除默认路由iproute del default4. 修改/替换路由
# 替换原有默认网关iproute change default via192.168.1.2 dev ens335. 清空所有路由表
iproute flush all# 清空指定网卡所有路由iproute flush dev ens33# 清空所有默认路由iproute flush default6. 路由缓存/查看指定目标路由(查询下一跳)
# 查询访问8.8.8.8走哪条路由iproute get8.8.8.87. 永久路由(临时ip route重启失效)
临时路由重启服务器/网卡后丢失,永久配置需修改系统网络配置文件:
- CentOS/RHEL:
/etc/sysconfig/network-scripts/route-ens33 - Ubuntu/Debian Netplan:
/etc/netplan/yaml配置 - Debian ifupdown:
/etc/network/interfaces
五、ip neigh:ARP/邻居表管理(替代 arp 命令)
维护局域网 IP <-> MAC 映射表
1. 查看ARP邻居表
ipneigh# 简写ipn# 详细ip-sn状态标识:
REACHABLE:正常连通STALE:缓存过期,未验证FAILED:ARP解析失败,主机不可达
2. 手动添加静态ARP绑定(防止ARP欺骗)
ipneighadd192.168.1.50 lladdr aa:bb:cc:dd:ee:ff dev ens33 nud permanent# nud permanent 永久静态绑定,不会自动老化3. 删除单条ARP记录
ipneigh del192.168.1.50 dev ens334. 清空网卡全部ARP缓存
ipneigh flush dev ens33# 清空所有ARPipneigh flush all5. 强制重新ARP探测
ipneigh replace192.168.1.50 dev ens33 nud reachable六、ip rule + ip route table:多路由表/策略路由(高级)
Linux 支持多张路由表,根据源IP、端口、标记选择不同网关,多用于多网卡多线宽带。
1. 查看策略路由规则
iprule默认两条规则:
0: from all lookup local 32766: from all lookup main 32767: from all lookup default- local:本地回环、本机IP路由
- main:默认主路由表(平时
ip r看到的)
2. 自定义路由表
1)添加新路由表(编辑 /etc/iproute2/rt_tables)
echo"100 telecom">>/etc/iproute2/rt_tables# 100=表ID,telecom=表名2)给表添加路由
# 给telecom表设置默认网关iprouteadddefault via192.168.3.1 table telecom# 直连网段iprouteadd192.168.3.0/24 dev eth1 table telecom3)添加策略:源IP 192.168.3.10 走telecom表
ipruleaddfrom192.168.3.10 table telecom4)删除策略规则
iprule del from192.168.3.105)清空所有策略
iprule flush3. 查看指定路由表路由
iproute show table telecom七、ip maddr:多播地址管理
1. 查看网卡多播组
ipmaddripmaddr show ens332. 添加/删除多播组
ipmaddradd224.0.0.1 dev ens33ipmaddr del224.0.0.1 dev ens33八、ip tunnel:IP隧道(GRE/VXLAN 虚拟隧道,跨网段组网)
GRE隧道示例
# 创建gre隧道tun0,本地IP1.1.1.1,远端2.2.2.2iptunneladdtun0 mode grelocal1.1.1.1 remote2.2.2.2 ttl255# 启用隧道iplinksettun0 up# 分配内网IPipaddradd10.0.0.1/24 dev tun0# 删除隧道iptunnel del tun0VXLAN虚拟二层隧道(容器云常用)
iplinkaddvxlan0typevxlanid100local192.168.1.10 dev ens33 dstport4789九、常用组合实战案例
案例1:临时配置单网卡静态IP+网关
# 1. 开启网卡iplinksetens33 up# 2. 设置IPipaddradd192.168.1.105/24 dev ens33# 3. 添加默认网关iprouteadddefault via192.168.1.1 dev ens33案例2:单网卡双IP
ipaddradd192.168.1.105/24 dev ens33ipaddradd192.168.1.106/24 dev ens33 label ens33:0# label 给第二个IP加别名,兼容老工具查看案例3:清理网卡所有IP+路由+ARP
ipaddr flush dev ens33iproute flush dev ens33ipneigh flush dev ens33案例4:查看本机访问外网完整路由路径
iproute get114.114.114.114案例5:绑定静态ARP防劫持
ipneighadd192.168.1.1 lladdr xx:xx:xx:xx:xx:xx dev ens33 nud permanent十、ip vs ifconfig 对比(为什么推荐ip)
ifconfig属于net-tools,很多新版系统默认不装;ip内置 iproute2,必装- ip 功能统一:网卡、IP、路由、ARP、策略路由、隧道、网桥全部一条命令搞定
- ifconfig 不支持 IPv6、策略路由、vxlan、veth 等现代虚拟化网络
- ip 输出更规范,支持脚本解析、流量统计、人性化单位
安装缺失 net-tools(仅兼容旧脚本,不推荐日常使用):
# CentOS/RHELyuminstallnet-tools-y# Ubuntu/Debianaptinstallnet-tools-y十一、脚本常用精简速查表
ipa# 查看IPipl# 查看网卡状态ipr# 查看路由ipn# 查看ARPip-sl show eth0# 网卡流量统计iproute get baidu.com# 查路由下一跳ipaddr flush dev eth0# 清空网卡IPiplinkseteth0 up# 启用网卡