欢迎光临
我们一直在努力

Linux ip命令完全指南:网络管理的首选工具

Linux ip命令完全指南:网络管理的首选工具

    • 1. ip命令概述
    • 2. 基本语法结构
    • 3. 网络接口管理(link对象)
      • 3.1 查看接口状态
      • 3.2 管理接口状态
      • 3.3 获取所有网络接口
    • 4. IP地址管理(address对象)
      • 4.1 查看IP地址
      • 4.2 配置IP地址
      • 4.3 实用的地址管理脚本
    • 5. 路由管理(route对象)
      • 5.1 查看路由表
      • 5.2 管理路由
      • 5.3 多路由表管理
    • 6. 邻居表管理(neigh对象)
      • 6.1 查看ARP/NDP表
      • 6.2 管理邻居表
    • 7. 实战应用场景
      • 7.1 网络故障排除脚本
      • 7.2 多IP地址绑定
      • 7.3 路由策略配置
    • 8. 高级技巧
      • 8.1 批量操作
      • 8.2 JSON格式输出
      • 8.3 网络命名空间
    • 9. 常用命令速查表

🌺The Begin🌺点点关注,收藏不迷路🌺

在现代Linux系统中,ip命令已经取代了传统的ifconfig、route等命令,成为网络配置和故障排除的首选工具。本文将全面介绍ip命令的使用方法和实战技巧。

1. ip命令概述

ip命令是iproute2软件包的一部分,提供了统一的接口来管理Linux系统的网络功能。相比传统的网络工具,ip命令具有以下优势:

  • 功能全面:整合了多个传统命令的功能
  • 语法统一:采用一致的命令结构
  • 信息丰富:提供更详细的网络状态信息
  • 实时生效:配置更改立即生效

2. 基本语法结构

ip [选项] 对象 {命令|help}

常用选项:

  • -s:显示详细信息(统计信息)
  • -4/-6:指定IPv4或IPv6
  • -r:使用DNS解析主机名
  • -c:彩色输出
  • -j:JSON格式输出
  • -p:友好格式输出

主要对象:

  • link:网络接口管理
  • address:IP地址管理
  • route:路由表管理
  • neigh:ARP/NDP邻居表管理
  • rule:策略路由规则

3. 网络接口管理(link对象)

3.1 查看接口状态

# 查看所有网络接口
ip link show
# 或者简写
ip link

# 查看指定接口
ip link show dev eth0
ip link show dev wlan0

# 显示详细信息(包含统计信息)
ip -s link show
ip -s link show dev eth0

# 彩色输出
ip -c link show

输出解读:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:16:3e:00:1e:51 brd ff:ff:ff:ff:ff:ff

  • UP:接口已启用
  • LOWER_UP:物理链路正常
  • mtu 1500:最大传输单元
  • state UP:接口状态

3.2 管理接口状态

# 启用接口
sudo ip link set eth0 up
sudo ip link set dev eth0 up

# 禁用接口
sudo ip link set eth0 down
sudo ip link set dev eth0 down

# 修改MTU(最大传输单元)
sudo ip link set dev eth0 mtu 9000

# 修改接口名称(需要先down)
sudo ip link set eth0 down
sudo ip link set dev eth0 name eth-new
sudo ip link set eth-new up

# 启用/禁用混杂模式
sudo ip link set dev eth0 promisc on
sudo ip link set dev eth0 promisc off

3.3 获取所有网络接口

# 方法1:使用ip命令
ip link | awk -F: '$0 !~ "lo|vir|docker|br-"{print $2}' | sed 's/ //g'

# 方法2:获取启用的接口
ip link show up | awk -F: '$0 !~ "lo|vir|docker|br-"{print $2}' | sed 's/ //g'

# 方法3:包含状态信息
for iface in $(ip link | awk -F: '$0 !~ "lo|vir|docker|br-"{print $2}' | sed 's/ //g'); do
state=$(ip link show dev $iface | grep -o "state [A-Z]*" | awk '{print $2}')
echo "$iface: $state"
done

4. IP地址管理(address对象)

4.1 查看IP地址

# 查看所有接口的IP地址
ip address show
# 简写形式
ip addr
ip a

# 查看指定接口的IP地址
ip addr show dev eth0
ip a show eth0

# 只显示IPv4地址
ip -4 addr
ip -4 addr show dev eth0

# 只显示IPv6地址
ip -6 addr

4.2 配置IP地址

# 添加IP地址
sudo ip addr add 192.168.1.100/24 dev eth0
sudo ip addr add 2001:db8::1/64 dev eth0

# 添加多个IP地址(辅助地址)
sudo ip addr add 192.168.1.101/24 dev eth0 label eth0:1

# 删除IP地址
sudo ip addr del 192.168.1.100/24 dev eth0

# 清空接口的所有IP地址
sudo ip addr flush dev eth0

# 刷新并重新配置(常用于脚本)
sudo ip addr flush dev eth0
sudo ip addr add 192.168.1.100/24 dev eth0
sudo ip addr add 192.168.1.101/24 dev eth0 label eth0:1

4.3 实用的地址管理脚本

#!/bin/bash
# 网络接口配置脚本

INTERFACE="eth0"
PRIMARY_IP="192.168.1.100/24"
SECONDARY_IP="192.168.1.101/24"

# 配置主IP
echo "配置主IP地址: $PRIMARY_IP"
sudo ip addr add $PRIMARY_IP dev $INTERFACE

