该HOSTALIASES环境变量允许用户设置,而不必自己主机别名sudoedit /etc/hosts(更多详情,例如在http://blog.tremily.us/posts/HOSTALIASES/)
但是,使用/etc/hostsI 可以将 IP 地址别名为名称,将名称别名为名称,而HOSTALIASES似乎只能使用名称到名称别名。
我试过:
cat > .hosts
work 10.10.0.1
g www.google.com
^D
export HOSTALIASES=$PWD/.hosts
Run Code Online (Sandbox Code Playgroud)
现在
curl g #works
curl 10.10.0.1 #works
curl work #doesn't work
Run Code Online (Sandbox Code Playgroud)
我可以curl work在不需要编辑我没有写入权限的文件 ( /etc/hosts) 的情况下工作吗?
yae*_*shi 16
HOSTALIASES功能由gethostbyname()glibc 中的解析器功能提供。在此函数中,别名查找结果按原样传递给hosts:in指定的后续 libnss 模块调用/etc/nsswitch.conf,因此如果没有可以处理它的模块,gethostbyname()将以失败告终。
请注意,在大多数程序中,数字地址符号如10.10.0.1和2a00:1450:400c:c05::67由inet_aton() inet_pton() getaddrinfo()before处理gethostbyname()。
一些 DNS 服务器,包括 dnsmasq,使用数字地址字符串向查询返回有效地址记录,就像inet_aton()应用于它一样:例如,它们返回 A 记录10.10.0.1以查询 FQDN 10.10.0.1.。但是,包括 BIND 在内的其他服务器只为此类查询返回 NXDOMAIN。所以你不能依赖这个来定义work 10.10.0.1你HOSTALIASES作为/etc/hosts.
一种可能的解决方法是利用像xip.io这样的公共 DNS 服务来获取任意 IPv4 地址的可解析 FQDN。例如,你可以定义work为10.10.0.1这样的:
work 10.10.0.1.xip.io
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16737 次 |
| 最近记录: |