我正在为我的家人开发一款应用程序,该应用程序使用套接字在 LAN 或 WAN 中的设备之间进行通信。由于 IP 地址不断变化,我计划使用 FTP 服务器来存储地址簿,并使用 TCP/IP 进行通信。
我的问题:
从 WAN 连接到 LAN。我认为应该将路由器设置为允许从外部连接到 LAN 上的端口。如何做到这一点?
答案1
是的,大多数家庭 NA[P]T 网关路由器允许您指定“端口映射”、“端口转发”规则,有时甚至称为“虚拟服务器”,其中从 WAN 到路由器的 WAN IP 地址上的某个 TCP 或 UDP 端口的连接被转发到服务真正所在的 LAN 私有 IP 地址和端口。
在 FTP 示例中,端口 21/TCP 通常用于传入控制连接,因此您需要在路由器中输入端口映射,以将端口 21/TCP 从路由器的 WAN 地址转发到 LAN 私有 IP 地址和端口您正在运行 FTP 服务器(例如 192.168.1.2:21)。
因此,当在 WAN 上时,您会告诉您的 FTP 客户端连接到路由器的 WAN IP 地址,而您最终会连接到实际上位于 NAT 后面的不同地址的 FTP 服务器。
请注意,FTP 是一种在 NAT 后面工作的非常棘手的协议。如果您的 NAT 网关具有 FTP“ALG”(应用层网关)代码,该代码知道如何处理 NAT 后面的 FTP 服务器,这将有所帮助。您会看到,当 FTP 客户端位于 NAT 后面时,使用 FTP 被动(PASV)模式可以使 FTP 通过 NAT 工作。但是当 FTP服务器位于 NAT 后面,即使对 21/TCP 进行了必要的端口映射,被动模式也会失效,而主动模式则可以正常工作。如果 FTP 客户端位于一个 NAT 后面,而 FTP 服务器位于另一个 NAT 后面,则您肯定需要在一个或两个 NAT 中使用 FTP ALG。