Linux 的虚拟网卡

理解IP路由

ip 地址可以理解为网络环境中的门牌号,你可以使用 ip 地址ping通 远在天边的网站,数据是如何到达的呢?靠的就是网络路径上每个节点的路由。路由,简单的说就是指导IP报文该去哪的指示牌。

当然,以上主要是理解 路由器中的路由,就是将已收到的数据包,如何正确的转出去(forward),其实电脑主机上的路由和路由器的路由,功能大致相当,主要区别在于:

  • 路由器上的 forward功能,会根据数据包中 dst_ip和路由表的信息,确定了最佳路线后,将数据包从一个接口转发到另一个接口。而电脑上的forward功能,只是简单的将数据包转发到另一个设备,并不会根据网络拓扑和路由表来确定数据包的最佳路径。

  • 路由器的 forward 功能通常是硬件级别的,可以处理大量的并发数据包,而电脑网卡的forward功能则是软件级别的,处理速度相对较慢。

本文主要讲解 电脑的路由

主机会在两个时候用到本机的路由表

  • 发送报文:决定从哪个网卡发出?
  • 接受报文:查询路由决定是上送本机(local in),还是从哪个接口转发出去(forward)?

本机路由表

输入 ip rourte 命令,查看本机路由表

default via 192.168.220.2 dev ens33 proto dhcp src 192.168.220.151 metric 100
172.17.0.0/16     dev docker0  proto kernel scope   link src 172.17.0.1
192.168.220.0/24  dev ens33    proto kernel scope   link src 192.168.220.151  metric 100
192.168.220.2     dev ens33    proto dhcp   scope   link src 192.168.220.151  metric 100

以上信息中包含的含义为:

  1. 第一行,表示本机的 默认网卡为 ens33,即当所有的网卡匹配规则都失败的时候,会走 ens33 网卡

  2. 第2、3、4中,

    • 192.168.220.0/24 表示网段,能匹配到这个网段的,走这条规则。
    • dev ens33表示网卡名称
    • proto kernel表示路由是由什么创建的
    • src表示该路由发送的的 src ip 是多少 `
    • metric 100表示的是优先级,数值越小,优先级越高,当多条路由均能匹配该规则时,优先使用优先级别最高的。

网卡信息

输入命令 ip addr 可查看所有的网卡(物理网卡和虚拟网卡)

该功能类似于已弃用的 ifconfig 命令,较明显的不同点在于,ip addr 可以查看所有网卡信息,包括处于 down状态的网卡。

ip addr命令查询到的如下接口名称,一般情况下,物理网卡通常使用 ethXetnX的格式来命名,而vethtapbridge等则表示 虚拟以太网接口虚拟隧道接口虚拟网桥接口

虚拟网卡配置

1. 创建虚拟网卡

ifconfig ens33:0 172.16.4.51 netmask 255.255.255.0 up

如上是基于网卡 ens33 创建的虚拟ip;注意如上网卡的命名并不是随机的,而是使用 原有网卡:序列号的规范命名的。
使用 ifconfig 命令创建的虚拟网卡,并不能做到持久化,重启网卡后虚拟ip会丢失

在centos系统中如何持久化虚拟ip

sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33:0

配置文件如下

DEVICE=ens33:0
TYPE=Ethernet
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0

激活和关闭网卡

ifup   eth33   # 激活网卡
ifdonw eth33   # 关闭网卡

参考文献

https://segmentfault.com/a/1190000019363010
https://segmentfault.com/a/1190000022752866

posted @ 2023-07-16 21:58  沧海一声笑rush  阅读(1431)  评论(0编辑  收藏  举报