阿里云VPC实验五则

知识的领域是无限的,我们的学习也是无限期的。这篇文章主要讲述阿里云VPC实验五则相关的知识,希望能为你提供帮助。
一、实验场景:
1、无公网IP和EIP(弹性公网IP)的ECS通过NAT网关设置SNAT(源地址转换)访问公网
2、无公网IP和EIP的ECS通过NAT网关设置DNAT(目标地址转换)向公网提供服务
3、相同地域、相同可用区、相同VPC(专有网络)的两台ECS,ECS1绑定EIP且自建NAT网关,ECS2无公网IP和EIP,通过ECS1访问公网并向公网提供服务
4、相同地域、不同可用区、不同VPC的两台ECS通过CEN(云企业网)互连
5、相同地域、不同可用区、不同VPC的两台ECS,ECS1绑定EIP且部署OpenXXX,ECS2无公网IP和EIP,本地通过ECS2的私有地址登录SSH,ECS2能访问公网并向公网提供服务

二、无公网IP和EIP(弹性公网IP)的ECS通过NAT网关设置SNAT(源地址转换)访问公网
1、原理:

阿里云VPC实验五则

文章图片

2、创建VPC和交换机(对应子网):
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

备注:系统会自动创建路由条目
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

3、创建ECS实例(可用区选择VPC所在的上海可用区E):
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

4、创建EIP(用于绑定NAT网关):
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

5、创建NAT网关:
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

6、NAT网关绑定EIP:
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

7、设置SNAT前,ECS无法访问公网:
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

8、设置SNAT:
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

备注:系统会自动创建路由条目,下一跳就是NAT网关
阿里云VPC实验五则

文章图片

9、设置SNAT后,ECS能访问公网:
阿里云VPC实验五则

文章图片


三、无公网IP和EIP的ECS通过NAT网关设置DNAT(目标地址转换)向公网提供服务
1、原理:
阿里云VPC实验五则

文章图片

2、设置DNAT前,本地无法ping通ECS:
阿里云VPC实验五则

文章图片

3、设置DNAT:
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

备注:将EIP的80端口映射到内网ECS的80端口
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

4、ECS部署nginx服务,并在安全组入方向允许80/tcp端口:
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

备注:ECS初始默认关闭firewalld和SELinux
5、设置DNAT后,本地能使用NAT网关绑定的EIP访问ECS部署的Nginx服务:
阿里云VPC实验五则

文章图片

6、同理设置DNAT前,本地无法登录ECS的SSH:
阿里云VPC实验五则

文章图片

7、设置DNAT:
阿里云VPC实验五则

文章图片

备注:将EIP的22端口映射到内网ECS的22端口
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

8、ECS安全组入方向默认已允许22/tcp端口:
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

9、设置DNAT后,本地能使用NAT网关绑定的EIP登录ECS的SSH:
阿里云VPC实验五则

文章图片


四、相同地域、相同可用区、相同VPC(专有网络)的两台ECS,ECS1绑定EIP且自建NAT网关,ECS2无公网IP和EIP,通过ECS1访问公网并向公网提供服务
1、删除之前实验中配置的SNAT和DNAT条目
2、解绑NAT网关的EIP地址15.104.35
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

3、删除NAT网关
4、恢复ECS安全组入方向默认规则
5、在上海可用区E中,创建一台ECS实例,使用和实例10.0.0.7相同的VPN和交换机
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

6、修改两台ECS实例的描述信息用以区分,实例10.0.0.7为ECS1,实例10.0.0.9为ECS2
阿里云VPC实验五则

文章图片

7、ECS1绑定EIP地址106.15.104.35
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

8、通过ECS1的EIP登录SSH,并开启ECS1的IP转发功能:
# ifconfig

阿里云VPC实验五则

文章图片

# sysctl -p | grep "net.ipv4.ip_forward" # echo "net.ipv4.ip_forward = 1" > > /etc/sysctl.conf # sysctl -p | grep "net.ipv4.ip_forward"

阿里云VPC实验五则

文章图片

9、在VPC中添加一条自定义路由条目,目标网段0.0.0/0,下一跳类型指向绑定EIP的ECS1:
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

10、ECS1通过firewalld设置SNAT:
(1)CentOS 7:
# systemctl start firewalld # systemctl enable firewalld # firewall-cmd --state # firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.0.0.0/8 -j SNAT --to-source 10.0.0.7 # firewall-cmd --reload

(2)CentOS 6:
# iptables -t nat -I POSTROUTING -s 10.0.0.0/8 -j SNAT --to-source 10.0.0.7 # service iptables save # service iptables restart

备注:-s VPC网段,--to-source绑定EIP的ECS内网IP
阿里云VPC实验五则

