跳到主要内容

第四章:虚拟网络实操

本章将通过一系列实践操作,加深对虚拟网络技术的理解。从基础的 Linux 网络命令,到 Open vSwitch (OVS) 的配置,再到 VPN 和 VXLAN 隧道的部署,旨在将理论知识转化为实践能力。


第1节:虚拟网络基础原理

在进行实操前,必须牢固掌握以下基础原理。

  • Linux 基础: 熟练使用 Linux 命令行是进行一切网络操作的前提。需要掌握:

    • 文件系统导航 (cd, ls, pwd)
    • 文本编辑 (vim, nano)
    • 权限管理 (chmod, chown)
    • 进程查看 (ps, top)
    • 网络配置命令,特别是 ip 命令族(如 ip addr, ip link, ip route)和传统的 ifconfig
  • OVS 原理: Open vSwitch (OVS) 是一个功能强大的虚拟交换机。其工作核心是流表 (Flow Table)。当一个数据包进入 OVS 时,OVS 会查询流表。如果找到匹配的流表项 (Flow Entry),则按照该表项定义的动作 (Action)(如转发到特定端口、修改报文、丢弃等)进行处理。如果未找到匹配项,OVS 可以将数据包发送到控制器(Controller)或执行默认的 Normal 动作(像普通二层交换机一样转发)。

  • VPN 原理: 虚拟专用网 (VPN) 的核心是隧道技术 (Tunneling)。它将原始的、私有的数据包(如内网IP报文)进行封装,添加一个新的、公网可路由的包头,然后通过公共网络(如互联网)发送。在隧道的另一端,接收方对数据包进行解封装,还原出原始数据包。为了保证安全,隧道中的数据通常会进行加密。PPTP (Point-to-Point Tunneling Protocol) 是一种较早的VPN协议,它使用 GRE (Generic Routing Encapsulation) 协议来封装数据。

  • 抓包分析: 网络抓包是诊断网络问题的“X光机”。通过抓包工具(如 tcpdump 或图形化的 Wireshark),可以捕获网络接口上的所有数据包,并详细分析其协议、头部、载荷等信息。这对于理解VPN、VXLAN等技术的封装过程至关重要。

  • VXLAN 原理: VXLAN (Virtual eXtensible LAN) 是一种 Overlay 隧道技术。它将完整的二层以太网帧(L2 Frame)封装在一个 UDP 包中,再套上外部的 IP 头和以太网头,然后在三层网络(Underlay)上传输。其关键组件是 VTEP (VXLAN Tunnel End Point),它负责VXLAN报文的封装和解封装。每个VXLAN网络由一个唯一的 VNI (VXLAN Network Identifier) 来标识。


第2节:虚拟网络基础配置

  • Linux 网络操作: 能够使用 ip 命令完成以下操作:

    • 查看IP地址: ip addr show
    • 配置IP地址: ip addr add 192.168.1.10/24 dev eth0
    • 启用/禁用网卡: ip link set eth0 up/down
    • 查看路由表: ip route show
    • 添加静态路由: ip route add 10.0.0.0/8 via 192.168.1.1
  • OVS 配置: 能够使用 ovs-vsctl 命令完成 OVS 的基本配置:

    • 创建网桥: ovs-vsctl add-br br0
    • 将物理或虚拟网卡添加到网桥: ovs-vsctl add-port br0 eth0
    • 查看网桥和端口状态: ovs-vsctl show
    • 查看流表: ovs-ofctl dump-flows br0
  • VPN 部署: 能够在一台 Linux 服务器上部署 PPTP VPN 服务端,并在另一台客户端(Linux 或 Windows)上配置连接,最终实现客户端通过 VPN 访问服务端所在内网的资源。

  • 抓包分析: 能够使用 Wireshark 或 tcpdump 捕获 PPTP VPN 的通信数据包,并能从捕获的数据中识别出 GRE 封装和被封装的内部 IP 报文。


第3节:VXLAN 隧道部署实践

  • OVS 进阶: 能够在一台宿主机上创建多个 OVS 网桥,并将它们与不同的网络命名空间 (Namespace) 或虚拟机连接,模拟出隔离的控制平面和数据平面。

  • VXLAN 配置: 能够在两台或多台宿主机上,使用 OVS 命令创建 VXLAN 类型的端口,并配置相同的 VNI 和正确的对端 VTEP IP 地址。

    示例命令:

    # 在 Host A (192.168.100.10) 上
    ovs-vsctl add-port br0 vxlan1 -- set interface vxlan1 type=vxlan options:remote_ip=192.168.100.20 options:key=100

    # 在 Host B (192.168.100.20) 上
    ovs-vsctl add-port br0 vxlan1 -- set interface vxlan1 type=vxlan options:remote_ip=192.168.100.10 options:key=100
  • 跨网段通信:

    • 相同网段通信: 部署完成后,连接在两台主机 OVS 网桥上的、属于同一VNI的虚拟机或容器应该能够像在同一个局域网中一样相互通信。
    • 不同网段通信: 实现不同 VXLAN 网络(不同VNI)之间的通信,通常需要一个三层网关。这可以通过在 Linux 主机上开启路由功能,并配置相应的路由规则来实现,或者使用更高级的 SDN 控制器来实现分布式路由。
  • 报文分析: 能够使用 tcpdump 在物理网卡上抓取 VXLAN 通信的流量,并分析其报文结构,清楚地识别出外部的以太网头、IP头、UDP头,以及内部被封装的原始以太网帧。