阿里云VPC实验五则

Posted Marion0728

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里云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实验五则_ECS\'

2、创建VPC和交换机(对应子网):

\'阿里云VPC实验五则_ECS_02\'

\'阿里云VPC实验五则_SNAT_03\'

\'阿里云VPC实验五则_SNAT_04\'

\'阿里云VPC实验五则_SNAT_05\'

备注:系统会自动创建路由条目

\'阿里云VPC实验五则_SNAT_06\'

\'阿里云VPC实验五则_ECS_07\'

3、创建ECS实例(可用区选择VPC所在的上海可用区E):

\'阿里云VPC实验五则_DNAT_08\'

\'阿里云VPC实验五则_VPC_09\'

\'阿里云VPC实验五则_DNAT_10\'

\'阿里云VPC实验五则_阿里云ACP_11\'

\'阿里云VPC实验五则_DNAT_12\'

\'阿里云VPC实验五则_阿里云ACP_13\'

\'阿里云VPC实验五则_阿里云ACP_14\'

4、创建EIP(用于绑定NAT网关):

\'阿里云VPC实验五则_ECS_15\'

\'阿里云VPC实验五则_DNAT_16\'

\'阿里云VPC实验五则_DNAT_17\'

\'阿里云VPC实验五则_SNAT_18\'

5、创建NAT网关:

\'阿里云VPC实验五则_DNAT_19\'

\'阿里云VPC实验五则_ECS_20\'

\'阿里云VPC实验五则_VPC_21\'

6、NAT网关绑定EIP:

\'阿里云VPC实验五则_阿里云ACP_22\'

\'阿里云VPC实验五则_DNAT_23\'

\'阿里云VPC实验五则_DNAT_24\'

7、设置SNAT前,ECS无法访问公网:

\'阿里云VPC实验五则_DNAT_25\'

\'阿里云VPC实验五则_ECS_26\'

\'阿里云VPC实验五则_SNAT_27\'

\'阿里云VPC实验五则_ECS_28\'

8、设置SNAT:

\'阿里云VPC实验五则_ECS_29\'

\'阿里云VPC实验五则_SNAT_30\'

\'阿里云VPC实验五则_DNAT_31\'

\'阿里云VPC实验五则_ECS_32\'

备注:系统会自动创建路由条目,下一跳就是NAT网关

\'阿里云VPC实验五则_SNAT_33\'

9、设置SNAT后,ECS能访问公网:

\'阿里云VPC实验五则_VPC_34\'

 

三、无公网IP和EIP的ECS通过NAT网关设置DNAT(目标地址转换)向公网提供服务

1、原理:

\'阿里云VPC实验五则_VPC_35\'

2、设置DNAT前,本地无法ping通ECS:

\'阿里云VPC实验五则_ECS_36\'

3、设置DNAT:

\'阿里云VPC实验五则_ECS_37\'

\'阿里云VPC实验五则_SNAT_38\'

\'阿里云VPC实验五则_DNAT_39\'

备注:将EIP的80端口映射到内网ECS的80端口

\'阿里云VPC实验五则_ECS_40\'

\'阿里云VPC实验五则_DNAT_41\'

4、ECS部署nginx服务,并在安全组入方向允许80/tcp端口:

\'阿里云VPC实验五则_ECS_42\'

\'阿里云VPC实验五则_阿里云ACP_43\'

备注:ECS初始默认关闭firewalld和SELinux

5、设置DNAT后,本地能使用NAT网关绑定的EIP访问ECS部署的Nginx服务:

\'阿里云VPC实验五则_VPC_44\'

6、同理设置DNAT前,本地无法登录ECS的SSH:

\'阿里云VPC实验五则_SNAT_45\'

7、设置DNAT:

\'阿里云VPC实验五则_SNAT_46\'

备注:将EIP的22端口映射到内网ECS的22端口

\'阿里云VPC实验五则_ECS_47\'

\'阿里云VPC实验五则_DNAT_48\'

8、ECS安全组入方向默认已允许22/tcp端口:

\'阿里云VPC实验五则_DNAT_49\'

\'阿里云VPC实验五则_阿里云ACP_50\'

9、设置DNAT后,本地能使用NAT网关绑定的EIP登录ECS的SSH:

\'阿里云VPC实验五则_ECS_51\'

 

