所以我以前问过这个问题在stackoverflow,但我被告知,我应该问这里也因为它似乎是更多的基于networking的问题。 我曾searchserverfault类似的问题,从2014年遇到这个,但我想扩大到它。
因此,对于我在办公室工作的项目,我有一个.NET应用程序,它将存储数据并从我已经设置的AWS RDS MySQL服务器中检索数据。 我遇到的问题是端口3306没有打开我的工作networking。 当我不在公司networking上时,它工作的很好,所以我知道这不是AWS RDS服务器的问题。 (例如,如果我的热点形成我的电话它的作品)
我已经联系到了networking部门,看看他们可以做些什么来打开这个端口。 他们问我是否有办法为此AWS RDS实例设置静态IP,以便他们可以添加防火墙规则,以允许3306端口只有这个静态IP。 他们只想根据服务器的IP地址打开端口,而不是完全打开端口3306,因为他们说的安全原因。 他们说,如果他们打开3306端口,整个办公networking就会打开,只能打开我的电脑的IP。
我没有在AWS Dashboard上看到有关为我的RDS实例设置静态IP的任何地方。 IT公司表示,需要一个静态IP的原因是,当与提供的端点DNS相关联的IP发生变化时,他们不需要调整防火墙设置以适应这种变化。
1)是否可以在RDS实例上将IP设置为静态? (根据上面的链接,这似乎不可能,但我想问问题包装的东西已经改变,现在是可能的,因为上一篇是从2014年起)
2)是否有可能仅为AWS提供的特定DNS端点打开端口? 我的IT团队说,他们不可能打开一个URL的端口,这必须是一个IP(静态,所以不会改变)。 这是真的,还是有办法解决这个问题? 基于从我的stackoverflowpost的回应 ,他提到,这是可能的:
您可以告诉您的IT团队在RDS实例URL的端口3306中创build防火墙规则,并且工作正常。
是否有任何额外的信息可以提供给我的ITnetworking团队,如果真的有可能帮助他们朝正确的方向发展? 考虑到云托pipe的MySQL服务器的普及,我觉得这是一个非常普遍的任务,我不能成为唯一的这个问题?
谢谢!
这听起来像你有一个相当locking的networking环境,这是不允许出站连接目的地端口3306.“传统”的防火墙将只允许ACL针对IP,而不是DNS名称,所以这听起来像RDS的URL不会为你工作。 这些防火墙运行在第3层和第4层,因此他们没有DNS名称的概念,这是第7层的概念。
如果您的公司阻止与3306的连接,因为它是一个知名的端口,可能他们可能允许您打开到另一个端口的连接。 然后,您可以重新创build您的实例以使用该端口而不是默认值。
如果堵塞是在第3层和第4层实施的一揽子政策,那么你现在可能倒霉了。 您可以对您的实例的IP地址进行DNS查找并将其用于ACL,但该地址可能会更改。
通常情况下,我会说要求他们打开连接只是为了您的客户端系统的IP地址,但正如你所说,他们已经拒绝了。 我假设这是由于使用DHCP为您的系统分配一个地址,而不是一个静态IP。 也许你可以为你的系统申请一个静态的IP地址,或者你可以用一个静态的IP在公司的服务器上运行你的应用程序。 这将允许他们完成他们可能会接受的一对多ACL。
RDS实例没有固定的IP地址,因为这样可以将故障转移提供给其他实例。
您可以将EC2代理服务器放到您的VPC中,在您喜欢的任何端口上,将stream量发送到RDS实例。 这将是一个纯粹通过数据包的TCP代理,Nginx可以做到这一点。 我没有尝试过,但它应该工作。 为EC2实例提供静态IP(AWS中的弹性IP),Nginx可以通过主机名代理RDS实例。 一个t2.nano可能是你所需要的,但是具有更多networking带宽的大型服务器可以提供更好的性能,如果它获得了大量的stream量。
不要忘记打开临时端口范围 。 基本上入站端口32768到61000需要允许来自AWS的stream量返回。
我很好奇为什么你有一个云数据库的内部部署应用程序。 如果您可以在本地运行应用程序,为什么不在本地运行数据库? 或者在AWS中运行应用程序和数据库? 多个应用程序可能会导致数据库不一致,死锁或竞态条件。
如何
您可以阅读更多关于如何在其网站上将 Nginx设置为TCP代理的信息 。 这里有一个关于如何在AWS上设置Tiny Proxy(我从来没有听说过)的指南。
您可能最好短时间聘请AWS顾问来帮助您,因为您还需要考虑安全性。
告诉您的networking人员,AWS使用DNS名称而不是IP来实现故障切换。 他们在企业环境中使用的任何防火墙都能够引用DNS名称而不是IP,所以他们应该能够引用端点DNS名称而不是IP。
如果没有,你可以在一个具有弹性IP的ec2实例上使用haproxy,但是如果这有一个合法的业务用例,我build议试着推动他们使用dns的名字。 Haproxy只是增加了一个失败点。