一、iproute命令简介
如今很多系统管理员依然通过组合使用诸如ifconfig、route、arp和netstat等命令行工具(统称为net-tools)来配置网络功能,解决网络故障。net-tools起源于BSD的TCP/IP工具箱,后来成为老版本Linux内核中配置网络功能的工具。但自2001年起,Linux社区已经对其停止维护。同时,一些Linux发行版比如Ubuntu 18,Arch Linux和CentOS/RHEL 7则已经完全抛弃了net-tools,只支持iproute2。
作为网络配置工具的一份子,iproute2是linux下管理控制TCP/IP网络和流量控制的新一代工具包,旨在替代老派的工具链net-tools,即大家比较熟悉的ifconfig,arp,route,netstat等命令。。net-tools通过procfs(/proc)和ioctl系统调用去访问和改变内核网络配置,而iproute2则通过netlink套接字接口与内核通讯。抛开性能而言,net-tools的用法给人的感觉是比较乱,而iproute2的用户接口相对net-tools来说相对来说,更加直观。比如,各种网络资源(如link、IP地址、路由和隧道等)均使用合适的对象抽象去定义,使得用户可使用一致的语法去管理不同的对象。。更重要的是,到目前为止,iproute2仍处在持续开发中。
所以,net-tools和iproute2都需要去学习掌握了。
如果你仍在使用net-tools,而且尤其需要跟上新版Linux内核中的最新最重要的网络特性的话,那么是时候转到iproute2的阵营了。原因就在于使用iproute2可以做很多net-tools无法做到的事情。
net-tools跟iproute2的对比如下图所示:

输入命令后如下:
# ip help
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
ip [ -force ] -batch filename
where OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable |
tunnel | tuntap | maddr | mroute | mrule | monitor | xfrm |
netns | l2tp | tcp_metrics | token }
OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
-h[uman-readable] | -iec |
-f[amily] { inet | inet6 | ipx | dnet | bridge | link } |
-4 | -6 | -I | -D | -B | -0 |
-l[oops] { maximum-addr-flush-attempts } |
-o[neline] | -t[imestamp] | -b[atch] [filename] |
-rc[vbuf] [size] | -n[etns] name | -a[ll] }

二、常用ip命令备忘录
ip地址管理
1.显示ip地址
ip a
ip address show
ip addr show dev eth0
ip a sh eth0
2.增加删除地址
ip address add 192.0.2.1/24 dev eth0
ip addr del 192.0.2.2/24 dev eth0
3.显示接口统计
ip -s link ls eth0
网卡和链路配置
4.显示链路
ip link show
ip link sh eth0
4.修改接口状态
ip link set eth0 up
ip link s gre01 down
路由表管理
5.显示路由表
ip route
ip ro show dev gre01
6.增加新路由
ip route add 10.2.2.128/27 dev gre01
7.增加默认路由
ip route add default via 192.168.1.1
8.修改默认路由
ip route chg default via 192.168.1.2
9.删除默认路由
ip route del default
隧道配置
10.增加删除GRE隧道
ip tunnel add gre01 mode gre local 10.1.1.1 remote 20.2.2.1 ttl 255
ip tunnel del gre01
11.IPIP隧道
ip tunl a ipip01 mode ipip local 10.1.1.1 remote 20.2.2.1 ttl 255
12.显示隧道
ip tunnel show
13.显示隧道统计
ip -s tunl ls gre01
邻居和arp表管理
13.查看arp表
ip neigh show
14.手工增加删除arp项
ip neighbor add 10.2.2.2 dev eth0
ip neigh del 10.2.2.1 dev eth0
socket统计
15.显示当前监听
ss -l
15.显示当前监听的进程
ss -p
#常用命令
ip link show #显示链路
ip addr show #显示地址(或ifconfig)
ip route show #显示路由(route -n)
ip neigh show #显示arp表(ping 192.168.95.50,如果主机在同一局域网内,直接加到arp表)
ip neigh delete 192.168.95.50 dev eth0 #删除arp条目,条目仍然存在状态为stale,下次通信需要确认
ip rule show #显示缺省规则
ip route del default dev eth0 #删除接口路由
ip route show table local #查看本地静态路由
ip route show table main #查看直连路由
#添加静态路由
ip route add 10.0.0.0/24 via 192.168.92.129
ip route add 10.10.10.10 via 192.168.92.129
ip route add 172.31.100.0/24 dev eno16777736
ip route add 172.32.0.2 dev eno16777736
#查看路由表
[root@localhost ~]# ip route show table main
#删除
ip route del 10.0.0.0/24
ip route del 10.10.10.10
ip route del 172.31.100.0/24
ip route del 172.32.0.2
#再次查看路由表
[root@localhost ~]# ip route show table main
[root@localhost ~]# ip route show table local
#添加网卡别名
ip addr add 192.168.0.11/24 dev eno16777736
#查看下网卡,别名没有产生,而是直接继承
[root@localhost ~]# ip addr show eno16777736
#添加网卡别名并添加标记 label
ip addr add 192.168.1.2 label eno16777736:0 dev eno16777736
#查看下,多了eno16777736:0
ip addr show eno16777736
[root@localhost ~]# ip addr add 192.168.55.191/24 label eth0:1 dev eth0
[root@localhost ~]# ip addr show
三、使用iproute命令集配置网络
0、先关闭网卡
sudo ip link set down eth0
1、设置静态ip
sudo ip addr add 192.168.1.100/24 dev eth0
2、设置mac地址
sudo ip link set dev eth0 address 08:00:27:75:2a:67
3、启动网卡
sudo ip link set upii eth0
4、设置网关(默认路由)
-
sudo ip route add default via 192.168.1.1 dev eth0
- (取消设置)$ sudo ip route replace default via 192.168.1.1 dev eth0
这时修改/etc/resolv.conf 的dns,应该就能正常上网了。
0 条评论