ip命令网络配置 RHEL/CentOS系列发行版网络配置介绍 RHEL/CentOS系列发行版nmcli命令概述

Linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者。使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务。ifconfig是net-tools中已被废弃使用的一个命令,许多年前就已经没有维护了。Linux系统提供iproute2工具用于替代一些常用的net-tools命令,iproute2套件里提供了许多增强功能的命令,ip命令即是其中之一,ip命令支持tab补全。

一、ip常用命令格式如下:

ip [ OPTIONS ] OBJECT { COMMAND | help }
对象OBJECT={ link | addr | addrlabel | route | rule | neigh | ntable | tunnel | maddr | mroute | mrule | monitor | xfrm | token }

选项OPTIONS={ -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] | -h[uman-readable] | -iec | -f[amily] { inet | inet6 | ipx | dnet | link } | -o[neline] | -t[imestamp] | -b[atch] [filename] | -rc[vbuf] [size] }

--------------------------------------------------------------------
常用对象的取值含义如下:
link:网络设备
address:设备上的协议(IP或IPv6)地址
addrlabel:协议地址选择的标签配置
route:路由表条目
rule:路由策略数据库中的规则

常用选项的取值含义如下:
-V,-Version:显示指令版本信息
-s,-stats,statistics:输出详细信息
-h,-human,-human-readable:输出人类可读的统计信息和后缀
-o,-oneline:将每条记录输出到一行,用‘\’字符替换换行符
--------------------------------------------------------------------

二、使用实例
1、检查网卡信息

命令:ip addr show
说明:显示网卡及配置的地址信息
----------------------------------------------------------------------------------
[root@CentOS7GUI1 ~]# ip addr show | more
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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:0b:cc:63 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.56/24 brd 192.168.1.255 scope global noprefixroute dynamic enp0s3
valid_lft 81504sec preferred_lft 81504sec
inet6 2408:832e:ca9:5c40:f046:c71f:fa9:134b/64 scope global noprefixroute dynamic
valid_lft 174827sec preferred_lft 88427sec
inet6 fe80::c632:ffaa:370:ca71/64 scope link noprefixroute
valid_lft forever preferred_lft forever
---------------------------------------------------------------------------------
输出内容详解:
首先这个系统有两个接口:lo和enp0s3,lo是环回接口,而我们重点关注的则是enp0s3这个普通网络接口;下面在看看每个子项的含义:

<BROADCAST,MULTICAST,UP,LOWER_UP>:BROADCAST表示该接口支持广播;MULTICAST表示该接口支持多播;UP表示该网络接口已启用;LOWER_UP表示网络电缆已插入,设备已连接至网络
mtu 1500:最大传输单位(数据包大小)为1,500字节
qdisc pfifo_fast:用于数据包排队
state UP:网络接口已激活
qlen 1000:传输队列长度
link/ether 08:00:27:0b:cc:63:接口的MAC(硬件)地址
brd ff:ff:ff:ff:ff:ff:广播地址
inet 192.168.1.56/24:IPv4地址
brd 192.168.1.255:广播地址
scope global:全局有效
dynamic enp0s3:地址是动态分配的
valid_lft forever:IPv4地址的有效使用期限
preferred_lft forever:IPv4地址的首选生存期
inet6 fe80::2c8e:1de0:a862:14fd/64:IPv6地址
scope link:仅在此设备上有效
valid_lft forever:IPv6地址的有效使用期限
preferred_lft forever:IPv6地址的首选生存期


三、ip link 相关
ip link 可以设定与设备(device)有关的相关设定,包括MTU以及该网络设备的MAC等,当然也可以启动(up)或关闭(down)某个网络设备。

1、显示出所有可用网络接口的列表(无论接口是否激活)
ip link show #show可以省略

扫描二维码关注公众号,回复: 10193846 查看本文章

2、激活或停用网络接口
ip link set enp0s3 down #停用接口,可以用tab补全
ip link set enp0s3 up #激活接口

3、开启或关闭网卡混合模式(即网卡对流经它的任何数据都接收,不管目的是否是自己,一般用于网络分析)。
ip link set enp0s3 promisc on #开启
ip link set enp0s3 promisc off#关闭

4、设置网卡的MTU
ip link set enp0s3 mtu 1100

5、改变网络接口的MAC地址
ip link set dev enp0s3 address 08:00:27:75:2a:67

