高级网卡配置工具

【前言】

上篇文章说了网络模型的一些定义和原理,那么这篇就以实践为主了,主要来讲一讲关于网络设置的一些命令。

【Ifconfig】

Ifconfig命令是一个历史悠久的命令,这点在man 帮助里是有所体现的:

这里写图片描述

虽然年代久远,但是还是很德高望重的,那么就首先来说说这位老人家的用法。

ifconfig 后面不加任何参数,可以查看当前系统使用的网卡信息

在这里我们使用CentOS7来进行实验:

这里写图片描述

ifconfig -a   显示当前系统中的所有网卡
这里因为小编没有其他的网卡,所以跟上个命令的显示结果一样,看官们如果发现有不同也不要惊慌哈~

这里写图片描述

ifcnonfig 网卡名 up/down 激活或停用一个网卡

这里写图片描述
这里写图片描述

既然上面我们说ifocnfig这个命令年代久远,那么必须就要有个新势力出现了,这个新势力就是ip 命令。
ip命令是一个强大的工具,它可以代替很多传统的工具,例如ifconfig、route等来实现一些它们的功能,它对应了三个对象(object),分别是addr、link、route。首先来看一下ip addr
ip addr (可以简写为 ip a )查看网卡信息

这里写图片描述

ip addr add IP地址 设备名称   可以给当前网卡手动添加一个地址

这里写图片描述

ip addr del IP地址 设备名称   删除一个地址

这里写图片描述

   ip link                 显示网络设备的运行状态
   ip -s link              显示更详细的设备信息
   ip link show dev eth1   仅显示eth0的信息
   ip link show  up        仅显示处于激活状态的设备
   ip link set ens33 down  down掉eth0
   ip link set ens33 up    激活eth0

这里写图片描述

ip route 这个命令和route 实现的功能是大同小异的,这里就放在一块说吧:
route  -n  查看路由表
route  add 添加路由
       -net   到达网络路由   
       -host  到达主机路由,比较精准
添加默认网关:
  route add -net  0.0.0.0/0  gw xxx.xxx.xxx.xxx  添加默认路由记录
  route add default gw xxx.xxx.xxx.xxx
route  del  删除路由
ip route 
  ip route add IP地址 via 网关地址 dev 设备名
  ip route add default via GW  添加默认网关
  ip route del IP地址   删除路由
  ip route show|list   显示路由表
  ip route flush       清空路由表
  ip route flush dev ens33 清空路由表

这里写图片描述

  当然以上所说的都是通过命令来实现,但都是临时生效,开机重启之后会恢复到远状态,如果想要长期有效,就要将其写入文件中,在/etc/sysconfig/network-scripts/ 下创建一个名为route-IFACE(网卡名)的文件,在文件中写入如下格式,即可生效:

IP地址 via  GW eg : 10.0.0.0/8 via 172.17.0.1

以上说这些命令并不能直观的来感受,那么我们就通过一个实验演示来说明:

实验条件:

两台PC,A和B;三台路由R1 R2 R3
拓扑图为:

这里写图片描述

接下来进行路由和网络的设置
首先来手动修改五台机器的IP地址,写入文件最好,因为会重启网络服务让其生效,如果命令设置重启网络以后会失效:
A:  IADDR=192.168.1.100/16
B:   IADDR=192.168.4.100/16

R1R2R3有两个网卡,因此不要忘记设置两个网卡的IP地址呦~~
R1: IADDR=192.168.1.200/16
     IADDR=192.168.2.200/16
R2:  IADDR=192.168.2.201/16
     IADDR=192.168.3.200/16
R3:  IADDR=192.168.3.201/16
     IADDR=192.168.4.200/16
设置完以后,就要对每台机器设置网关地址:
因为AB两台机器网关的端口是一样的,所以这里可以使用默认官网来设置:
A: route add -net default gw 192.168.1.200
B:ip route add default via  192.168.4.200

设置三台路由器的网关地址:
R1: route add -net 192.168.3.0 gw 192.168.2.201 
     route add -net 192.168.4.0 gw 192.168.2.201 
R2:  route add -net 192.168.1.0 gw 192.168.2.200 dev eth0
     route add -net 192.168.4.0 gw 192.168.3.201 dev eth1
