喵♂呜 的博客

一个刚毕业就当爹的程序猿 正在迷雾中寻找道路...

ESXI 通过 Zerotier 连接到 vCenter

最近老家机房加了一台服务器
想和公司的 ESXI 集群一起通过 vCenter 管理
但是没有 公网IP 所以研究了一下
如何通过 Zerotier 搭建虚拟局域网进行管理

初始网络状态

  • 公司集群
    • vCenter
      • 主网卡: 192.168.2.15/22
    • ESXI
      • vmk0: 192.168.2.6/22
    • ESXI3
      • vmk0: 192.168.2.3/22
  • 老家集群
    • ESXI4
      • vmk0: 192.168.1.4/24

安装代理虚拟机

但是老家的 ESXI 没办法安装 Zerotier 所以需要在 ESXI 上加一台虚拟机 用于转发

  • 公司集群
    • vCenter
      • 主网卡: 192.168.2.15/22
    • ESXI
      • vmk0: 192.168.2.6/22
    • ESXI3
      • vmk0: 192.168.2.3/22
  • 老家集群
    • ESXI4
      • vmk0: 192.168.1.4/24
      • 代理节点
        • ens192: 192.168.1.2/24

配置 Zerotier

Zerotier 具体如何配置 请自行百度

我们的 vCenter 安装在 Windows 上 所以可以直接安装 Zerotier
代理虚拟机 安装好之后配置一个 ESXI4 同网段的 IP 然后安装 Zerotier
然后配置一个和两边没冲突的子网 我选择了 172.25.0.0/16
安装好之后的网络配置

  • 公司集群
    • vCenter
      • 主网卡: 192.168.2.15
      • Zerotier: 172.25.2.15
    • ESXI
      • vmk0: 192.168.2.6
    • ESXI3
      • vmk0: 192.168.2.3
  • 老家集群
    • ESXI4
      • vmk0: 192.168.1.4
      • 代理节点
        • ens192: 192.168.1.2/24
        • Zerotier: 172.25.1.2

开启代理节点转发

  • 先看一下代理机的网卡信息
  • 执行 ip a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:f4:96:fe brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global noprefixroute ens192
valid_lft forever preferred_lft forever
inet6 fe80::f7c3:beae:976d:6294/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ztqu3fun4g: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2800 qdisc pfifo_fast state UNKNOWN group default qlen 1000
link/ether b6:0d:40:6f:17:a3 brd ff:ff:ff:ff:ff:ff
inet 172.25.1.2/16 brd 172.25.255.255 scope global ztqu3fun4g
valid_lft forever preferred_lft forever
  • 物理网卡是 ens192 Zerotier网卡是 ztqu3fun4g
  • 在 代理节点(192.168.1.2) 执行下列命令 开启转发
1
2
3
4
5
6
7
8
sysctl -w net.ipv4.ip_forward=1
# 第一个参数是物理网卡 第二个参数是 Zerotier 的网卡
PHY_IFACE=ens192; ZT_IFACE=ztqu3fun4g;
iptables -I FORWARD -i $ZT_IFACE -j ACCEPT
iptables -I FORWARD -o $ZT_IFACE -j ACCEPT
iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADE
iptables -A FORWARD -i $PHY_IFACE -o $ZT_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $ZT_IFACE -o $PHY_IFACE -j ACCEPT
  • 注意: 此处命令是临时的 重启后会消失 需要持久化配置 请自行百度

配置路由参数

配置 vCenter 路由(Zerotier)

通过 Zerotier Web 控制台配置
  • 先在 Zerotier 的控制台 添加一条路由配置
  • 打开控制台 https://my.zerotier.com/network/{你的网络ID}
  • 依次找到 Settings => Advanced => Managed Routes
  • 在下面的 Add Routes
    • Destination 填上 192.168.0.0/23
    • 注意: 防止影响 需要比老家网络段大一个子网 老家的是 24 这里要写 23 否则会导致无连通
    • (via) 填上 172.25.1.2
    • 点击 Submit 提交
  • 等待添加完成 此时去 vCenter 打开 CMD 执行 route print 命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