6、显示网络统计数据
ip -s link #所以网卡统计数据
ip -s link ls enp0s3#单个网卡统计信息,这里可以添加多个-s会给你这个特定接口更详细的信息。特别是在排除网络连接故障时,这会非常有用。

输出内容说明:
---------------------------------------------------------------------------------
[root@CentOS7GUI1 ~]# ip -s link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
RX: bytes packets errors dropped overrun mcast
0 0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
0 0 0 0 0 0
2: enp0s3: <BROADCAST,MULTICAST> mtu 1100 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
link/ether 08:00:27:0b:cc:63 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
993408 11778 0 0 0 6597
TX: bytes packets errors dropped carrier collsns
24237 228 0 0 0 0
---------------------------------------------------------------------------------
输出重点内容详解:
RX:表示接收
TX:表示发送
bytes:接收/发送的字节数
packets:接收/发送的包数
errors:接收/发送的带有错误的包总数
dropped:由于处理资源不足导致接收/发送的丢弃的包数
overrun:因接收溢出(环形缓冲区)导致丢失的包;通常如果接口溢出,则表示内核中存在严重问题,或者说服务器上该网络设备的处理设备太慢
mcast:接收到的多播包数
carrier:因数据链路错误导致发送失败的包数
collsns:因在网络上发送冲突而导致的失败数


四、ARP地址解析协议(ARP)用于将一个IP地址转换成它对应的物理地址,也就是通常所说的MAC地址。使用ip命令的neigh或者neighbour选项,你可以查看接入你所在的局域网的设备的MAC地址。
1、显示ARP表
ip neigh

2、添加静态ARP项
ip neigh add 192.168.111.100 lladdr 00:0c:29:c0:5a:ef dev enp0s3

2删除静态ARP项
ip neigh del 192.168.111.100 dev enp0s3

五、ip address 相关
如果说ip link是与OSI七层模型的第二层数据链路层有关的话,那么ip address (ip addr)就是与第三层网络层有关的了。主要是在设定与 IP 有关的各项参数,包括 netmask, broadcast 等。

1、查看IP参数
ip addr show#show可以省略,addr是address的简写
ip addr show enp0s3 #查看特定网络接口,这里的show不可以省略

2、为网络接口分配IPv4地址
ip addr add 10.0.0.1/24 dev enp0s3

3、为网络接口分配多个IPv4地址,一个网卡只能绑定一个IP地址(即IP与MAC绑定),但可以设置多个IP地址,作用就是可以连接多个网段(就是可以访问多个网段),但前提是这些网段物理层是连接在一起。
ip addr add 10.0.0.1/24 dev enp0s3
ip addr add 10.0.0.2/24 dev enp0s3

4、移除网络接口的IPv4地址
ip addr del 10.0.0.2/24 dev enp0s3

六、ip route 相关
ip rule命令中包含add、delete、show(或者list)等子命令,注意:策略路由(policy routing)不等于路由策略(rouing policy)。在某些情况下,我们不只是需要通过数据包的目的地址决定路由,可能还需要通过其他一些域:源地址、IP协议、传输层端口甚至数据包的负载。这就叫做:策略路由(policy routing)。用这种方法修改的默认路由只是临时有效的,在系统重启后所有的改动都会丢失。

路由配置格式:
ip route [add|del] [IP或网域] [via gateway] [dev 设备]

[add|del]:增加(add)或删除(del)路由。

[IP或网域]:目标网络或目标主机,可使用192.168.110.0/24之类的网域或者是单纯的IP 。

[via gateway]:从哪个gateway(下一跳ip地址)出去,这个ip地址必须与主机能二层互通。

[dev 网络接口]:所要设定的设备,例如enp0s3, enp0s4等。


1、查看IP路由表
ip route show #show可以省略
ip route show|column -t #如果感觉显示的太乱可以通过column -t命令让显示更友好
---------------------------------------------------------------------------------
[root@CentOS7GUI1 ~]# ip route
default via 192.168.1.1 dev enp0s3 proto dhcp metric 100
10.10.10.0/24 dev enp0s8 proto kernel scope link src 10.10.10.71 metric 101
192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.56 metric 100
192.168.12.0/24 via 192.168.1.254 dev enp0s3
192.168.100.0/24 via 192.168.1.1 dev enp0s3
192.168.101.0/24 via 192.168.1.1 dev enp0s3
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
192.168.200.0/24 dev enp0s3 scope link
---------------------------------------------------------------------------------
上面每一行就是一条路由,或叫做路由条目,default字样的是默认路由(默认网关)
proto:此路由的路由协定,主要有redirect,kernel,boot,static,ra等,其中kernel是直接由核心判断自动设定,可以理解为直连路由。
scope:路由的范围,主要是link,是与本设备有关的直接连接。

