当使用Azure Redis高级版时候,为了能更好的保护Redis的安全,启用了虚拟网路,把Redis集成在Azure中的虚拟网络,只能通过虚拟网络VENT中的资源进行访问,而公网是不可以访问的。但是在使用中,有时候会有一些疑惑,大多数的疑惑我们可以在Azure Redis的文档中得到答案,有一些则需要通过自己在使用中得到验证或解释。如:
- 当集成成功后,为什么通过公网nslookup也可以解析成功Redis 域名呢?
- 在内网中如何连接Redis呢?通过何种方式来进行测试?
- Redis的防火墙的白名单起什么作用呢?是否可以设置允许外网的IP地址进行访问呢?
如何为高级 Azure Redis 缓存配置虚拟网络, 请见文档:https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-how-to-premium-vnet, 特别注意的是,将 Azure Redis 缓存部署到资源管理器 VNet 时,缓存必须位于专用子网中,该子网中只能包含 Azure Redis 缓存实例,而不能包含其他资源。 如果尝试将 Azure Redis 缓存部署到包含其他资源的资源管理器 VNet 子网,部署会失败。
我们就通过实验来一一解答.
1) 当集成成功后,为什么通过公网nslookup也可以解析成功Redis 域名呢?
因为在Redis创建号之后,是通过DNS域名来进行的访问(公网与内网的访问方式一样,也可以通过IP地址访问)。而内网中如果我们没有自定义DNS服务器,这需要向外部公网的DNS服务器寻求对次Redis的域名进行解析,如(114.114.114.114,8.8.8.8), 而这是Redis服务在为了不论是在内网,外网的情况下都能解析到Redis DNS而设计的。但是如果构建的内部虚拟网络(VNET)如果不允许想外部发送请求,这必须在自己的DNS服务器上配置该条A记录。
虽然外网能够解析出该Redis 域名,但是解析出的是一个内网IP地址,所以外部网络也是无妨访问此Redis的。
2) 在内网中如何连接Redis呢?通过何种方式来进行测试?
首先,需要在内网中找一台虚拟机。通过tcping.ext的小工具来对6379,6380端口进行ping命令并查看返回结果。如果ping的结果正常,则可以使用Redis-cli工具连接到Redis服务。如Windows平台可以https://github.com/microsoftarchive/redis/releases 下载。
使用tcping.ext测试端口命令:
tcping.exe yourcachename.redis.cache.chinacloudapi.cn 6379
tcping.exe yourcachename.redis.cache.chinacloudapi.cn 6380
使用Redis-cli连接到Redis命令:
redis-cli.exe -h yourcachename.redis.cache.chinacloudapi.cn -p 6379 -a YourAccessKey
3) Redis的防火墙的白名单起什么作用呢?是否可以设置允许外网的IP地址进行访问呢?
当集成在内部虚拟网络之后,外部公网是不可以继续访问的[VNet 是云中的专用网络。 为 Azure Redis 缓存实例配置了 VNet 后,该实例不可公开寻址,而只能从 VNet 中的虚拟机和应用程序进行访问]。而此时,防火强的白名单的作用对象也变成了内网中的IP地址,即:可以通过设置防火墙白名单,只允许内网中的部分资源访问Redis。
[END]