C:\Users\Administrator\Desktop>route print
===========================================================================
接口列表
15...b6 c3 24 a3 0d 13 ......ZeroTier One Virtual Port
12...08 00 27 ff 94 3e ......Intel(R) PRO/1000 MT Desktop Adapter
1...........................Software Loopback Interface 1
===========================================================================

IPv4 路由表
===========================================================================
活动路由:
网络目标 网络掩码 网关 接口 跃点数
... 省略其他信息
192.168.0.0 255.255.254.0 172.25.1.2 172.25.2.15 276
... 省略其他信息
===========================================================================
永久路由:
网络地址 网络掩码 网关地址 跃点数
0.0.0.0 0.0.0.0 192.168.3.1 默认
===========================================================================
  • 关键的一条 就是 可以看到 目标网络 192.168.0.0/23 网关 172.25.1.2
  • 如果失败了 请根据下面的方式 手动添加
通过手动添加路由条目(Windows 版本)
  • 如你的 Zerotier 网络中 存在与 ESXI4 的网段 存在冲突 或者 通过 Web 添加失败
  • 可以手动添加路由条目
    • 执行 route -p add 192.168.0.0 MASK 255.255.254.0 172.25.1.2 IF 15
    • 目标网络 192.168.0.0 掩码 255.255.254.0 也就是 23
    • 网关 就是代理节点的 Zerotier 接口的 IP 地址
    • 最后一个参数是 vCenter 的 Zerotier网卡接口 15 是通过接口列表查询到的
    • 执行 route print | findstr Zero 可以查询到 最前面的数字就是接口ID
      1
      2
      C:\Users\Administrator\Desktop>route print | findstr Zero
      15...b6 c3 24 a3 0d 13 ......ZeroTier One Virtual Port
  • 添加完成后的结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
C:\Users\Administrator\Desktop>route print
===========================================================================
接口列表
15...b6 c3 24 a3 0d 13 ......ZeroTier One Virtual Port
12...08 00 27 ff 94 3e ......Intel(R) PRO/1000 MT Desktop Adapter
1...........................Software Loopback Interface 1
===========================================================================

IPv4 路由表
===========================================================================
活动路由:
网络目标 网络掩码 网关 接口 跃点数
0.0.0.0 0.0.0.0 192.168.3.1 192.168.2.15 266
0.0.0.0 0.0.0.0 25.255.255.254 172.25.2.15 10019
127.0.0.0 255.0.0.0 在链路上 127.0.0.1 306
127.0.0.1 255.255.255.255 在链路上 127.0.0.1 306
127.255.255.255 255.255.255.255 在链路上 127.0.0.1 306
172.25.0.0 255.255.0.0 在链路上 172.25.2.15 276
172.25.2.15 255.255.255.255 在链路上 172.25.2.15 276
172.25.255.255 255.255.255.255 在链路上 172.25.2.15 276
192.168.0.0 255.255.252.0 在链路上 192.168.2.15 266
192.168.0.0 255.255.254.0 172.25.1.2 172.25.2.15 21
192.168.2.15 255.255.255.255 在链路上 192.168.2.15 266
192.168.3.255 255.255.255.255 在链路上 192.168.2.15 266
224.0.0.0 240.0.0.0 在链路上 127.0.0.1 306
224.0.0.0 240.0.0.0 在链路上 192.168.2.15 266
224.0.0.0 240.0.0.0 在链路上 172.25.2.15 276
255.255.255.255 255.255.255.255 在链路上 127.0.0.1 306
255.255.255.255 255.255.255.255 在链路上 192.168.2.15 266
255.255.255.255 255.255.255.255 在链路上 172.25.2.15 276
===========================================================================
永久路由:
网络地址 网络掩码 网关地址 跃点数
0.0.0.0 0.0.0.0 192.168.3.1 默认
192.168.0.0 255.255.254.0 172.25.1.2 1
===========================================================================
通过手动添加路由条目(Linux 版本)
  • 如你的 Zerotier 网络中 存在与 ESXI4 的网段 存在冲突 或者 通过 Web 添加失败

  • 可以手动添加路由条目

    • 执行 route add -net 192.168.0.0 netmask 255.255.254.0 gw 172.25.1.2 ztqu3fun4g
    • 目标网络 192.168.0.0 掩码 255.255.254.0 也就是 23
    • 网关 就是代理节点的 Zerotier 接口的 IP 地址
    • Zerotier 的网卡 ztqu3fun4g(此参数可以不填)
  • 添加完成后的结果