R3:  route add -net 192.168.1.0 gw 192.168.3.200
     route add -net 192.168.2.0 gw 192.168.3.200 
 设置完成以后,如果ping命令相互之间不同的话,就需要开启路由转发的功能。
  那么什么是路由转发功能呢?路由器的默认功能在接收到一个包以后,如果有自己的地址则会转发,没有对应自己的地址则会丢弃不会转发,这里我们就要把它的这个功能打开,使他能够对其他地址实现转发功能,实现方法:

echo 1 > /proc/sys/net/ipv4/ip_forward

 关闭防火墙以后就可以测试两台主机之间是否可以相互连接了。
  关于路由的一些设置就先说这么多,接下来介绍一个Centos7上的强大的网络配置工具nmcli,在Centos6上也可以使用,但是功能就相对的少了许多。

【nmcli】

  nmcli 命令强大之处在于可以使用这一条命令实现ifconfig、route、ip 等其他的功能,而且nmcli命令做出的修改时可以同步到文件之中的,这样就不同于我们之前的命令都是临时生效的,如果想长期的设置还需要手动修改文件。那接下来就来详细看一下nmcli的用法:
nmcli 也是作用于对象,我们可以查看一下:

这里写图片描述

nmcli 命令总共作用于以上这8个对象,那本篇博里就只研究device和connection这两个对象。
首先我们需要简单区分一下device和connection的区别
  1. device叫网络接口,是物理设备
  2. connection是连接,偏重于逻辑设置
  3. 多个connection可以应用到同一个device,但同一时间只能启用其中一个connection。这样的意义在于,我们可以设置不同的connection应用到一个device中,在device其中一个地址出现错误的时候,可以启用另一个connection。

nmcli device

    nmcli device (status)           显示设备状态
    nmcli device show               显示全部网络接口属性
    nmcli device show ens33         显示ens33网络接口属性
    nmcli device (connect)disconnect ens33  激活网卡或者停用网卡
[root@localhost ~]# nmcli device status     -------------->查看设备状态
DEVICE      TYPE      STATE      CONNECTION 
virbr0      bridge    connected  virbr0     
ens33       ethernet  connected  ens33      
ens34       ethernet  connected  ens34      
lo          loopback  unmanaged  --         
virbr0-nic  tun       unmanaged  --         
[root@localhost ~]# nmcli device            -------------->默认与上条命令显示结果相同
DEVICE      TYPE      STATE      CONNECTION 
virbr0      bridge    connected  virbr0     
ens33       ethernet  connected  ens33      
ens34       ethernet  connected  ens34      
lo          loopback  unmanaged  --         
virbr0-nic  tun       unmanaged  --       

这里写图片描述

nmcli connection

nmcli connection add          增加连接
nmcli connection delete       删除连接
nmcli connection down ens33   down掉ens33设备
nmcli connection up ens33     启用ens33设备
nmcli con reload              重新加载网卡
nmcli con add help            可以查看帮助
nmcli connection modify static ipv4.gateway xxx.xxx.xxx.xxx  修改网关地址
nmcli connection modify static ipv4.dns 8.8.8.8   修改DNS (修改其他同下)
nmcli connection modify static +ipv4.dns 8.8.8.8  添加dns
nmcli connection modify static -ipv4.dns 8.8.8.8  删除dns

实验:

这里写图片描述
这里写图片描述

  对以上命令进行解析:add 上面有说到,指增加一个新的连接;type 是指指定增加连接的类型,如果不确定要写什么,可以按两下TAB键查看一下都支持什么选项,这事nmcli比较强大的一点; ifname 要指定设备名,即要给哪一个设备的连接;con-name 连接名,可以随意设置;ipv4.method manual 这一参数是指我们要手工指定静态IP,不使用动态IP,想当于配置文件的BOOTPROTO=none;ipv4.address 后面加上想要设置的IP 地址、设置完成以后,我们查看一下发现这个连接是没有启用的,这个就是因为我们前面所说的,同一时间只能启用一个device;同时我们查看/etc/sysconfig/nework-scripts 下,有一个ifcfg-my-ens33 是自动生成的,我们查看一下这个文件,发现被红框标注的地方正是刚刚我们使用命令设置的,这正表明这个文件是nmcli自动生成的吧~~
那么如果我们想要让新增加的连接启动呢?

这里写图片描述

