我们在AWS上有一个EC2实例,我们将后端服务部署到。我们首先使用Google Spreadsheets(使用Google Apps脚本编写脚本)通过部署在我们服务器上的Web服务来展示我们的后端。我们有一个特定的端口,https(使用自签名证书)协议用于为飞行时加密的Web服务提供服务。我们已经设置了安全组(基本上是防火墙条目组),其中包括我们的Web服务的特定入口端口的以下CIDR范围:
64.18.0.0/20
64.233.160.0/19
66.102.0.0/20
66.249.80.0/20
72.14.192.0/18
74.125.0.0/16
173.194.0.0/16
207.126.144.0/20
209.85.128.0/17
216.58.192.0/19
216.239.32.0/19
如https://developers.google.com/apps-script/guides/jdbc#setup_for_google_cloud_sql
中所述这个设置工作正常,直到5天前。然后发生了一些奇怪的事。当我们从“脚本编辑器”代码运行电子表格后面的脚本时 工作正常,请求我们的webservice成功返回。但是当通过菜单项调用完全相同的代码时,它没有做任何事情。经过长期令人沮丧的调查,我们发现请求甚至没有到达我们的服务器(还有许多其他古怪的症状,例如只有上一个日志命令在'执行记录'中可见,即使应该有许多其他人)。然后我们尝试用从任何ip接受的规则替换安全组但是到特定端口一切都正常工作。
以下是google-apps-script-issues页面中看似相关问题的链接: https://code.google.com/p/google-apps-script-issues/issues/detail?id=4679#c8
我们运行tcpdump tcp port <port> -i eth0 -vv
并观察到当我们从“脚本编辑器”运行代码时,请求来自66.102.7.156
(来自类似的ips,位于66.102.0.0/20
),代码时从电子表格中的菜单项调用请求来自72.14.199.55
(来自类似的ips,位于72.14.192.0/18
)。这个似乎是有问题的IP范围。
我的问题是,为什么当请求源正确包含在防火墙规则中时,一个ips块不起作用并且当端口上的ip限制解除时开始工作(源ip 0.0.0.0/0
)?它是AWS中安全组的错误吗?或者我们做错了什么?此外,如果我们的方法在任何方面都不充分,那么我们将非常感谢其他解决方案或建议。