1、实现将虚拟机在vmware esxi主机之间跨主机迁移
2、openvpn打通不同网络进行通讯

--------------------------------------------------------------------------------------------------------------

1、实现将虚拟机在vmware esxi主机之间跨主机迁移

#起两个esxi node:
 esxi node1:10.0.0.101/24
 esxi node2:10.0.0.102/24,创建虚拟机:10.0.0.104/24

#安装windows server 2016,在其上安装vcenter server:
 windows server 201610.0.0.245/24
 vcenter server:10.0.0.248/24

#在vcenter server新建数据中心
 右击10.0.0.248->新建数据中心->Datacenter-1->完成
右击10.0.0.248->新建数据中心->Datacenter-2->完成
 
#vcenter server添加esxi node1
 右击Datacenter-1->添加主机->1.名称和位置:10.0.0.101
                           2.连接设置:用户名:root
                                     密码:xxxxxxxx
                           3.主机摘要:NEXT
                           4.分配许可证:NEXT
                           5.锁定模式:禁用,NEXT
                           6.虚拟机位置:Datacenter-1,NEXT
                           7.即将完成:FINISH
#vcenter server添加esxi node2
 右击Datacenter-2->添加主机->1.名称和位置:10.0.0.102
                           2.连接设置:用户名:root
                                     密码:xxxxxxxx
                           3.主机摘要:NEXT
                           4.分配许可证:NEXT
                           5.锁定模式:禁用,NEXT
                           6.虚拟机位置:Datacenter-2,NEXT
                           7.即将完成:FINISH
#vcenter server为esxi node1配置vmotion #单击esxi node1
->配置->网络->虚拟交换机->添加网络->1.选择连接类型:VMkernel网络适配器,NEXT 2.选择目标设备:选择现有标准交换机vSwitch0,NEXT 3.端口属性:可用服务:勾选vMotion,NEXT 4.IPv4设置:使用IPv4设置:IPv4地址:10.0.1.1 子网掩码:255.255.0.0 NEXT 5.即将完成:FINISH #vcenter server为esxi node2配置vmotion #单击esxi node2->配置->网络->虚拟交换机->添加网络->1.选择连接类型:VMkernel网络适配器,NEXT 2.选择目标设备:选择现有标准交换机vSwitch0,NEXT 3.端口属性:可用服务:勾选vMotion,NEXT 4.IPv4设置:使用IPv4设置:IPv4地址:10.0.1.2 子网掩码:255.255.0.0 NEXT 5.即将完成:FINISH #在vcenter server迁移虚拟机 #右击需要迁移的目标虚拟机10.0.0.104->迁移->1.选择迁移类型:更改计算资源和存储,NEXT       2.选择计算资源:选择数据中心Datacenter-1->选择esxi node1 10.0.0.101,NEXT       3.选择存储:选择目标存储datastore1,NEXT       4.选择网络:选择目标网络VM Network,NEXT       5.选择vMotion优先级:安排优先级高的vMotion,NEXT       6.即将完成:FINISH

2、openvpn打通不同网络进行通讯

#环境:
 OpenVPN服务端        AWS云主机公网IP:35.78.X.X        私网IP:172.31.3.208/20
 OpenVPN客户端        Windows主机

2.1 OpenVPN 服务端配置

2.1.1 yum 安装 OpenVPN

#安装软件包
# yum -y install epel-release
# yum -y install openvpn            #openvpn服务端
# yum -y install easy-rsa            #证书管理工具

2.1.2 初始化服务端 pki 环境

#拷备服务端配置文件
# cp /usr/share/doc/openvpn-2.4.12/sample/sample-config-files/server.conf /etc/openvpn/
#拷备服务端证书管理工具
# cp -r /usr/share/easy-rsa/ /etc/openvpn/easyrsa-server
#拷备变量配置文件
# cp /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openvpn/easyrsa-server/3/vars

#生成存放私钥、证书、证书请求文件的目录
# cd /etc/openvpn/easyrsa-server/3
# ./easyrsa init-pki

2.1.3 创建 CA 机构

#生成CA私钥和自签名证书
# cd /etc/openvpn/easyrsa-server/3
# echo | ./easyrsa build-ca nopass                #私钥不加密

2.1.4 创建服务端证书

#生成服务端私钥和证书请求文件
# cd /etc/openvpn/easyrsa-server/3
# echo | ./easyrsa gen-req server nopass        #私钥不加密,server为私钥和证书请求文件名称前缀

#签发服务端证书
# echo yes | ./easyrsa sign-req server server    #第1个server为签发证书类型,第2个server为证书文件名称前缀。sign-req参数(在旧版本为sign)

2.1.5 创建 Diffie-Hellman 秘钥

# cd /etc/openvpn/easyrsa-server/3
# ./easyrsa gen-dh

2.1.6 集中存放服务端证书文件

