为什么在同一网络中使用动态 dns 进行端口转发时连接失败
Why is connection failing when port-forwarding with dynamic dns in same network
我的 raspberry pi 上有一个 MySQL 数据库 运行。
要访问它,当我在我的网络之外时,我使用动态 DNS (duckdns),但是当我在我的网络中时,我想使用相同的动态域名访问它。但是它不起作用,我总是被拒绝连接。
我想以某种方式启用它,这样当我在我的本地网络中时,我不必将 app.config MySQL 服务器地址从我的动态域更改为本地主机。
您需要一个支持 NAT 发夹的网关路由器。许多消费级设备(以及一些所谓的商业级设备)不支持这一点。要么你的没有,要么你需要找到一个选项来启用它。
当您尝试从网络内部连接到 public IP 地址时,路由器可能会假设您想要连接到路由器本身。
我家里的电缆调制解调器的内置路由器知道如何执行此操作。当我从笔记本电脑访问我的服务器,并从内部连接到 public IP 时,路由器(在电缆调制解调器内部)对数据包进行转换,以便我的服务器看到我的连接来自路由器的 IP 地址,不是我笔记本电脑的 IP 地址。
这是必须发生的事情,因为当服务器响应时,它会响应连接到它的机器。如果它响应笔记本电脑的地址,笔记本电脑将拒绝流量,因为它来自服务器的内部 IP,而不是我连接的 IP 地址。因此,它响应路由器,对数据包地址进行第二次转换,用外部 IP 替换服务器的内部 IP。记住先前流量的会话,然后路由器将数据包发送回笔记本电脑。
最终,如果没有路由器的配合,此设置可能无法为您工作,路由器可能不具备该功能。
但是,某些路由器具有允许您创建静态条目的 DNS 代理。我以前的 DSL 调制解调器不能发夹 NAT 连接,但它有一种创建 DNS 条目的方法,该条目将用于响应特定主机的内部 DNS 查询……具有与 DNS 以其他方式提供的 IP 不同的 IP。如果路由器支持,这是另一种解决方法。
我的 raspberry pi 上有一个 MySQL 数据库 运行。 要访问它,当我在我的网络之外时,我使用动态 DNS (duckdns),但是当我在我的网络中时,我想使用相同的动态域名访问它。但是它不起作用,我总是被拒绝连接。
我想以某种方式启用它,这样当我在我的本地网络中时,我不必将 app.config MySQL 服务器地址从我的动态域更改为本地主机。
您需要一个支持 NAT 发夹的网关路由器。许多消费级设备(以及一些所谓的商业级设备)不支持这一点。要么你的没有,要么你需要找到一个选项来启用它。
当您尝试从网络内部连接到 public IP 地址时,路由器可能会假设您想要连接到路由器本身。
我家里的电缆调制解调器的内置路由器知道如何执行此操作。当我从笔记本电脑访问我的服务器,并从内部连接到 public IP 时,路由器(在电缆调制解调器内部)对数据包进行转换,以便我的服务器看到我的连接来自路由器的 IP 地址,不是我笔记本电脑的 IP 地址。
这是必须发生的事情,因为当服务器响应时,它会响应连接到它的机器。如果它响应笔记本电脑的地址,笔记本电脑将拒绝流量,因为它来自服务器的内部 IP,而不是我连接的 IP 地址。因此,它响应路由器,对数据包地址进行第二次转换,用外部 IP 替换服务器的内部 IP。记住先前流量的会话,然后路由器将数据包发送回笔记本电脑。
最终,如果没有路由器的配合,此设置可能无法为您工作,路由器可能不具备该功能。
但是,某些路由器具有允许您创建静态条目的 DNS 代理。我以前的 DSL 调制解调器不能发夹 NAT 连接,但它有一种创建 DNS 条目的方法,该条目将用于响应特定主机的内部 DNS 查询……具有与 DNS 以其他方式提供的 IP 不同的 IP。如果路由器支持,这是另一种解决方法。