问题:服务器上有一个服务,其 IP 地址不断变化,但主机名不变(Dyndns 或类似)。但想要使用该服务的客户端设备只能通过 IP 访问它,而不能通过主机名访问。如何解决这个问题?
简单的部分是设备位于本地网络中,具有 Windows 服务器(恒定 IP)和 Mikrotik 路由器(也是恒定 IP)。所以我在考虑两种可能的解决方案:Mikrotik magic 端口转发到外部主机(有类似的东西吗?)或 Windows 机器上的一个小应用程序将端口转发到已知主机(它存在吗?)。请指教。
答案1
经过几个晚上的挖掘,它看起来比我想象的要容易:socat
windows 机器上的 good'ol 就是答案。因此,windows 机器成为端口转发器(并且其 IP 可以在设备中使用):
socat tcp-l:local-port,fork,reuseaddr tcp:remote-host:remote-port
例如:
socat tcp-l:80,fork,reuseaddr tcp:google.com:80
模式下的 Socattcp-listen
按需建立连接,显然每次都将主机名解析为地址(检查修改 hosts 文件)。fork
和reuseaddr
选项tcp-listen
不是硬核需要的,使命令在出现问题时更顺畅地运行。