要修改主机的解析地址,我们可以更改 /etc/hosts。
我希望在运行单个脚本时无需实际修改 /etc/hosts 即可实现该功能
。
$HOST=foo.bar:10.0.1.256 ping foo.bar
与 /etc/hosts 中的条目相同
10.0.1.256 foo.bar
并且$ ping foo.bar
这可行吗?
答案1
重复的我可以创建一个特定于用户的主机文件来补充 /etc/hosts 吗?,其中解释了 HOSTALIASES 的使用。
本质上,您设置一个 HOSTALIASES 环境变量来指向您自己的主机文件。
更多信息请访问主机名(7) 手册页
答案2
没有用户主机文件,复杂的绑定设置可以将应用程序托管在不同的内部 IP 后面...但是...应用程序应该能够跳过 DNS...
如果您希望对进行 http/https 调用的应用程序执行此操作,则可以完全跳过 DNS。当发出 http 请求时,域被复制到标头,您可以通过覆盖标头来跳过此步骤...
例如;
wget --header="主机:www.example.com" "http://127.0.0.1/bob/is/cool”
这将向 localhost 发送一个 http 请求,但是该 http 请求将针对 www.example.com,而不是 127.0.0.1...
(绕过 dns 并对正确的域进行有效的 http 调用)。
如果由于某种原因它是一个备用 tcp 服务,没有像请求中的主机那样的标识符,那么疯狂的绑定设置将起作用(拒绝应用程序的 src ip,它将在不同的 dns 服务上解析)。
另一个解决方案是使用内核防火墙......
将应用程序拆分到不同的 lan 或环回地址,然后您将能够根据源数据包地址 DNAT 到不同的 IP...