四、相同地域、相同可用区、相同VPC(专有网络)的两台ECS,ECS1绑定EIP且自建NAT网关,ECS2无公网IP和EIP,通过ECS1访问公网并向公网提供服务

1、删除之前实验中配置的SNAT和DNAT条目

2、解绑NAT网关的EIP地址15.104.35

\'阿里云VPC实验五则_阿里云ACP_52\'

\'阿里云VPC实验五则_阿里云ACP_53\'

3、删除NAT网关

4、恢复ECS安全组入方向默认规则

5、在上海可用区E中,创建一台ECS实例,使用和实例10.0.0.7相同的VPN和交换机

\'阿里云VPC实验五则_阿里云ACP_54\'

\'阿里云VPC实验五则_ECS_55\'

6、修改两台ECS实例的描述信息用以区分,实例10.0.0.7为ECS1,实例10.0.0.9为ECS2

\'阿里云VPC实验五则_阿里云ACP_56\'

7、ECS1绑定EIP地址106.15.104.35

\'阿里云VPC实验五则_阿里云ACP_57\'

\'阿里云VPC实验五则_阿里云ACP_58\'

\'阿里云VPC实验五则_SNAT_59\'

\'阿里云VPC实验五则_DNAT_60\'

\'阿里云VPC实验五则_DNAT_61\'

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

# ifconfig

\'阿里云VPC实验五则_ECS_62\'

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

\'阿里云VPC实验五则_VPC_63\'

9、在VPC中添加一条自定义路由条目,目标网段0.0.0/0,下一跳类型指向绑定EIPECS1

\'阿里云VPC实验五则_SNAT_64\'

\'阿里云VPC实验五则_VPC_65\'

\'阿里云VPC实验五则_VPC_66\'

\'阿里云VPC实验五则_DNAT_67\'

\'阿里云VPC实验五则_ECS_68\'

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实验五则_ECS_69\'

11、设置SNAT后,ECS2能访问公网:

\'阿里云VPC实验五则_阿里云ACP_70\'

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_71\'

 

五、相同地域、不同可用区、不同VPC的两台ECS通过CEN(云企业网)互连

1、删除之前实验中已添加的一条自定义路由条目,目标网段0.0.0.0/0,下一跳类型指向绑定EIP的ECS1

\'阿里云VPC实验五则_DNAT_72\'

\'阿里云VPC实验五则_SNAT_73\'

2、恢复ECS2安全组入方向默认规则

3、在上海可用区G中,创建VPC和交换机:

\'阿里云VPC实验五则_阿里云ACP_74\'

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

\'阿里云VPC实验五则_阿里云ACP_75\'

\'阿里云VPC实验五则_VPC_76\'

5、默认情况下ECS2和ECS3互相都ping不通:

\'阿里云VPC实验五则_SNAT_77\'

\'阿里云VPC实验五则_VPC_78\'

6、创建CEN实例:

\'阿里云VPC实验五则_ECS_79\'

\'阿里云VPC实验五则_VPC_80\'

\'阿里云VPC实验五则_VPC_81\'

\'阿里云VPC实验五则_SNAT_82\'

\'阿里云VPC实验五则_DNAT_83\'

7、将专有网络2也加入同一个CEN:

\'阿里云VPC实验五则_ECS_84\'

\'阿里云VPC实验五则_阿里云ACP_85\'

\'阿里云VPC实验五则_DNAT_86\'

\'阿里云VPC实验五则_DNAT_87\'

\'阿里云VPC实验五则_VPC_88\'

8、将两个VPC加入同一个CEN后,ECS2和ECS3能互相ping通:

\'阿里云VPC实验五则_SNAT_89\'

\'阿里云VPC实验五则_ECS_90\'

备注:两个VPCIP网段不能冲突,且ECS2ECS3安全组入方向都要允许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实验五则_SNAT_91\'

备注:

