我有一个通信应用程序,它有一个服务器端组件,需要已知的 IP 地址或名称(例如 www.commserver.com)才能进行通信。对于局域网外的通信,这必须是公开可见的地址。此组件通常在客户端 PC 上运行,客户端 PC 上没有专用服务器。
我过去解决这个问题的方法是使用具有固定 IP 地址的 DSL 帐户,并在路由器上使用 IP 直通将此地址分配给特定客户端 PC。这会导致 PC 在 LAN 的其余部分不再可见。我相信有一种更简单的方法可以做到这一点,但不知道如何做。有什么想法吗?
答案1
我不确定这是正确的答案,但我会尝试一下。您提到了固定 IP,获得它的唯一方法是从您的 ISP 获取固定 IP。
但是如果您需要一个固定的主机名(更有可能),那么您可以使用 EveryDNS 或 DynDNS 等服务来获取一个当您的 IP 地址改变时也会改变的主机名。
此外,如果您正在运行防火墙/路由器;您可以使用端口转发将端口转发到正确的 PC。您需要将正确的端口转发到 PC。
最后,您可以使用 DMZ 转发未知端口,但它与您本地网络上的其他计算机隔离 - 这就是 DMZ 的定义。
希望这对您有帮助,但如果您有任何疑问,请告诉我。
答案2
你可以试试动态域名服务器。它将使您能够将动态 IP 与 DNS 地址(由 DynDns 提供给您)连接起来。它最多只需要您这边的一个小工具。如果您可以访问路由器,那么它会变得更加简单,因为几乎所有路由器都支持它。
答案3
端口转发应该可以帮您解决这个问题。
例如,我有一个外部静态 IP 24.127.38.211。此 IP 将带您进入我的路由器。
在我的网络中,我有几个机器,它们都具有静态“内部”IP。特定服务器的地址是 10.1.10.22。我已将路由器配置为将端口 3389 发送到该静态 IP。
这意味着连接到 24.127.38.211:3389 将会把您发送到那台机器。
另一个例子。我在另一台机器的 333 端口上运行一个文件共享应用程序,其静态 IP 为 10.1.10.25。我创建了一个转发规则,将所有对 333 端口的请求发送到该 IP。因此,连接到 24.127.38.211:333 会将您发送到我网络内的正确机器。
我真的不擅长解释……但是谷歌端口转发可以试一试。除非我遗漏了什么,否则我相信这会对你有所帮助。
答案4
我认为我们忽略了他的问题的第二部分:
这会导致 PC 在 LAN 的其余部分上不再可见的问题。
听起来他了解端口转发(IP 直通),但大多数防火墙不喜欢内部客户端指向外部地址,然后通过防火墙转发回来。您需要做的是为网络上的其他 PC 提供一种方法来将主机名解析为 PC 的内部 IP 地址,而外部客户端则解析公共 IP 地址。如果网络足够大,可以拥有内部 DNS 服务器,那么这是最简单的选择。由于听起来您正在小型网络上工作,因此网络中每台 PC 上的主机文件可能是您唯一的选择。