1
2
3
4
5
6
7
8
9
[root@2-5 iso]$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.3.1 0.0.0.0 UG 10 0 0 enp1s0f1
default 192.168.3.1 0.0.0.0 UG 102 0 0 enp1s0f0
172.25.0.0 0.0.0.0 255.255.0.0 U 0 0 0 ztqu3fun4g
192.168.0.0 172.25.1.2 255.255.254.0 UG 0 0 0 ztqu3fun4g
192.168.0.0 0.0.0.0 255.255.252.0 U 101 0 0 enp1s0f1
192.168.0.0 0.0.0.0 255.255.252.0 U 102 0 0 enp1s0f0

配置 ESXI4 路由

  • 先打开 ESXI 的 Web 管理页面
  • 在主机页面 操作 => 服务 => 启用安全 Shell(SSH) 开打 SSH
  • 通过代理节点 链接到 ESXI 的 SSH
  • 执行命令 esxcfg-route -a 172.25.0.0/16 192.168.1.2 添加路由条目
    • 172.25.0.0/16 是 Zerotier 的目标网段
    • 192.168.1.2 是代理节点的 局域网IP地址
  • 执行 esxcf-route -n 查看路由表
1
2
3
4
[root@localhost:~] esxcfg-route -n
Neighbor MAC Address Interface Expiry Type
192.168.1.1 3c:06:a7:9b:53:49 vmk0 19m57s Unknown
192.168.1.2 00:0c:29:f4:96:fe vmk0 19m52s Unknown

测试网络连通性

  • 先在 ESXI4 上面 执行 ping 172.25.2.15
    • 注意: 必须是 vCenter 的 Zerotier 地址
    • 因为路由条目只加了 172.25.0.0/16 的路由
    • 当然你也可以加 192.168.0.0/22 的路由 这样就可以用 192.168.2.15 的地址了
1
2
3
4
5
6
7
8
9
[root@localhost:~] ping 172.25.2.15
PING 172.25.2.15 (172.25.2.15): 56 data bytes
64 bytes from 172.25.2.15: icmp_seq=0 ttl=127 time=14.618 ms
64 bytes from 172.25.2.15: icmp_seq=1 ttl=127 time=14.861 ms
64 bytes from 172.25.2.15: icmp_seq=2 ttl=127 time=16.157 ms

--- 172.25.2.15 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 14.618/15.212/16.157 ms
  • 打开 Windows2012 的防火墙 允许 PING (一开始我就是忘了这一步 一直以为不通)
    • 服务器管理器 => 工具 => 高级安全 Windows 防火墙
    • 入站规则 下面 找到 文件和打印机共享(回显请求 - ICMPv4-In) 右键 启用规则
  • 打开 CMD 执行 ping 192.168.1.4
1
2
3
4
5
6
7
8
9
10
11
12
C:\Users\Administrator\Desktop>ping 192.168.1.4

正在 Ping 192.168.1.4 具有 32 字节的数据:
来自 192.168.1.4 的回复: 字节=32 时间=15ms TTL=63
来自 192.168.1.4 的回复: 字节=32 时间=13ms TTL=63
来自 192.168.1.4 的回复: 字节=32 时间=16ms TTL=63
来自 192.168.1.4 的回复: 字节=32 时间=14ms TTL=63

192.168.1.4 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 13ms,最长 = 16ms,平均 = 14ms

在 vCenter 上 添加主机

  • 登录 vSphere Web Client
  • 进入 主机和集群 => 右键集群 => 添加主机
  • 在主机名或IP地址里 输入 192.168.1.4
  • 后面就按照正常的添加 ESXI 到 vCenter 集群即可
  • 结束后 在 ESXI4 的 Web管理页面 可以看到 正常 (已连接到 vCenter Server,位于 172.25.2.15)
    • 此主机由 vCenter Server 管理。 vCenter Server 可以自动执行这些操作,无需干预。 操作
  • 最后 记得关掉 ESXI4 的 SSH 哦

参考文档和链接

欢迎关注我的其它发布渠道