linux网络之IP命令

目录

IP命令格式

route命令

addr命令

link 命令:


IP命令格式

ip options object {command | help}

options 可选项:

-V,显示版本

-h,符合人类阅读习惯显示输出

-f,-family {inet, inet6, link} 强制使用指定的协议族

-4,指定使用的网络层协议是IPv4协议
-6,指定使用的网络层协议是IPv6协议

-B,指定使用的网络层协议是Bridge协议

-D,指定使用的网络层协议是decnet协议

-M,指定使用的网络层协议是mpls协议

-0,指定使用的网络层协议是link协议

-i,指定使用的网络层协议是ipx协议

-d,输出更详细的信息

-o,-oneline,输出信息每条记录输出一行,即使内容较多也不换行显示

-r,-resolve,显示主机时,不使用IP地址,而使用主机的域名

-l,-loops,指定“ip地址刷新”的最大循环数。如果设置为0,那么将会一直尝试,直到所哟地址被移除。

-t,-timestamp,当使用监视器选项时,输出时间戳

-a,-all,执行指定命令给所有对象(如果命令支持这个选项)

-c,-color,使用颜色输出

 object可选项:

       address(addr):网络设备的IP(v4或者v6)地址信息

        link :网络设备信息

        maddress:多播地址

        mourte:组播路由缓存条目

        monitor:监控网络链接消息

        netns:管理网络命名空间

        ntable:管理邻居表缓存操作

        neighbour:邻居表

        route:路由表

        rule:IP策略

        tunnel:IP隧道

        tuntap:管理tun/tap设备

command 选项:

        add:新增

        delete:删除

        show(or list):显示

        set:设置参数

 IP命令很强大,但是常用的只有 route(路由) address网络设备的IP(v4或者v6)地址信息)和 link(网络设备信息) 这三个。

route命令

route命令主要是显示和处理关于路由相关的操作。

ip route show或者 ip route list  主要显示本机的路由信息

[root@cwdata-log-01 ~]# ip route list
default via 172.16.10.1 dev enp1s0 proto dhcp metric 100 
169.254.169.254 via 172.16.10.3 dev enp1s0 proto dhcp metric 100 
172.16.10.0/24 dev enp1s0 proto kernel scope link src 172.16.10.31 metric 100 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
192.168.64.0/20 dev br-b6015ebbd217 proto kernel scope link src 192.168.64.1 

其中第一行的意思是:默认路由 通过enp1s0网络设备(网卡)经由网关172.16.0.1 发出。

第二行的意思是:发送到169.254.169.254这个网络的包 通过enp1s0网络设备(网卡)  经由网关172.16.0.3 发出

第三行的意思是:发送到172.16.10.0/24这个网段的包,通过enp1s0网络设备(网卡)发出, src 172.16.10.31表示改网卡的IP是172.16.10.31  metric代表路径距离,如果一个ip路由到相同的网络,且网络前缀相同时,metric值越小则优先级越高。

其中route还有一种查询方式

