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 2016:10.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
#安装软件包 # yum -y install epel-release # yum -y install openvpn #openvpn服务端 # yum -y install easy-rsa #证书管理工具
#拷备服务端配置文件 # 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
#生成CA私钥和自签名证书 # cd /etc/openvpn/easyrsa-server/3 # echo | ./easyrsa build-ca nopass #私钥不加密
#生成服务端私钥和证书请求文件 # 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)
# cd /etc/openvpn/easyrsa-server/3 # ./easyrsa gen-dh
#集中存放服务端所需证书 # 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
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模式开启此选项,将导致服务无法启动。
#开启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
#拷备客户端证书管理工具 # 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
# 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
# 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
# cd /etc/openvpn/client/bob/ # tar zcf bob.tar.gz ./*
#官网有时打不开,链接可下载,不必过墙 # 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 可用字节
#打开客户端程序,确认连接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