文章图片

11、设置SNAT后,ECS2能访问公网:
阿里云VPC实验五则

文章图片

12、ECS1通过firewalld设置DNAT:
(1)CentOS 7:
# systemctl start firewalld # systemctl enable firewalld # firewall-cmd --state # firewall-cmd --add-masquerade --permanent # firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 10.0.0.9 # firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -p tcp --dport 80 -j MASQUERADE # firewall-cmd --reload

(2)CentOS 6:
# iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 10.0.0.9 # iptables -t nat -I POSTROUTING -p tcp --dport 80 -j MASQUERADE # service iptables save # service iptables restart

备注:--dport绑定EIP的ECS需要映射的端口号,--to目标ECS的内网IP
13、ECS2部署Nginx服务,并在安全组入方向允许80/tcp端口
14、设置DNAT后,本地能使用ECS1绑定的EIP访问ECS2部署的Nginx服务:
阿里云VPC实验五则

文章图片


五、相同地域、不同可用区、不同VPC的两台ECS通过CEN(云企业网)互连
1、删除之前实验中已添加的一条自定义路由条目,目标网段0.0.0.0/0,下一跳类型指向绑定EIP的ECS1
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

2、恢复ECS2安全组入方向默认规则
3、在上海可用区G中,创建VPC和交换机:
阿里云VPC实验五则

文章图片

4、同样在上海可用区G中,创建一台ECS实例,和ECS2相同地域、不同可用区、不同VPC,描述信息为ECS3
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

5、默认情况下ECS2和ECS3互相都ping不通:
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

6、创建CEN实例:
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

7、将专有网络2也加入同一个CEN:
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

8、将两个VPC加入同一个CEN后,ECS2和ECS3能互相ping通:
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

备注:两个VPC的IP网段不能冲突,且ECS2和ECS3安全组入方向都要允许ping(默认已允许全部ICMP)

六、相同地域、不同可用区、不同VPC的两台ECS,ECS1绑定EIP且部署OpenXXX,ECS2无公网IP和EIP,本地通过ECS2的私有地址登录SSH,ECS2能访问公网并向公网提供服务
1、OpenXXX相关概念简介:
(1)OpenXXX:
OpenXXX是一款用于创建虚拟专用网络加密通道的软件包。OpenXXX实现一个虚拟专用网(XXX)来创建一个安全连接,它大量使用了OpenSSL加密库中的SSLv3/TLSv1协议函数库。
(2)OpenXXX虚拟网卡:
OpenXXX中的虚拟网卡是使用网络底层编程技术实现的一款驱动软件,安装软件后设备上会新增一块非真实的网卡,并可以像其它网卡一样进行配置。服务程序可以在应用层打开虚拟网卡,如果应用软件(如网络浏览器)向虚拟网卡发送数据,则服务程序可以读取到该数据。如果服务程序将合适的数据写入至虚拟网卡,应用软件也可以接收到。虚拟网卡在很多操作系统中都有相应的实现,这也是OpenXXX能跨平台使用的一个重要原因。
2、释放之前实验中无用的资源,修改ECS实例的描述信息用以区分,实例172.16.0.223为ECS1,实例10.0.0.9为ECS2,将EIP地址106.15.104.35绑定至ECS1
阿里云VPC实验五则

文章图片

备注:
(1)确认专有网络1和专有网络2已加入同一个CEN,ECS1和ECS2能互相ping通
(2)本地只能通过ECS1的EIP进行SSH登录,私有IP无法直接登录SSH
3、实验环境:
主机名
操作系统
私有IP
EIP
服务器角色
ecs1
CentOS 7.9
172.16.0.223
106.15.104.35
OpenXXX服务端、自建NAT网关
ecs2
CentOS 7.9
10.0.0.9

Nginx
centos
CentOS 7.9
192.168.0.122

本地OpenXXX客户端
Marion
Windows 10
192.168.0.100

本地OpenXXX客户端
4、ECS1部署OpenXXX服务端:
(1)ECS1安装epel源、openvpn和easy-rsa:
# yum -y install epel-release & & yum -y install openvpn easy-rsa

(2)配置easy-rsa:
# mkdir -pv /etc/openvpn/easy-rsa/ # cp -a /usr/share/easy-rsa/3.0.8/* /etc/openvpn/easy-rsa/ # cp -a /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openvpn/easy-rsa/vars # vim /etc/openvpn/easy-rsa/vars

