专业的编程技术博客社区

网站首页 > 博客文章 正文

虚拟化网络- Bridge+Vxlan实验(vxlan是虚拟化技术吗)

baijin 2024-09-05 11:27:20 博客文章 4 ℃ 0 评论

目的

通过 Bridge和 Vxlan 技术,使虚拟机在不同的服务器上互相通信。

环境信息

需要两台主机,这里不关心host的IP地址,只要虚拟机地址不和主机地址重复即可。

## 查看系统版本和内核版本
lsb_release -a
uname -r

| 尽量使用比较新版本的 kernel,以免出现因为内核版本太低导致功能或者性能上的问题。

01 虚拟化环境准备

安装KVM

## ubuntu 安装 kvm环境
apt update
apt install -y qemu qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst  cpu-checker  libguestfs-tools 

下载测试镜像

cd /var/lib/libvirt/images/
wget http://download.cirros-cloud.net/0.5.2/cirros-0.5.2-x86_64-disk.img

02 实验操作

网络架构图

02-1 主机1

创建网桥

##创建虚机的bridge网络资源,并绑定到bridge网桥上 
cat >bridge1.xml <<EOF
<network>
  <name>bridge1</name>
  <forward mode="bridge"/>
  <bridge name="bridge1"/>
</network>
EOF
virsh net-define bridge1.xml
virsh net-start bridge1
virsh net-autostart bridge1

创建 vxlan 和 bridge 设备

## 设置变量
vxlan_id="100"
dstport="4789"
group_ip="239.0.0.1"
host1_vxlan1_ip="192.168.1.11"
## 在主机1上创建vtep设备vxlan1与主机2 vtep接口建立隧道,将vxlan1自身的IP地址设为host1_vxlan1_ip,使用的vxlan目标端口为 4789(IANA标准)
ip link add vxlan1 type vxlan \
    id "$vxlan_id" \
    dstport "$dstport" \
    group "$group_ip" \
    dev eth0
## 为vxlan网络设置虚拟网段
ip addr add "$host1_vxlan1_ip"/24 dev vxlan1
# 创建bridge并将vxlan1绑定上去
ip link add bridge1 type bridge
ip link set vxlan1 master bridge1
## 激活网络设备
ip link set vxlan1 up
ip link set bridge1 up

| 本地管理组播地址:239.0.0.0~239.255.255.255,仅在特定的本地范围内有效。指定 VNI 的值,这个值可以在 1 到 2^24 之间

创建虚机

virt-install --name vm1 \
--memory 512 \
--disk /var/lib/libvirt/images/cirros-0.5.2-x86_64-disk.img,device=disk,bus=virtio,format=qcow2 \
--network network=bridge1,model=virtio \
--graphics vnc,listen=0.0.0.0,port=5900  --noautoconsole \
--import

虚机配置ip地址

| 虚机默认账号cirros密码gocubsgo

## 通过console管理虚机
virsh console vm1
## 进入虚机后,配置ip地址
sudo su -
ip addr add 192.168.1.11/24 dev eth0

| 如果需要端口互连需要注意mtu要设置成1400或者1450,本实验仅ping测通连接性,没有修改mtu值。

02-2 主机2

创建网桥

##创建虚机的bridge网络资源,并绑定到bridge网桥上 
cat >bridge2.xml <<EOF
<network>
  <name>bridge2</name>
  <forward mode="bridge"/>
  <bridge name="bridge2"/>
</network>
EOF
virsh net-define bridge2.xml
virsh net-start bridge2
virsh net-autostart bridge2

创建vxlan和bridge设备

## 设置变量
vxlan_id="100"
dstport="4789"
group_ip="239.0.0.1"
host2_vxlan2_ip="192.168.1.12"
## 在主机1上创建vtep设备vxlan1与主机2 vtep接口建立隧道,将vxlan1自身的IP地址设为host1_vxlan2_ip,使用的vxlan目标端口为 4789(IANA标准)
ip link add vxlan2 type vxlan \
    id "$vxlan_id" \
    dstport "$dstport" \
    group "$group_ip" \
    dev eth0
## 为vxlan网络设置虚拟网段
ip addr add "$host1_vxlan1_ip"/24 dev vxlan2
# 创建bridge并将vxlan1绑定上去
ip link add bridge2 type bridge
ip link set vxlan2 master bridge2
## 激活网络设备
ip link set vxlan2 up
ip link set bridge2 up

| 本地管理组播地址:239.0.0.0~239.255.255.255,仅在特定的本地范围内有效。指定 VNI 的值,这个值可以在 1 到 2^24 之间

创建虚机

virt-install --name vm2 \
--memory 512 \
--disk /var/lib/libvirt/images/cirros-0.5.2-x86_64-disk.img,device=disk,bus=virtio,format=qcow2 \
--network network=bridge2,model=virtio \
--graphics vnc,listen=0.0.0.0,port=5900  --noautoconsole \
--import

虚机配置ip地址

| 虚机默认账号cirros密码gocubsgo

## 通过console管理虚机
virsh console vm2
## 进入虚机后,配置ip地址
sudo su -
ip addr add 192.168.1.12/24 dev eth0

| 如果需要端口互连需要注意mtu要设置成1400或者1450,本实验仅ping测通连接性,没有修改mtu值。

02-3 验证

## 在主机1 ping 主机2 地址
ping -c1 -W1 192.168.1.12
## 在主机2 ping 主机1 地址
ping -c1 -W1 192.168.1.11
## mtu 设置,如果有端口访问需要设置mtu,宿主机一般默认mtu值为1500。
ip link set eth0 mtu 1400

| 如果需要端口互连需要注意mtu要设置成1400或者1450,本实验仅ping测通连接性,没有修改mtu值。

| 网络连接的最大传输单位 (MTU) 是能够通过该连接传递的最大可允许数据包的大小 (以字节为单位)。连接的 MTU 越大,可在单个数据包中传递的数据越多。以太网帧由数据包(即您发送的实际数据)以及相关网络开销信息组成。

02-4 清理环境

## 删除虚机
virsh destroy vm1 && virsh undefine vm1
virsh destroy vm2 && virsh undefine vm2
## 删除网桥
virsh net-destroy bridge1  &&  virsh net-undefine bridge1
virsh net-destroy bridge2  &&  virsh net-undefine bridge2
## 删除网桥
ip link delete bridge1 || ip link delete bridge2
## 删除vxlan
ip link delete vxlan1 || ip link delete vxlan2

| 主机1 和 主机2 都可以这样清理环境



Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表