最近老家机房加了一台服务器 想和公司的 ESXI 集群一起通过 vCenter 管理 但是没有 公网IP 所以研究了一下 如何通过 Zerotier 搭建虚拟局域网进行管理
初始网络状态 安装代理虚拟机 但是老家的 ESXI 没办法安装 Zerotier 所以需要在 ESXI 上加一台虚拟机 用于转发
配置 Zerotier Zerotier 具体如何配置 请自行百度
我们的 vCenter 安装在 Windows 上 所以可以直接安装 Zerotier 代理虚拟机 安装好之后配置一个 ESXI4 同网段的 IP 然后安装 Zerotier 然后配置一个和两边没冲突的子网 我选择了 172.25.0.0/16 安装好之后的网络配置
公司集群vCenter主网卡: 192.168.2.15 Zerotier: 172.25.2.15 ESXI ESXI3 老家集群ESXI4vmk0: 192.168.1.4 代理节点ens192: 192.168.1.2/24 Zerotier: 172.25.1.2 开启代理节点转发 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 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
可以查询到 最前面的数字就是接口ID1 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 版本) 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 哦 参考文档和链接