![如何将硬编码的 IP 地址重定向到主机名](https://linux22.com/image/1455884/%E5%A6%82%E4%BD%95%E5%B0%86%E7%A1%AC%E7%BC%96%E7%A0%81%E7%9A%84%20IP%20%E5%9C%B0%E5%9D%80%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E4%B8%BB%E6%9C%BA%E5%90%8D.png)
我有一台设备(IP 电话),只允许显式 IP 地址联系远程服务器。但是,远程服务器的 IP 地址可以更改(它是动态分配的)。
我认为一定有一种方法可以将 IP 电话连接到能够进行这种映射的廉价路由器,但我不知道该如何进行,因为(据我所知)您在路由器中指定的规则也使用硬编码的 IP 地址。
有人知道怎么做吗?非常感激您的指导。
答案1
啊,我明白,您只能对 PBX 地址使用点分十进制格式。
通常,在编程世界中,“硬编码 IP“是直接写入代码中的特定地址,根本无法更改。抱歉造成混淆。
在这种情况下,确实有一些选择,包括VPN或虚拟专用服务器运行反向代理,结合动态 DNS提供者(以及支持它的路由器)你可能根本不需要携带路由器旅行。
如果您的手机支持 VPN 客户端,您可以建立指向家庭网络的 DDNS 名称的 VPN 连接。这会将您的手机连接到 LAN,就像您直接插入 LAN 一样。然后,您可以通过 LAN 上的私有地址访问 PBX 服务器。如果您的手机不支持本地 VPN 客户端,您可以在您所在的位置使用廉价路由器创建一个站点到站点通过手机 VPN 链接到家里。
考虑一下这种情况:
home public IP: 1.2.3.4
DDNS name: pbx.mynet.net --> 1.2.3.4
PBX IP: 10.0.1.1
你需要在你的路由器,并将电话 VPN 客户端连接到“pbx.mynet.net”,并在您的 IP 电话 PBX 服务器地址中设置 10.0.1.1。
|phone| >10.0.0.1> {|VPN| >pbx.mynet.net=1.2.3.4> |router|} >10.0.1.1> |PBX|
另一个选择是使用具有公共 IP 的 VPS。你可以设置一个反向代理将端口 x 上的流量重定向到您的 DDNS 名称。
LAN public IP: 1.2.3.4
VPS IP: 4.3.2.1
DDNSName: pbx.mynet.net --> 1.2.3.4
proxy redirect: :1234 --> pbx.mynet.net:1234
PBX LAN address: 10.0.1.1
您需要将手机的 PBX 服务器地址指向 4.3.2.1。当 VPS 收到数据包时,它会将其转发到 1.2.3.4,然后您的端口转发规则会将数据包转发到 PBX 服务器。
|phone| >4.3.2.1> |VPS| >pbx.mynet.net=1.2.3.4> |Router NAT| >10.0.1.1> |PBX|
答案2
我从未尝试过,但是我读到过可以使用 PTR 记录将 IP 地址映射到主机名:
http://www.itworld.com/article/2833006/networking/how-to-setup-reverse-dns-and-ptr-records.html
http://help.dnsmadeeasy.com/managed-dns/dns-record-types/ptr-record/
此外,如果您的家用路由器不支持,也许您可以将 DD-WRT 固件刷入其中,并为自己提供更多路由选项。如果做不到这一点,您可以构建自己的路由器并以此方式实现自己的 PTR 记录。
希望这可以帮助!
答案3
我相信这可以通过使用 SNAT(即源 NAT)来实现,方法是为一个路由器端口(虚拟或非虚拟)提供 IP 地址 10.0.1.1,并将其上的 SNAT 设置为您的公共 IP 地址。OpenWRT 确实有一个干净的基于浏览器的 UI 来执行所有这些操作,您可以在其网站上阅读有关设置等的信息https://openwrt.org/docs/guide-user/firewall/firewall_configuration
免责声明:我自己从未使用过 SNAT,因此无法提供更多信息。