#集中存放服务端所需证书
# mkdir /etc/openvpn/certs
# cd /etc/openvpn/easyrsa-server/3/pki
# cp ca.crt dh.pem private/server.key issued/server.crt /etc/openvpn/certs
# mv /etc/openvpn/certs/dh{,2048}.pem

#配置额外安全特性,阻止DoS攻击和UDP端口泛洪。服务端和客户端使用同一私钥的备份
# openvpn --genkey --secret /etc/openvpn/certs/ta.key

# tree /etc/openvpn/certs/
/etc/openvpn/certs/
├── ca.crt
├── dh2048.pem
├── server.crt
├── server.key
└── ta.key

0 directories, 5 files

2.1.7 服务端配置文件

local 0.0.0.0    #监听所有地址

port 41194        #监听端口,默认1194

proto tcp        #协议类型,支持tcp/udp

dev    tun            #设备,支持tap(局域网)/tun(互联网)

#;dev-node MyTap        #非Windows不需要,不用配置

ca /etc/openvpn/certs/ca.crt            #证书、私钥路径
cert /etc/openvpn/certs/server.crt
key /etc/openvpn/certs/server.key
dh /etc/openvpn/certs/dh2048.pem

#;topology subnet    #通知网络拓扑,不用配置

server 10.8.0.0 255.255.0.0        #客户端连接服务端后,服务端可给其分配的IP地址池,服务端占用第1个地址

#ifconfig-pool-persist ipp.txt    #为客户端配置的静态地址,不用配置

#;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100        #配置桥接,不用配置
#;server-bridge

push "route 172.31.0.0 255.255.240.0"        #为客户端推送到达服务端的静态路由,下一跳为服务端占用的地址,可配置多个路由条目

#;client-config-dir ccd                        #为客户端添加指定路由,不用配置
#;route 192.168.40.128 255.255.255.248
#;client-config-dir ccd
#;route 10.9.0.0 255.255.255.252

#;learn-address ./script    #运行外部脚本,生成不同组的iptables规则,不用配置

#;push "redirect-gateway def1 bypass-dhcp"    #开启后,客户端所有流量都经过服务端,相当于代理,不用配置

#;push "dhcp-option DNS 208.67.222.222"        #为客户端推送DNS配置,不用配置
#;push "dhcp-option DNS 208.67.220.220"

#;client-to-client        #客户端之间通过服务端进行通信,不用配置

#;duplicate-cn            #多个用户共用一个账户,难以溯源追责,不用配置

keepalive 10 60        #服务端会话保持,检测客户端连接是否中断,默认10s ping一次,120s不通就断开连接

tls-auth /etc/openvpn/certs/ta.key 0    #配置额外安全特性,阻止DoS攻击和UDP端口泛洪,第2个参数服务端为0,客户端为1
                                        #服务端和客户端使用同一私钥的备份
                                        #创建命令:openvpn --genkey --secret ta.key

cipher AES-256-CBC        #默认加密算法

#;compress lz4-v2            #开启压缩,节约带宽,消耗性能
#;push "compress lz4-v2"    #通知客户端使用的压缩算法类型
#;comp-lzo                    #旧客户端兼容的压缩配置,需要客户端开启压缩

max-clients 4096        #最大客户端连接数

user openvpn        #启动用户和组
group openvpn

#persist-key            #注释后,重启服务时,重读key文件
#persist-tun            #注释后,重启服务时,不保持tun或tap设备up,而是先down再up

status /var/log/openvpn/openvpn-status.log        #服务状态日志路径,默认每分钟覆盖一次

#;log         openvpn.log                        #普通日志路径,启动时清空旧文件内容
log-append  /var/log/openvpn/openvpn.log        #普通日志路径,启动时追加新文件内容

verb 3        #设置日志级别

mute 20        #相同类别的日志只记录前20条

#explicit-exit-notify 1        #只适用于udp模式,通知客户端在服务端重启后可以自动重新连接。
                              #tcp模式会自动重连,tcp模式开启此选项,将导致服务无法启动。

2.1.8 启动 OpenVPN 服务

#开启ip_forward转发
# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
# sysctl -p

#添加防火墙规则
# systemctl disable --now firewalld
# yum -y install iptables-services iptables
# systemctl enable --now iptables.service
# iptables -F
# iptables -X
# iptables -Z
# iptables -t nat -F
# iptables -t nat -X
# iptables -t nat -Z
# iptables -t nat -A POSTROUTING -s 10.8.0.0/16 -j MASQUERADE 
# iptables -A INPUT -p tcp --dport 1194 -j ACCEPT
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#防火墙规则持久化
# service iptables save

#创建日志目录
# mkdir /var/log/openvpn
# chown openvpn.openvpn /var/log/openvpn

#启动服务
# systemctl enable --now openvpn@server

# ip a show dev tun0
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::fa38:a50b:7fd1:e3e0/64 scope link flags 800 
       valid_lft forever preferred_lft forever

2.2 OpenVPN 客户端配置

2.2.1 在服务端创建客户端证书

