我使用 Wi-Fi 工作。由于每次连接到网络时我的系统 IP 都会发生变化。对于我的工作,我需要将我的 IP 映射到特定的域名。因此,我每天都需要更改主机文件以更新 IP。这真的很烦人,我希望必须有一个解决方法。因此,我需要将 IP 范围添加到我的主机文件中的该域名中。有没有办法做到。
答案1
最有可能的是,您实际上并不需要将 DHCP 分配的 IP 地址放入主机文件中。例如,您可能希望能够将浏览器指向http://your-domain-here/
并让本地 Web 服务器对此做出响应。 (与任何其他客户端/服务器设置相同)。在这种情况下,只需将域映射到本地主机 IP,这是任何以 开头的 IP 127.
(我会避免使用 127.0.0.1,因为这可能会为反向查找提供奇怪的答案)。只需选择一个不在您的主机文件中的新主机即可。
另一种选择是选择静态 RFC1918 空间 IP 地址(192.168.xx、10.xxx、172.16–31.xx)并将其添加到本地接口,然后使用该 IP 地址。
如果您确实需要将其映射到当前的 IP 地址,通常可以在某个地方放置 shell 脚本,以便在您的计算机通过 DHCP 获取 IP 地址时运行。如果您使用 dhclient,您可以将脚本放入/etc/dhcp/dhclient-enter-hooks.d/
.有一个dhclient-script(8) 手册页记录它,但类似这样的东西(非常未经测试)可能会起作用(它使用 moreutils 包中的“海绵”):
#!/bin/sh
MY_DOMAIN=your-domain.com
if [ "$reason" != "BOUND" ] && [ "$reason" != "REBIND" ]; then
exit 0
fi
grep -v " $MY_DOMAIN\$" /etc/hosts | sponge /etc/hosts # really should escape the dots in the domain, but probably doesn't matter.
printf '%s %s\n' "$new_ip_address" "$MY_DOMAIN" >> /etc/hosts
这是非常未经测试的。/etc/hosts
在尝试之前请务必先进行备份!
答案2
你写,
我使用 Wi-Fi 工作。由于每次连接到网络时我的系统 IP 都会发生变化。
这两个语句不应连接起来。您的 IP 地址可以手动分配为固定值(“静态”地址),也可以由网络上的 DHCP 服务器动态分配(“动态”地址)。您的系统是通过 WiFi 还是通过电缆连接并不重要;这是获取 IP 地址的两种选择。
更有趣的是,DHCP 服务器可能会配置为在您每次连接到其网络时为您提供相同的 IP 地址(有时非正式地称为“粘性”地址)。这就是我的家庭网络设置方式。
如果您在不同网络之间漫游,则(通常)无法使用静态 IP 地址,因此粘性地址可能是您的最佳方法。
另一方面,如果您所需要做的只是获取域中的主机条目以指向您的客户端系统,您可能需要查找动态 DNS 提供商。一个例子是dyn.com
,但还有很多其他例子需要考虑。您在客户端上安装一个小软件,用于捕获 IP 地址的任何变化,并通知中央服务器。它会为您更新您的域名条目。最后一个难题是,将A
真实域中的记录替换为CNAME
指向 DDNS 域条目(指向您的客户端系统)的记录。
答案3
我要么编写一个循环遍历 IP 地址列表的脚本,将每个地址添加到主机文件中的一行中 - 因为不支持范围,或者 - 在我看来更好 - 在虚拟机上托管您的 Web 应用程序NAT 或仅主机适配器,因此它具有固定的 IP 地址。