(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_SIZE         2048

\'阿里云VPC实验五则_VPC_92\'

(3)初始化pki目录:

# cd /etc/openvpn/easy-rsa
# ./easyrsa init-pki

\'阿里云VPC实验五则_阿里云ACP_93\'

(4)创建CA证书:# ./easyrsa build-ca nopass

\'阿里云VPC实验五则_VPC_94\'

备注:nopass表示不加密私钥文件

(5)创建Server端证书和密钥:# ./easyrsa build-server-full server nopass

\'阿里云VPC实验五则_ECS_95\'

(6)创建DH密钥:# ./easyrsa gen-dh

\'阿里云VPC实验五则_ECS_96\'

(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实验五则_SNAT_97\'

(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实验五则_SNAT_98\'

(11)OpenXXX服务端所在的ECS1安全组入方向允许1194/udp端口:

\'阿里云VPC实验五则_DNAT_99\'

(12)启动OpenXXX并配置开机自启:

# systemctl start openvpn-server@server
# systemctl enable openvpn-server@server
# systemctl status openvpn-server@server
# ss -tunlp | grep openvpn

\'阿里云VPC实验五则_ECS_100\'

(13)查看ECS1自动分配的IP:# ip addr l

\'阿里云VPC实验五则_VPC_101\'

(14)创建Client端证书和密钥:

# cd /etc/openvpn/easy-rsa
# ./easyrsa build-client-full qiuyue

\'阿里云VPC实验五则_DNAT_102\'

备注:

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实验五则_DNAT_103\'

(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实验五则_ECS_104\'

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实验五则_DNAT_105\'

(4)双击快捷方式:

\'阿里云VPC实验五则_VPC_106\'

(5)双击任务栏图标,运行OpenXXX GUI:

\'阿里云VPC实验五则_DNAT_107\'

(6)输入私钥密码:

\'阿里云VPC实验五则_VPC_108\'

\'阿里云VPC实验五则_SNAT_109\'

\'阿里云VPC实验五则_ECS_110\'

(7)查看本地Windows 10自动分配的IP:C:\\WINDOWS\\system32>ipconfig

\'阿里云VPC实验五则_DNAT_111\'

(8)本地Windows 10能通过ECS1的私有IP地址16.0.223登录SSH:

\'阿里云VPC实验五则_阿里云ACP_112\'

备注:

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实验五则_DNAT_113\'

(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实验五则_SNAT_114\'
备注:

a、本地Windows 10能通过ECS2的私有IP地址0.0.9登录SSH

\'阿里云VPC实验五则_SNAT_115\'

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实验五则_阿里云ACP_116\'

# ping 10.0.0.9

\'阿里云VPC实验五则_ECS_117\'

(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实验五则_SNAT_118\'

(4)后台启动OpenXXX,需输入systemd-tty-ask-password-agent命令和服务端加密密钥123456

# openvpn --daemon --cd /etc/openvpn/client --config client.ovpn --log-append /var/log/openvpn.log

\'阿里云VPC实验五则_SNAT_119\'

(5)查看OpenXXX进程:

# ps -ef | grep openvpn

\'阿里云VPC实验五则_阿里云ACP_120\'

# ss -tunlp | grep openvpn

\'阿里云VPC实验五则_SNAT_121\'

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

# ip add l

\'阿里云VPC实验五则_ECS_122\'

# ping -c 3 10.0.0.9

\'阿里云VPC实验五则_SNAT_123\'

# ping -c 3 www.aliyun.com

\'阿里云VPC实验五则_阿里云ACP_124\'

8、无公网IP和EIP的ECS2通过ECS1的EIP访问公网:

(1)配置前ECS2无法直接访问公网:

\'阿里云VPC实验五则_VPC_125\'

(2)确认ECS1已开启IP转发功能:

# sysctl -p | grep "net.ipv4.ip_forward"

\'阿里云VPC实验五则_ECS_126\'

备注:由于之前实验操作,此时ECS1对应VPC专有网络2,ECS2对应VPC专有网络1

(3)在VPC专有网络2中添加自定义路由条目,0.0.0.0/0,下一跳类型指向绑定EIPECS1

\'阿里云VPC实验五则_阿里云ACP_127\'

\'阿里云VPC实验五则_SNAT_128\'

\'阿里云VPC实验五则_SNAT_129\'

\'阿里云VPC实验五则_阿里云ACP_130\'

\'阿里云VPC实验五则_阿里云ACP_131\'

(4)添加的自定义路由条目手动发布至CEN中:

阿里云不同账号下两个网段vpc之间可以通过高速网络通信吗?

五:用JAVA写一个阿里云VPC Open API调用程序

阿里云 跨账号实现内网互传 VPC互连(踩坑总结)

阿里云不同vpc下的内网互通

阿里云建站基础(vpc)

阿里云SLB和VPC的限制关系