#拷备客户端证书管理工具
# cp -r /usr/share/easy-rsa/ /etc/openvpn/easyrsa-client
#拷备变量配置文件
# cp /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openvpn/easyrsa-client/3/vars

#初始化客户端pki环境
#生成存放私钥、证书、证书请求文件的目录
# cd /etc/openvpn/easyrsa-client/3
# ./easyrsa init-pki

#生成客户端私钥和证书请求文件
# cd /etc/openvpn/easyrsa-client/3
# echo | ./easyrsa gen-req bob nopass        #私钥不加密,bob为私钥和证书请求文件名称前缀

=====================================================================
#在server端签发client端证书
# cd /etc/openvpn/easyrsa-server/3

#在服务端导入客户端证书请求文件    
# ./easyrsa import-req /etc/openvpn/easyrsa-client/3/pki/reqs/bob.req bob    #bob为短名称,通常是客户端账户名

#签发客户端证书
# echo yes | ./easyrsa sign-req client bob        #client为签发证书类型,bob为证书文件名称前缀

#客户端证书存放路径(存放在服务端pki环境issued文件夹下)
# ls /etc/openvpn/easyrsa-server/3/pki/issued/
 bob.crt  server.crt

2.2.2 集中存放客户端证书文件

# mkdir /etc/openvpn/client/bob
# cp /etc/openvpn/easyrsa-server/3/pki/ca.crt /etc/openvpn/client/bob
# cp /etc/openvpn/easyrsa-server/3/pki/issued/bob.crt /etc/openvpn/client/bob
# cp /etc/openvpn/easyrsa-client/3/pki/private/bob.key /etc/openvpn/client/bob
# cp /etc/openvpn/certs/ta.key /etc/openvpn/client/bob

# tree /etc/openvpn/client/bob
/etc/openvpn/client/bob
├── bob.crt
├── bob.key
├── ca.crt
└── ta.key

0 directories, 4 files

2.2.3 准备客户端配置文件

# grep '^[^#;]' /usr/share/doc/openvpn-2.4.12/sample/sample-config-files/client.conf  > /etc/openvpn/client/bob/client.ovpn

# vi /etc/openvpn/client/bob/client.ovpn
client
dev tun
proto tcp
remote 35.78.X.X 41194        #服务端地址,也支持域名
resolv-retry infinite        #server端为主机名时,始终解析,A记录发生变化时,重连到对应的新IP
nobind                #不绑定指定端口,使用随机端口与服务端通信
#persist-key
#persist-tun
ca ca.crt            #证书、私钥路径
cert bob.crt
key bob.key
remote-cert-tls server    #使用远程服务端验证
tls-auth ta.key 1        #配置额外安全特性,阻止DoS攻击和UDP端口泛滥,第2个参数服务端为0,客户端为1
                        #服务端和客户端使用同一私钥的备份
cipher AES-256-CBC
verb 3

2.2.4 打包客户端证书及配置文件

# cd /etc/openvpn/client/bob/
# tar zcf bob.tar.gz ./*

2.2.5 安装 Windows 客户端程序

#官网有时打不开,链接可下载,不必过墙
# wget https://swupdate.openvpn.org/community/releases/OpenVPN-2.6.0-I005-amd64.msi

#安装客户端后,将客户端证书及配置文件解压到安装目录下的config文件夹
[C:\]$ dir "D:\Program Files\OpenVPN\config"
 驱动器 D 中的卷是 软件
 卷的序列号是 4EF1-E89A

 D:\Program Files\OpenVPN\config 的目录

2023/03/05  15:28    <DIR>          .
2023/03/05  15:28    <DIR>          ..
2023/03/05  12:55             4,425 bob.crt
2023/03/05  12:55             1,704 bob.key
2023/03/05  12:55             1,172 ca.crt
2023/03/05  14:46               208 client.ovpn
2023/03/05  12:55               636 ta.key
               5 个文件          8,145 字节
               2 个目录 125,413,928,960 可用字节

2.2.6 测试连接

#打开客户端程序,确认连接vpn,连接后图标为绿色

#ssh连接云主机私网IP
[c:\~]$ ssh 172.31.3.208 40022


Connecting to 172.31.3.208:40022...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last login: Sun Mar  5 15:19:51 2023 from ip-10-8-0-6.ap-northeast-1.compute.internal
[root@tokyo-aws ~]# ip a show dev eth0 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 0a:cc:d7:5f:89:c1 brd ff:ff:ff:ff:ff:ff
    inet 172.31.3.208/20 brd 172.31.15.255 scope global dynamic eth0
       valid_lft 2477sec preferred_lft 2477sec
    inet6 fe80::8cc:d7ff:fe5f:89c1/64 scope link 
       valid_lft forever preferred_lft forever

[root@tokyo-aws ~]# ip a show dev tun0
14: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::d858:7948:6db3:496f/64 scope link flags 800 
       valid_lft forever preferred_lft forever
posted on 2023-03-29 09:28  不期而至  阅读(41)  评论(0编辑  收藏  举报