一个命令的主机解析设置?

一个命令的主机解析设置?

要修改主机的解析地址,我们可以更改 /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...

相关内容