所以我希望能够21通过一个 IP 地址在端口外托管许多 FTP 服务器。这是设置:
- 如果这个人连接
ftp1.example.com到内部服务器地址是10.0.0.1. - 如果这个人连接
ftp2.example.com到内部服务器地址是10.0.0.2. - ETC...
但是ftp1.eample.comandftp2.example.com都指向同一个外部 IP 地址。
有什么方法可以解决这个问题?
所以我希望能够21通过一个 IP 地址在端口外托管许多 FTP 服务器。这是设置:
ftp1.example.com到内部服务器地址是10.0.0.1.ftp2.example.com到内部服务器地址是10.0.0.2.但是ftp1.eample.comandftp2.example.com都指向同一个外部 IP 地址。
有什么方法可以解决这个问题?
您描述的功能是反向代理的功能,这对于 HTTP 来说相对常见,但在RFC 7151引入 HOST 命令之前对于 FTP 是不可能的。因此,在您的场景中,与 RFC 7151 兼容的 FTP 客户端可以连接到公共 IP 地址,发送指示要连接的服务器名称的 HOST 命令,并根据该信息,在公共 IP 地址上运行的反向代理可以然后连接到正确的内部服务器。
这是一个常见的场景。这不是路由问题,而是名称解析问题。
无论您是托管自己的域还是使用第三方,DNS 记录都需要将域名解析为 IP 地址。
一种常见的方法是 - A 记录(也称为主机记录)将域链接到托管该域服务的计算机的物理 IP 地址。
CNAME(别名)记录指向 A(主机)记录。您可以创建多个 CNAME 记录并将它们指向一个 A 记录。最常见的 CNAME 记录是子域 www 和 ftp。
使用这种方法,您可以使用单个 IP 地址在一台机器上托管多个服务。
如果 ftp 服务器驻留在带有 RFC1918 地址的不同设备上,反向代理可以充当网关,接收来自 Internet 的请求并将它们转发到内部网络上的服务器。
您可以通过使用不同的 tcp 端口来做到这一点。您应该使用如下端口转发配置您的路由器: ftp1.example.com:3000 ----> 10.0.0.1 ftp2.example.com:3001 ----> 10.0.0.2
如果你有 cisco 路由器,你可以使用 NAT Outside。如果您有 DSL 调制解调器路由器,您应该找到端口转发部分并创建这些规则。