取消设置并修改参数值:
set_var EASYRSA_DN"cn_only"
set_var EASYRSA_REQ_COUNTRY"CN"
set_var EASYRSA_REQ_PROVINCE"Shanghai"
set_var EASYRSA_REQ_CITY"Shanghai"
set_var EASYRSA_REQ_ORG"Alibaba"
set_var EASYRSA_REQ_EMAIL"834143808@qq.com"
set_var EASYRSA_REQ_OU"Alibaba"
set_var EASYRSA_KEY_SIZE2048
阿里云VPC实验五则

文章图片

(3)初始化pki目录:
# cd /etc/openvpn/easy-rsa # ./easyrsa init-pki

阿里云VPC实验五则

文章图片

(4)创建CA证书:# ./easyrsa build-ca nopass
阿里云VPC实验五则

文章图片

备注:nopass表示不加密私钥文件
(5)创建Server端证书和密钥:# ./easyrsa build-server-full server nopass
阿里云VPC实验五则

文章图片

(6)创建DH密钥:# ./easyrsa gen-dh
阿里云VPC实验五则

文章图片

(7)创建TLS密钥:# openvpn --genkey --secret /etc/openvpn/easy-rsa/ta.key
(8)复制Server端文件:
# cp -a pki/ca.crt /etc/openvpn/server/ # cp -a pki/issued/server.crt /etc/openvpn/server/ # cp -a pki/private/server.key /etc/openvpn/server/ # cp -a pki/dh.pem /etc/openvpn/server/ # cp -a ta.key /etc/openvpn/server/ # ls /etc/openvpn/server

阿里云VPC实验五则

文章图片

(9)修改Server端配置文件:
# cp -p /usr/share/doc/openvpn-2.4.11/sample/sample-config-files/server.conf /etc/openvpn/server/ # cd /etc/openvpn/server # cat /dev/null > server.conf # vim server.conf

local 172.16.0.223
port 1194
proto udp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key
dh /etc/openvpn/server/dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 223.5.5.5"
push "dhcp-option DNS 223.6.6.6"
duplicate-cn
keepalive 10 120
tls-auth /etc/openvpn/server/ta.key 0
cipher AES-256-CBC
compress lz4-v2
push "compress lz4-v2"
max-clients 10
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
log-append/var/log/openvpn.log
verb 3
explicit-exit-notify 1
备注:
a、local 172.16.0.223:OpenXXX部署在ECS1上,此IP为ECS1的私有IP。
b、duplicate-cn:允许多个客户端同时使用相同的证书/密钥文件或通用名称连接。如果没有此选项,OpenXXX将在连接时使用相同的证书/密钥文件,且连接新客户端时会断开旧客户端连接。生产环境中每个客户端都应该有自己的证书/密钥文件。
(10)修改内核模块,开启IP转发功能:
# sysctl -p | grep "net.ipv4.ip_forward" # echo \'net.ipv4.ip_forward = 1\' > > /etc/sysctl.conf # sysctl -p | grep "net.ipv4.ip_forward"

阿里云VPC实验五则

文章图片

(11)OpenXXX服务端所在的ECS1安全组入方向允许1194/udp端口:
阿里云VPC实验五则

文章图片

(12)启动OpenXXX并配置开机自启:
# systemctl start openvpn-server@server # systemctl enable openvpn-server@server # systemctl status openvpn-server@server # ss -tunlp | grep openvpn

阿里云VPC实验五则

文章图片

(13)查看ECS1自动分配的IP:# ip addr l
阿里云VPC实验五则

文章图片

(14)创建Client端证书和密钥:
# cd /etc/openvpn/easy-rsa # ./easyrsa build-client-full qiuyue

阿里云VPC实验五则

文章图片

备注:
a、设置的密码在连接OpenXXX服务端时需要输入
b、生成无密码的客户端证书:
# ./easyrsa build-client-full client nopass

c、多次执行上述命令可为多个用户创建证书:
# ./easyrsa build-client-full client01 nopass # ./easyrsa build-client-full client02 nopass

(15)复制Client端文件:
# cp -a pki/ca.crt /etc/openvpn/client/ # cp -a pki/issued/qiuyue.crt /etc/openvpn/client/ # cp -a pki/private/qiuyue.key /etc/openvpn/client/ # cp -a ta.key /etc/openvpn/client/ # ls /etc/openvpn/client

阿里云VPC实验五则

文章图片

(16)修改Client端配置文件:
# cp -p /usr/share/doc/openvpn-2.4.11/sample/sample-config-files/client.conf /etc/openvpn/client/ # cd /etc/openvpn/client # mv client.conf client.ovpn # cat /dev/null > client.ovpn # vim client.ovpn

client
dev tun
proto udp
remote 106.15.104.35
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert qiuyue.crt
key qiuyue.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
verb 3
备注:remote 106.15.104.35,OpenXXX部署在ECS1上,此IP为ECS1的EIP
(17)将整个/etc/openxxx/client目录打包压缩传输至本地:
# cd /etc/openvpn # tar -zcf vpnclient.tar.gz client/ # ls # yum -y install lrzsz # sz vpnclient.tar.gz