前面我们说了,同一时间只能启用一个device,那么使用up命令启用我们新设置的连接,那么另一个连接则会自动失效。

这里写图片描述

  我们发现之前设置的文件没有设置网关地址,那么如果给已存在的连接添加或者修改网关地址呢?那就要使用modify 选项,如上图所示,我们发现这个也是直接修改了文件,证明修改成功,同理,添加DNS地址也是一样的:

这里写图片描述

想要删除一个连接,可以down掉这个连接,然后删除文件;或者是直接删除文件,重新加载网卡,这两种方法都可以实现。我们来实验后一种:

这里写图片描述

【实验:多种方法实现多网卡绑定】

  所谓多网卡绑定,就是将两个以上的网卡绑定在一个IP地址上进行使用,在原理上我们是实现的是网卡的均衡负载,避免一个网卡负载过重的情况。那么在使用nmcli进行实验之前,我们先来使用一个最原始的方法来实现多网卡绑定。什么方法?写文件喽。
多网卡绑定有一个名词称为bond,bond有多种模式,这里简单介绍几个:
1、mode0 轮转,轮流接收,提供负载平衡和容错的能力。
2、mode1 (active-backup) 备份网卡,备份网卡随时监控主网卡。
3、mode3 (dup!表示)广播策略,发送一个包回复两个包,提供容错能力。
我们实验来设置一个mode1模式:
首先手动创建一个在/etc/sysconfig/network-scripts/下的文件ifcfg-bond0文件:

这里写图片描述

设置完以后,要在原两个网卡文件里写入以下标注的两行:

这里写图片描述

重启网络服务以后ifconfig查看就为以下页面:

这里写图片描述

如想要查看bond0的运行状态,可以cat /proc/net/bonding/bond0 这个文件。
取消bond卸载网卡,删除文件,卸载这个驱动模块就可以恢复到原来状态了~~~
记得要把原网卡配置文件中表明奴隶的两行也要删掉哈~~

【nmcli实现】

以上我们使用的是最古老的方法来实现多网卡绑定,那么既然上面介绍了nmcli是一项强大的工具,接下来就使用nmcli命令来实现多网卡绑定:

【bond】

这里写图片描述
这里写图片描述
这里写图片描述

这样就表明已经实现了多网卡绑定,取消的方式也与上面提到的相同,这里就不再演示了哈~~
在nmcli中实现多网卡绑定还可以使用网络组team来进行实现,它的原理与bond相似,
下面就简单进行演示一下:

【team】

[root@localhost ~]# nmcli connection add type team con-name myteam0 ifname team0 ipv4.method manual ipv4.addresses 172.16.0.66/16 config '{"runner":{"name":"roundrobin"}}'  -----------------> 最后这个参数是team的固定格式,runner和name是固定的,最后一个写入你所选择的模式


[root@localhost ~]# nmcli connection add type team-slave ifname ens34 master bond0     ----------------->将两个网卡设置为team组的奴隶

[root@localhost ~]# nmcli connection add type team-slave ifname ens33 master bond0 

[root@localhost ~]# nmcli connection 
NAME              UUID                                  TYPE            DEVICE 
ens33             e307bd78-116a-498a-af89-d99f699169a4  802-3-ethernet  ens33  
ens34             cfb6ae93-a266-4a4c-92a4-735452b5588f  802-3-ethernet  ens34  
myteam0           32d8a6d2-0e4c-4d6b-b78d-85b6a2484b5c  team            team0  
virbr0            ebd9e583-08c5-4958-8bff-00b445d9f775  bridge          virbr0 
team-slave-ens33  92160562-eab7-4777-9a00-73c4ca4619b3  802-3-ethernet  --     
team-slave-ens34  6a92fa1a-9a24-47ce-a00f-fcec395315c2  802-3-ethernet  --      --    
[root@localhost ~]# nmcli connection up team-slave-ens33  ----------------->启动两个连接
[root@localhost ~]# nmcli connection up team-slave-ens34 
team与bond在实现方法上一样的,不同的地方只是在一些参数上有所不同罢了。
  nmcli命令是一个强大的工具,可以一键命令式的同时实现很多功能,当然还有许多功能有待我去发现。以上就是关于网络设置的一些命令语法,如有错误,希望各位不吝指教,谢谢~~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值