1. net-tools
net-tools一般包括ifconfig、route、arp和netstat等工具,一般用来配置网络功能,解决网络故障。net-tools起源于BSD的TCP/IP工具箱,后来成为老版本Linux内核中配置网络功能的工具。但自2001年起,Linux社区已经对其停止维护。同时,一些Linux发行版比如Ubuntu 18,Arch Linux和CentOS/RHEL 7则已经完全抛弃了net-tools,只支持iproute2。
2. iproute2
作为网络配置工具的一份子,iproute2是linux下管理控制TCP/IP网络和流量控制的新一代工具包,旨在替代老派的工具链net-tools。net-tools通过procfs(/proc)和ioctl系统调用去访问和改变内核网络配置,而iproute2则通过netlink套接字接口与内核通讯。net-tools的用户体验差,相对混乱。而iproute2的用户接口相对net-tools来说相对来说,更加直观。比如,各种网络资源(如link、IP地址、路由和隧道等)均使用合适的对象抽象去定义,使得用户可使用一致的语法去管理不同的对象。。更重要的是,到目前为止,iproute2仍处在持续开发中。
3. 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] }
4. ip route基本用法
1.显示ip地址
ip a
ip address show
ip addr show dev eth0
ip a sh eth0
2.列出路由
ip route list
ip route show
ip route
3.查看指定网段的路由
ip route list 192.168.2.0/24
4.添加路由
ip route add 192.168.2.0/24 via 192.168.1.1
5.追加路由
ip route append 192.168.2.0/24 via 192.168.1.12
#追加一个指定网络的路由,为了平滑切换网关使用
6.修改路由
ip route change 192.168.2.0/24 via 192.168.1.11
ip route replace 192.168.2.0/24 via 192.168.1.111
7.删除路由
ip route del 192.168.2.0/24 via 192.168.1.1
8.清空指定网络的路由
ip route flush 192.168.2.0/24
#这个是清理所有192.168.2.0/24相关的所有路由,
#有时候设置错网关存在多条记录,就需要一次性清空相关路由再进行添加
9.添加默认路由
ip route add default via 192.168.1.1
10.指定路由metirc
ip route add 192.168.2.0/24 via 192.168.1.15 metric 10
11.增加删除GRE隧道
ip tunnel add gre01 mode gre local 10.1.1.1 remote 20.2.2.1 ttl 255
ip tunnel del gre01