阿里云VPC实验五则

文章图片

5、本地Windows 10部署OpenXXX客户端:
(1)下载客户端软件OpenXXX-2.5.3-I601-amd64.msi,地址http://www.npackd.org/p/openxxx64
(2)安装软件包,路径D:\\OpenXXX
(3)解压传输至本地的tar.gz,将client目录下的所有文件复制至D:\\OpenXXX\\config目录
阿里云VPC实验五则

文章图片

(4)双击快捷方式:
阿里云VPC实验五则

文章图片

(5)双击任务栏图标,运行OpenXXX GUI:
阿里云VPC实验五则

文章图片

(6)输入私钥密码:
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

(7)查看本地Windows 10自动分配的IP:C:\\WINDOWS\\system32> ipconfig
阿里云VPC实验五则

文章图片

(8)本地Windows 10能通过ECS1的私有IP地址16.0.223登录SSH:
阿里云VPC实验五则

文章图片

备注:
a、本地Windows 10不能通过ECS2的私有IP地址0.0.9登录SSH
b、本地Windows 10运行OpenXXX GUI客户端后无法访问公网
c、ECS1和ECS2都关闭firewalld
6、ECS1配置防火墙:
(1)开启防火墙:
# systemctl start firewalld # systemctl enable firewalld # firewall-cmd --state

阿里云VPC实验五则

文章图片

(2)防火墙新增OpenXXX相关规则:
# firewall-cmd --add-service=openvpn --permanent # firewall-cmd --add-port=1194/udp --permanent # firewall-cmd --add-interface=tun0 --permanent

(3)开启IP伪装:
# firewall-cmd --add-masquerade --permanent # firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

(4)重载防火墙规则:
# firewall-cmd --reload # firewall-cmd --list-all

阿里云VPC实验五则

文章图片

备注:
a、本地Windows 10能通过ECS2的私有IP地址0.0.9登录SSH
阿里云VPC实验五则

文章图片

b、本地Windows 10运行OpenXXX GUI客户端的同时也能访问公网
c、ECS1已开启firewalld,并按上述步骤配置防火墙规则,ECS2仍关闭firewalld
7、本地CentOS 7.9部署OpenXXX客户端:
(1)部署前本地CentOS 7.9没有tun0虚拟网卡,也无法ping通ECS2的私有IP地址0.0.9:
# ip add l

阿里云VPC实验五则

文章图片

# ping 10.0.0.9

阿里云VPC实验五则

文章图片

(2)安装OpenXXX客户端:# yum -y install epel-release & & yum -y install openvpn lrzsz
(3)将之前从服务端传输至本地的tar.gz上传至本地CentOS 7.9:
# cd /etc/openvpn/client # rz # ls # tar -xf vpnclient.tar.gz # rm -rf vpnclient.tar.gz # mv client/* . # rm -rf client # ls

阿里云VPC实验五则

文章图片

(4)后台启动OpenXXX,需输入systemd-tty-ask-password-agent命令和服务端加密密钥123456:
# openvpn --daemon --cd /etc/openvpn/client --config client.ovpn --log-append /var/log/openvpn.log

阿里云VPC实验五则

文章图片

(5)查看OpenXXX进程:
# ps -ef | grep openvpn

阿里云VPC实验五则

文章图片

# ss -tunlp | grep openvpn

阿里云VPC实验五则

文章图片

(6)部署后本地CentOS 7.9自动生成tun0虚拟网卡,能ping通ECS2的私有IP地址0.0.9,并能访问公网:
# ip add l

阿里云VPC实验五则

文章图片

# ping -c 3 10.0.0.9

阿里云VPC实验五则

文章图片

# ping -c 3 www.aliyun.com

阿里云VPC实验五则

文章图片

8、无公网IP和EIP的ECS2通过ECS1的EIP访问公网:
(1)配置前ECS2无法直接访问公网:
阿里云VPC实验五则

文章图片

(2)确认ECS1已开启IP转发功能:
# sysctl -p | grep "net.ipv4.ip_forward"
阿里云VPC实验五则

文章图片

备注:由于之前实验操作,此时ECS1对应VPC专有网络2,ECS2对应VPC专有网络1
(3)在VPC专有网络2中添加自定义路由条目,0.0.0.0/0,下一跳类型指向绑定EIP的ECS1:
阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

阿里云VPC实验五则

文章图片

(4)添加的自定义路由条目手动发布至CEN中:
【阿里云VPC实验五则】阿里云VPC实验五则

    推荐阅读