# 配置辅助IP
echo "配置辅助IP地址: $SECONDARY_IP"
sudo ip addr add $SECONDARY_IP dev $INTERFACE label ${INTERFACE}:1

# 显示结果
echo "当前IP配置:"
ip -4 addr show dev $INTERFACE

5. 路由管理(route对象)

5.1 查看路由表

# 查看主路由表
ip route show
# 简写形式
ip route
ip r

# 查看指定网络的路由
ip route show 192.168.1.0/24

# 查看缓存路由
ip route show cache

# 查看指定接口的路由
ip route show dev eth0

# 显示路由表详细信息
ip -s route show

5.2 管理路由

# 添加静态路由
sudo ip route add 192.168.2.0/24 via 192.168.1.1
sudo ip route add 10.0.0.0/8 via 192.168.1.1 dev eth0

# 添加默认路由
sudo ip route add default via 192.168.1.1
sudo ip route add default via 192.168.1.1 dev eth0

# 删除路由
sudo ip route del 192.168.2.0/24
sudo ip route del default

# 修改路由
sudo ip route change 192.168.2.0/24 via 192.168.1.2

# 清空路由表
sudo ip route flush dev eth0

5.3 多路由表管理

# 查看所有路由表
ip route show table all

# 查看指定路由表
ip route show table 100

# 向指定路由表添加路由
sudo ip route add 192.168.3.0/24 via 192.168.1.1 table 100

# 添加路由规则
sudo ip rule add from 192.168.1.100 table 100

6. 邻居表管理(neigh对象)

6.1 查看ARP/NDP表

# 查看邻居表(ARP/NDP)
ip neighbor show
# 简写形式
ip neigh
ip n

# 查看指定接口的邻居
ip neigh show dev eth0

# 显示邻居表统计信息
ip -s neigh show

6.2 管理邻居表

# 添加静态ARP条目
sudo ip neigh add 192.168.1.50 lladdr 00:11:22:33:44:55 dev eth0 nud permanent

# 删除ARP条目
sudo ip neigh del 192.168.1.50 dev eth0

# 清空邻居表
sudo ip neigh flush dev eth0

# 刷新指定IP的ARP缓存
sudo ip neigh flush 192.168.1.50

7. 实战应用场景

7.1 网络故障排除脚本

#!/bin/bash
# 网络诊断脚本

echo "=== 网络接口状态 ==="
ip -c link show

echo -e "\\n=== IP地址配置 ==="
ip -c addr show

echo -e "\\n=== 路由表 ==="
ip -c route show

echo -e "\\n=== ARP表 ==="
ip -c neigh show

echo -e "\\n=== 网络统计 ==="
ip -s link show

7.2 多IP地址绑定

#!/bin/bash
# 为Web服务器绑定多个IP

INTERFACE="eth0"
BASE_IP="192.168.1"
NETMASK="/24"

# 绑定10个IP地址
for i in {100..110}; do
sudo ip addr add ${BASE_IP}.${i}${NETMASK} dev $INTERFACE label ${INTERFACE}:${i}
echo "已添加IP: ${BASE_IP}.${i}"
done

echo "当前IP配置:"
ip addr show dev $INTERFACE | grep inet

7.3 路由策略配置

#!/bin/bash
# 多线路路由策略

# 创建路由表
echo "100 wan1" >> /etc/iproute2/rt_tables
echo "200 wan2" >> /etc/iproute2/rt_tables

# 配置路由表100
sudo ip route add default via 192.168.1.1 table wan1
sudo ip route add 192.168.1.0/24 dev eth0 table wan1

# 配置路由表200
sudo ip route add default via 192.168.2.1 table wan2
sudo ip route add 192.168.2.0/24 dev eth1 table wan2

# 配置策略路由
sudo ip rule add from 192.168.1.100 table wan1
sudo ip rule add from 192.168.2.100 table wan2

8. 高级技巧

8.1 批量操作

# 从文件读取配置(适用于自动化)
sudo ip -batch <<EOF
link set eth0 up
addr add 192.168.1.100/24 dev eth0
route add default via 192.168.1.1
EOF

8.2 JSON格式输出

# JSON格式输出,便于脚本处理
ip -j link show
ip -j addr show
ip -j route show

# 结合jq处理JSON输出
ip -j addr show | jq '.[] | select(.ifname=="eth0") | .addr_info[] | select(.family=="inet") | .local'

8.3 网络命名空间

# 创建网络命名空间
sudo ip netns add ns1

# 在命名空间中执行命令
sudo ip netns exec ns1 ip link show
sudo ip netns exec ns1 ip addr add 192.168.100.1/24 dev lo

# 删除命名空间
sudo ip netns del ns1

9. 常用命令速查表

功能命令
查看接口 ip link show
启用接口 ip link set eth0 up
查看IP ip addr show
添加IP ip addr add 192.168.1.100/24 dev eth0
查看路由 ip route show
添加路由 ip route add 192.168.2.0/24 via 192.168.1.1
查看ARP ip neighbor show
添加ARP ip neigh add 192.168.1.50 lladdr 00:11:22:33:44:55 dev eth0

在这里插入图片描述

🌺The End🌺点点关注,收藏不迷路🌺

赞(0)
未经允许不得转载:171主机测评 » Linux ip命令完全指南:网络管理的首选工具
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址