Linux网络虚拟化

  • Linux下的网络通信模型

2020121141251

干预网络通信

从Linux Kernel 2.4版开始,内核开放了一套通用的、可供代码干预数据在协议栈中流转的过滤器框架。它围绕网络层(IP协议)的周围,埋下了五个钩子:

  • PREROUTING:来自设备的数据包进入协议栈后立即触发此钩子。PREROUTING钩子在进入IP路由之前触发,这意味着只要接收到的数据包,无论是否真的发往本机,都会触发此钩子。一般用于目标网络地址转换(Destination NAT,DNAT)。
  • INPUT:报文经过IP路由后,如果确定是发往本机的,将会触发此钩子,一般用于加工发往本地进程的数据包。
  • FORWARD:报文经过IP路由后,如果确定不是发往本机的,将会触发此钩子,一般用于处理转发到其他机器的数据包。
  • OUTPUT:从本机程序发出的数据包,在经过IP路由前,将会触发此钩子,一般用于加工本地进程的输出数据包。
  • POSTROUTING:从本机网卡出去的数据包,无论是本机的程序所发出的,还是由本机转发给其他机器的,都会触发此钩子,一般用于源网络地址转换(Source NAT,SNAT)

2020121142155

虚拟化网络设备

虚拟网卡:tnu/tap

tap模拟了以太网设备,操作二层数据包(以太帧),tun则模拟了网络层设备,操作三层数据包(IP报文)

2020121142815

虚拟网卡:veth

veth是一对设备,因而也常被称作veth pair,在veth设备的其中一端输入数据,这些数据就会从设备的另外一端原样不变地流出

2020121143015

虚拟交换机:Linux Bridge

Linux Bridge创建以后,便能够接入任何位于二层的网络设备

虚拟网络:VXLAN

  • VLAN的不足

副本网卡:MACVLAN

MACVLAN借用了VLAN子接口的思路,并且在这个基础上更进一步,不仅允许对同一个网卡设置多个IP地址,还允许对同一张网卡上设置多个MAC地址

results matching " "

No results matching " "

results matching " "

No results matching " "