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
以上信息中包含的含义为:
-
第一行,表示本机的 默认网卡为
ens33
,即当所有的网卡匹配规则都失败的时候,会走ens33
网卡 -
第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
命令查询到的如下接口名称,一般情况下,物理网卡通常使用 ethX
或 etnX
的格式来命名,而veth
、tap
、bridge
等则表示 虚拟以太网接口
、虚拟隧道接口
、虚拟网桥接口
。
虚拟网卡配置
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