前置知识: Networking

ip 命令

2 min入门

ip/ifconfig/route 常用网络命令:接口与地址管理、路由表操作、邻居表查看与持久化配置。

ip addr 地址管理

基本写法:查看所有网络接口 ip addr

# 查看所有接口和 IP 地址
ip addr

基本写法:简写形式 ip a

# 简写查看接口信息
ip a

基本写法:查看指定接口 ip addr show <接口>

# 查看 eth0 接口信息
ip addr show eth0

基本写法:添加 IP 地址 ip addr add <IP>/<前缀> dev <接口>

# 给 eth0 添加 IP 地址
ip addr add 192.168.1.100/24 dev eth0

基本写法:删除 IP 地址 ip addr del <IP>/<前缀> dev <接口>

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

基本写法:查看链路状态 ip link show

# 查看所有网络接口链路状态
ip link show

基本写法:启用接口 ip link set <接口> up

# 启用 eth0 接口
ip link set eth0 up

基本写法:禁用接口 ip link set <接口> down

# 禁用 eth0 接口
ip link set eth0 down

基本写法:设置 MTU ip link set <接口> mtu <大小>

# 设置 eth0 的 MTU 为 1500
ip link set eth0 mtu 1500

基本写法:修改 MAC 地址 ip link set <接口> address <MAC>

# 修改 eth0 的 MAC 地址
ip link set eth0 address 00:11:22:33:44:55

ip route 路由管理

基本写法:查看路由表 ip route

# 查看完整路由表
ip route

基本写法:添加默认网关 ip route add default via <网关>

# 设置默认网关
ip route add default via 192.168.1.1

基本写法:添加静态路由 ip route add <目标网络>/<前缀> via <网关>

# 添加到 10.0.0.0/24 的路由
ip route add 10.0.0.0/24 via 192.168.1.254

基本写法:通过指定接口添加路由 ip route add <目标网络>/<前缀> dev <接口>

# 通过 eth0 接口添加路由
ip route add 172.16.0.0/16 dev eth0

基本写法:删除路由 ip route del <目标网络>/<前缀>

# 删除指定路由
ip route del 10.0.0.0/24

基本写法:查看路由缓存 ip route get <目标IP>

# 查看到 8.8.8.8 的路由决策
ip route get 8.8.8.8

ip neigh 邻居表(ARP)

基本写法:查看 ARP 表 ip neigh

# 查看 ARP 邻居表
ip neigh

基本写法:查看指定接口的 ARP ip neigh show dev <接口>

# 查看 eth0 接口的 ARP 表
ip neigh show dev eth0

基本写法:删除 ARP 条目 ip neigh del <IP> dev <接口>

# 删除指定 IP 的 ARP 条目
ip neigh del 192.168.1.100 dev eth0

基本写法:刷新 ARP 缓存 ip neigh flush dev <接口>

# 刷新 eth0 的 ARP 缓存
ip neigh flush dev eth0

ip rule 策略路由

基本写法:查看路由策略 ip rule

# 查看策略路由规则
ip rule

基本写法:添加策略路由规则 ip rule add from <源IP> table <表号>

# 来自 192.168.1.100 的流量走表 100
ip rule add from 192.168.1.100 table 100

基本写法:删除策略路由规则 ip rule del from <源IP> table <表号>

# 删除策略路由规则
ip rule del from 192.168.1.100 table 100

ip -s 统计信息

基本写法:查看接口统计 ip -s link

# 查看接口收发包统计
ip -s link

基本写法:详细统计信息 ip -s -s link

# 查看更详细的接口统计
ip -s -s link

基本写法:查看指定接口统计 ip -s link show <接口>

# 查看 eth0 的收发包统计
ip -s link show eth0

ip monitor 监控

基本写法:监控网络变化 ip monitor

# 实时监控网络状态变化
ip monitor

基本写法:监控特定类型 ip monitor <类型>

# 只监控路由变化
ip monitor route

基本写法:监控链路状态 ip monitor link

# 监控网络接口状态变化
ip monitor link

VLAN 与网桥

基本写法:创建 VLAN 接口 ip link add link <接口> name <VLAN名> type vlan id <VLAN ID>

# 在 eth0 上创建 VLAN 100
ip link add link eth0 name eth0.100 type vlan id 100

基本写法:创建网桥 ip link add name <网桥名> type bridge

# 创建 br0 网桥
ip link add name br0 type bridge

基本写法:将接口加入网桥 ip link set <接口> master <网桥>

# 将 eth0 加入 br0 网桥
ip link set eth0 master br0

基本写法:从网桥移除接口 ip link set <接口> nomaster

# 从网桥移除 eth0
ip link set eth0 nomaster

网络命名空间

基本写法:创建命名空间 ip netns add <名称>

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

基本写法:列出所有命名空间 ip netns list

# 列出所有网络命名空间
ip netns list

基本写法:在命名空间中执行命令 ip netns exec <命名空间> <命令>

# 在 ns1 中查看 IP 地址
ip netns exec ns1 ip addr

基本写法:将接口移入命名空间 ip link set <接口> netns <命名空间>

# 将 eth1 移入 ns1 命名空间
ip link set eth1 netns ns1

基本写法:删除命名空间 ip netns del <名称>

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

隧道

基本写法:创建 GRE 隧道 ip tunnel add <名称> mode gre remote <远端IP> local <本地IP>

# 创建 GRE 隧道
ip tunnel add gre1 mode gre remote 10.0.0.2 local 10.0.0.1

基本写法:创建 IPIP 隧道 ip tunnel add <名称> mode ipip remote <远端IP> local <本地IP>

# 创建 IPIP 隧道
ip tunnel add tunl0 mode ipip remote 10.0.0.2 local 10.0.0.1

基本写法:查看隧道 ip tunnel show

# 查看所有隧道
ip tunnel show

基本写法:删除隧道 ip tunnel del <名称>

# 删除 gre1 隧道
ip tunnel del gre1