2、添加路由
ip route add default via 192.168.1.2 #添加默认路由,可以添加多个但是不要这样做,一个设备只添加一个默认路由,如果多个默认路由不能通过优先级区分,那么数据包会不知道从哪里走
ip route add 192.168.200.0/24 dev enp0s3 #通过网络接口方式
ip route add 192.168.100.0/24 via 192.168.1.1 #通过网关的方式,也就是下一跳,推荐这种方式
ip route add 192.168.101.0/24 via 192.168.1.1 dev enp0s3 #可以两个信息都有

3、删除路由
ip route del default #删除默认路由,从后添加的让前删除
ip route del default via 192.168.1.2 #删除指定的默认路由
ip route del 192.168.200.0/24#删除去往指定目的网络的路由

4、刷新路由表
ip route flush cache

5清空路由表
ip route flush all #不要轻易用这个命令,用以前也要把路由信息备份下

七、设置永久的静态路由(CentOS7以上)
配置前最好先确认下当前网络是那套管理网络连接的方案,默认是Network-Manager(NetworkManager服务开启),如果是这套可以通过nmtui命令在网卡对应激活的连接中添加路由
看前面的文章了解相应的概念:RHEL/CentOS系列发行版网络配置介绍  及RHEL/CentOS系列发行版nmcli命令概述

1、添加永久静态路由

/etc/sysconfig/network 配置文件仅仅可以提供全局默认网关,语法同 Centos6 一样: GATEWAY=<ip address> ;但是不推荐这样做,因为:
存在多个网卡时,默认路由似乎是随机经由某个网卡设备。检查了所有连接配置文件后发现,第一网卡的默认连接配置文件 ifcfg-eth0 设置了GATEWAY0(此设置会覆盖/etc/sysconfig/network 定义的全局默认网关),第二网卡的连接配置文件 ifcfg-eth1 使用的是dhcp,会在启动时也分配默认网关,两个默认网关让计算机糊涂了。这是在测试系统里经常发生的现象,生产系统一般不会让网卡用dhcp,或者即使是用了也会仔细分配默认网关防止冲突。

推荐的方法是如果多个网卡都有上网,就把能连接到所有网络的那个网卡的配置文件里的添加网关选项,其它网卡都不要添加,这样就会只有一个默认路由,需要的路由再单独添加路由信息

永久静态路由需要写到 /etc/sysconfig/network-scripts/route-****** 文件中,故在/etc/sysconfig/network-scripts/下,新建文件名为route-******的文件,(*******代表网卡名)
比如添加两条静态路由:
------------------------------------------------------------------------
[root@centos7 ~]# vi /etc/sysconfig/network-scripts/route-enp0s3
10.15.150.0/24 via 192.168.150.253 dev enp0s3
10.25.250.0/24 via 192.168.150.253 dev enp0s3
------------------------------------------------------------------------
这里一定要清楚目的网络要从那个网口出去,及下一跳ip是多少

重启计算机,或者重新启用设备enp0s3才能生效。


2、清除永久静态路由

可以删除 ifcfg-enp0s3文件或者注释掉文件里的相应静态路由条目,重启计算机。

想要让修改后的静态路由立即生效,只能用 ip route del 手工删除静态路由条目。


其他需要注意的:

1)连接配置文件 ifcfg-* 里可以设置多个GATEWAY,一般第一个是 GATEWAY0,然后GATEWAY1, GATEWAY2... ,尾号最大的有效;

2)如果必须在/etc/sysconfig/network 文件定义全局网关,连接配置文件 ifcfg-* 就不要设置GATEWAY了,dhcp的连接要注意dhcp服务器不要定义默认网关。

3)ifcfg-enp0s3 文件改名为 ifcfg-eth0 后,route-enp0s3 文件也要改名为 route-eth0。

4)有时候路由生效了但是在 ip route show 却没有显示,重启计算机后是肯定显示的,原因暂时不明。

 

参考:

https://www.jellythink.com/archives/469

https://www.jianshu.com/p/7466862382c4

https://www.cnblogs.com/panblack/p/Centos7_Static_Routes.html

 

 

猜你喜欢

转载自www.cnblogs.com/pipci/p/12575601.html