当前,Azure不允许通过服务网关通过VPN网关访问SQL数据库。我想规避此限制的想法是,将Azure VM设置为充当代理,以便与SQL数据库的所有通信都通过该实例进行(然后可以通过服务端点路由往返SQL数据库的通信)。但是,我无法使该解决方案正常工作,可以使用一些指导。
我的设置:
我有一个AWS环境,并建立了到我的Azure环境的VPN连接。我使用Route53设置了一个专用托管区域,以将我的SQL数据库的域名解析为相应Microsoft.Sql区域终结点的公用IP地址(这是我访问时SQL数据库的域名解析为的IP地址我的代理VM中的SQL数据库)。我的路由表配置为通过我的虚拟专用网关将流量转发到此IP地址。
在Azure端,我将网关子网的路由表配置为将发往Microsoft.Sql区域终结点公用IP地址的流量转发到我的代理VM,就好像它是虚拟设备一样。代理VM的网络接口设置为允许IP转发。附加到代理VM子网的路由表被配置为通过VPN网关将发往我的AWS VPC的私有CIDR的流量路由回去。
为简单起见,AWS和Azure环境中的安全组均设置为允许两个环境的私有IP地址与Microsoft.Sql区域终结点公共IP地址之间的所有入站和出站流量。
当前有效的方法:
AWS VPC中的EC2实例可以使用其专用IP地址通过VPN ping和SSH到我的代理VM。代理VM可以使用其专用IP地址通过服务端点访问我的SQL数据库。
什么不起作用:
通过尝试连接到Microsoft.Sql区域公共IP地址(我已配置为转发到代理VM的地址)或域名,我无法从我的EC2实例成功ping或ssh到代理VM SQL数据库(在Route53中为Microsoft.Sql区域公共IP地址设置的记录)。在代理VM上执行数据包捕获时,我没有看到来自EC2实例的入站流量。 VPC流日志已被我的VPC流日志接受。
我知道这是SQL数据库托管实例的用途,但是我不能选择使用该服务。
我目前尚未使用iptables配置任何转发,也未在代理VM上进行任何特殊的主机设置,因为我首先想查看数据包捕获中显示的网络流量,然后验证是否可以成功连接到代理VM实例,然后尝试设置对SQL数据库的任何形式的转发。
此外,这种解决方案是否有可能规避Azure中服务端点的限制?
谢谢。