为什么在同一网络中使用动态DNS进行端口转发时连接失败

时间:2015-04-17 01:16:08

标签: mysql dns

我在我的覆盆子pi上运行了一个MySQL数据库。 为了访问它,当我在我的网络之外时,我使用动态DNS(duckdns),但是当我在我的网络中时,我想用相同的动态域名访问它。但它不起作用,我总是拒绝连接。

我想以某种方式启用它,这样当我进入本地网络时,我就不必将app.config MySQL服务器地址从我的动态域更改为localhost。

1 个答案:

答案 0 :(得分:1)

您需要一个支持NAT发夹的网关路由器。许多消费级单位(以及一些据称是商业级设备)不支持这一点。你自己没有,或者你需要找一个启用它的选项。

当您尝试从网络内部连接到公共IP地址时,路由器可能会假定您要连接到路由器本身。

我家的有线调制解调器的内置路由器了解如何做到这一点。当我从笔记本电脑访问我的服务器,并从内部连接到公共IP时,路由器(在电缆调制解调器内)对数据包进行转换,以便我的服务器看到我的连接来自路由器的IP地址,而不是我的笔记本电脑的IP地址。

这是必须发生的事情,因为当服务器响应时,它将响应连接到它的机器。如果它响应笔记本电脑的地址,笔记本电脑会拒绝流量,因为它将来自服务器的内部IP,而不是我连接的IP地址。因此,它响应路由器,路由器对数据包地址进行第二次转换,用外部IP替换服务器的内部IP。记住先前流量的会话,然后路由器将数据包发送回笔记本电脑。

最终,如果没有路由器的复杂性,这种设置可能不适合您,而路由器可能没有这种功能。

但是,某些路由器具有DNS代理,允许您创建静态条目。我以前的DSL调制解调器无法发送NAT连接,但它有一种方法可以创建DNS条目,用于响应特定主机的内部DNS查询...使用与DNS提供的IP不同的IP。如果路由器支持它,这是另一种解决方法。