[root@cwdata-log-01 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.10.1     0.0.0.0         UG    100    0        0 enp1s0
169.254.169.254 172.16.10.3     255.255.255.255 UGH   100    0        0 enp1s0
172.16.10.0     0.0.0.0         255.255.255.0   U     100    0        0 enp1s0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.64.0    0.0.0.0         255.255.240.0   U     0      0        0 br-b6015ebbd217

其中default和0.0.0.0是一个意思,都代表默认网关。

默认网关是一种特殊网关:0.0.0.0/0 代表网络掩码全是0,用全0掩码和目的地址进行AND运算的结果必然全是0,这样和转发表中0.0.0.0/0网段全匹配,这样就按照转发表找到下一跳的路由。而根据路由最长匹配原则,当一个目的地址找不到对应网关时,就会和默认网关的网段进行匹配(默认网关的网络段是最段的)。

路由最长匹配原则:根据IP斜线划分法,把IP分为两部分,网络前缀(网段)和主机,而网段越长,主机号越短,而路由就更具体,为了快速找到目的地址,可以根据前缀的长短进行排序,前缀越长的排在前面,当前面网段匹配上时,就不再进行后续匹配。

169.254.169.254 代表的是特定主机路由。特定主机路由的子网掩码(Genmask)必定是255.255.255.255  用169.254.169.254/32表示。特定主机路由没用实际意义,主要用于测试。

其中默认路由和主机路由是网卡自带的。每安装一个网卡必然会有这两个。

ip route add 目标网络/掩码 via 网关 dev 网络接口

ip route add 172.16.10.0/28 via 172.16.10.241 dev enp1s0  
ip route list
default via 172.16.10.1 dev enp1s0 proto dhcp metric 100 
169.254.169.254 via 172.16.10.3 dev enp1s0 proto dhcp metric 100 
172.16.10.0/28 via 172.16.10.241 dev enp1s0 
172.16.10.0/24 dev enp1s0 proto kernel scope link src 172.16.10.31 metric 100 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
192.168.64.0/20 dev br-b6015ebbd217 proto kernel scope link src 192.168.64.1 

上述命令是给172.16.10.0/24网络内部再划分一个子网络,其中 via代表经由  dev后面跟着网络接口,上面的add代表的意思,添加一个网络路由,发送172.16.10.0/24网段的包,经由172.16.10.241路径 通过enp1s0接口发出

删除路由

ip route del 172.16.10.0/28 via 172.16.10.241 dev enp1s0

addr命令

ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether fa:16:3e:3c:dd:d9 brd ff:ff:ff:ff:ff:ff
    inet 172.16.10.31/24 brd 172.16.10.255 scope global noprefixroute enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fe3c:ddd9/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:16:41:2b:66 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
4: br-5dde4c1dea99: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default 
    link/ether 02:42:e5:ec:2f:49 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/16 brd 172.18.255.255 scope global br-5dde4c1dea99
       valid_lft forever preferred_lft forever
157: br-b6015ebbd217: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:3b:2d:eb:5a brd ff:ff:ff:ff:ff:ff
    inet 192.168.64.1/20 brd 192.168.79.255 scope global br-b6015ebbd217
       valid_lft forever preferred_lft forever
    inet6 fe80::42:3bff:fe2d:eb5a/64 scope link 
       valid_lft forever preferred_lft forever
163: veth2314389@if162: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-b6015ebbd217 state UP group default 
    link/ether 6e:d9:28:b6:03:18 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::6cd9:28ff:feb6:318/64 scope link 
       valid_lft forever preferred_lft forever

io代表回环网络接口

enp代表以太网卡网络接口

docker0代表容器的网络接口

veth一般是linux的veth-pair类型的虚拟网络接口

br一般代表桥接或者网桥接口

brd代表广播地址

link/ether mac地址,veth类型的网络接口中没有ip地址,是因为该网络接口只是工作在链路层,通mac地址进行帧的转发,所以没有IP

LOWER_UP表示网线插着

BROADCAST 表示这个网可以发送广播包;MULTICAST 表示网卡可以发送多播

UP 表示网卡处于启动的状态;

MTU1500是指最大传输单元 MTU 为 1500,这是以太网的默认值。MTU 是二层 MAC 层的概念

scope global/host
对于 eth0 这张网卡来讲,是 global,说明这张网卡是可以对外的,可以接收来自各个地方的包
对于 lo 来讲,是 host,说明这张网卡仅仅可以供本机相互通信。

ip addr add ip/netmask dev 网口名称

ip addr add 172.16.10.241/28 dev enp1s0 
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether fa:16:3e:3c:dd:d9 brd ff:ff:ff:ff:ff:ff
    inet 172.16.10.31/24 brd 172.16.10.255 scope global noprefixroute enp1s0
       valid_lft forever preferred_lft forever
    inet 192.168.88.0/24 scope global enp1s0
       valid_lft forever preferred_lft forever
    inet 172.16.10.241/28 scope global enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fe3c:ddd9/64 scope link 

上图是给enp1s0设置多个IP地址

link 命令:

link 即链路的意思,该命令主要用来查看和管理网络设备接口。

该命令最长用的是创建veth_pair

ip link set

ip link set DEVICE { up | down | arp { on | off } | name NEWNAME | address LLADDR }

  • 选项说明:
  • dev DEVICE:指定要操作的设备名
  • up and down:启动或停用该设备
  • arp on or arp off:启用或禁用该设备的arp协议
  • name NAME:修改指定设备的名称,建议不要在该接口处于运行状态或已分配IP地址时重命名
  • address LLADDRESS:设置指定接口的MAC地址
  • // 设置mac地址
    ip link set eth1 address 00:0c:29:f3:33:77
    
    //禁用
    ip link set eth1 down
    
    //启用
    ip link set eth1 up

 总结:

由于我们大多数对window操作比较熟悉,而对linux操作部熟悉,导致读于网络的link addr route概念上不容易区分,我把这三者和window操作做类比如下:

ip link 操作网络接口,其实相当于window中对网络的操作,比如禁用网络启用网络

ip addr 相当于window对网络配置Ip 子网掩码

ip route  相当于window配置网关

本次文章涉及的概念名词有:

网络接口,虚拟网络接口,路由,网关(默认网关,主机网关),IP ,网络协议 

放在一起说,是为了有意识的进行比较。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值