功能说明:在Linux系统中,ip命令用于管理IP地址、网络设备、路由表和路由规则、网络命名空间。
语 法:
ip addr add|del IFADDR dev IFACE | show|flush [dev IFACE] [to PREFIX]
ip route list|flush|add|del|change|append|replace|test ROUTE
ip link set IFACE [up|down] [arp on|off] [multicast on|off]
[promisc on|off] [mtu NUM] [name NAME] [qlen NUM] [address MAC]
[master IFACE | nomaster] [netns PID]
ip tunnel add|change|del|show [NAME]
[mode ipip|gre|sit] [remote ADDR] [local ADDR] [ttl TTL]
ip neigh show|flush [to PREFIX] [dev DEV] [nud STATE]
ip rule [list] | add|del SELECTOR ACTION
参 数:
# 辅助参数
ip -n s1 addr 在网络命名空间中执行 ip addr
ip -c link 彩色显示接口
ip -c addr 彩色显示IP地址
ip -c route 彩色显示路由
ip -brief link 简洁显示接口
ip -brief addr 简洁显示地址
ip -brief -c link 彩色简洁显示接口
# ip addr管理IP地址
ip addr 查看IP地址
ip addr add 192.168.1.1/24 dev eth0 给指定设备添加IP地址
ip addr del 192.168.1.1/24 dev eth0 删除指定设备的地址
ip addr flush dev eth0 删除指定设备的所有IP地址
# ip link管理网络设备
ip link 显示所有网络接口
ip link show dev eth0 显示指定设备的信息
ip link set eth0 up 把 eth0 接口设备开启
ip link set eth0 down 把 eth0 接口设备关闭
ip link set eth0 mtu 1450 设置设备的 MTU
ip link add br0 type bridge 添加一个网桥设备
ip link del br0 删除一个网桥设备
ip link set eth0 master br0 把 eth0 添加到网桥 br0
ip link set eth0 nomaster 从网桥中删除 eth0
ip link add veth0 type veth peer name veth1 添加虚拟以太网设备
ip link set veth0 netns s1 把 veth0 移动到网络命名空间
ip link set veth1 netns s2 把 veth1 移动到网络命名空间
ip link set veth0 netns 1 把设备移动到全局网络命名空间
# ip route管理路由表
ip route 显示主路由表
ip route show table [local|main|default|num] 显示路由表
ip route show table main 显示主路由表
ip route show table 520 显示编号为 520 的路由表
ip route get 8.8.8.8 查询一个地址经过的路由
ip route get 8.8.8.8 mark 666 查询经过的路由(带标记)
ip route add default via 10.8.1.1 dev eth0 添加默认路由
ip route add 10.8.1.0/24 via 10.8.1.1 添加静态路由
ip route add 10.8.1.0/24 dev eth0 添加直连路由
ip route add 10.8.1.0/24 dev eth0 metric 10 添加带有 metric 的直连路由
ip route add 10.8.1.0/24 dev eth0 table 520 添加路由到编号 520 的路由表
ip route add table 520 10.8.1.0/24 dev eth0 另一种写法,突出表名
ip route delete 10.8.1.0/24 via 10.8.1.1 删除静态路由
ip route replace 10.8.1.0/24 dev eth0 替换路由
ip route flush cache 路由表立即生效
ip route flush table 520 清空编号为 520 的路由表
# 显示当前定义了哪些路由表
ip route show table all | grep -Eo ‘table [^ ]+ ‘ | sort | uniq
# ip rule管理路由规则
ip rule 显示路由规则
ip rule add table 520 所有包走一下 520 路由表
ip rule add from 0/0 lookup 520 所有包走一下 520 路由表
ip rule add from 0/0 table 520 同上
ip rule add from 0/0 blackhole 所有包丢弃
ip rule add from 0/0 prohibit 所有包拒绝,通信被管理员禁止
ip rule add from 0/0 unreachable 返回 network unreachable
ip rule del table 520 删除所有包走 520 路由表的规则
ip rule add from 10.8.1.0/24 table 520 来自特定网络的包走 520 路由表
ip rule add to 10.8.2.0/24 table 521 发往某网络的包走 521 路由表
ip rule add fwmark 588 table 520 标记为 588 的包走 520 路由表
ip rule add not fwmark 588 table 51820 没有标记为 588 的包走该路由表
ip rule add from 8.8.3.2/32 tos 10 table 2 来自特定 IP 且 TOS 为 10 的包
ip rule add prio 100 fwmark 1 lookup 100 优先级 100 的规则
# ip netns管理网络命名空间
ip netns 显示网络命名空间
ip netns add s1 创建一个网络命名空间
ip netns del s1 删除一个网络命名空间
ip netns attach NAME PID 改变进程网络命名空间
ip netns exec s1 command 在网络命名空间中执行命令
ip netns exec s1 ip link set lo up 在网络命名空间中设置 lo 设备
ip netns identify 查看当前进程的网络命名空间
ip netns identify PID 查看指定进程的网络命名空间
ip netns pids NAME 查看网络命名空间中的进程
ip -n s1 addr add 192.168.64.1/24 dev veth0 在网络命名空间中添加地址
实 例:
1 设置MTU
MTU(Maximum Transmission Unit)是最大传输单元的缩写,表示网络中单个数据包在传输过程中能够承载的最大字节数。简单来说,MTU定义了在网络设备上(如网卡、路由器等)单次能够发送的最大数据量。
为什么MTU很重要?
- 网络性能:较大的MTU可以提高网络传输效率,减少网络分片的发生。但如果MTU设置过大,可能导致某些网络设备无法处理,从而造成数据包丢失或传输失败。
- 数据包分片:如果发送的数据包超过了MTU的限制,数据包就需要被分片,分片后每个小的数据包会分别发送到目标设备并重新组装。过多的分片会增加网络开销,降低性能。
- 兼容性:不同的网络设备和协议可能对MTU有不同的要求,设置不当可能导致网络不兼容或丢包。
你可以使用以下命令来查看当前网络设备eth0的 MTU 设置:
ip link show eth0
设置网络设备 eth0 的 MTU 为 1450 字节:
ip link set eth0 mtu 1450
这意味着 eth0 网络接口上通过的每个数据包不能超过 1450 字节。如果某个应用程序尝试发送更大的数据包,网络协议栈就会将其拆分成多个小包进行发送。
常见网络的MTU值
- 以太网(Ethernet):默认的MTU值通常是 1500 字节。
- PPPoE(Point-to-Point Protocol over Ethernet):通常 MTU 为 1492 字节,因为额外的 8 字节用于标头。
- Wi-Fi:通常与以太网相同,也为 1500 字节,但某些无线网络可能因为协议开销而略低。
参考
https://github.com/skywind3000/awesome-cheatsheets/blob/master/tools/ip.txt