/etc/hosts 中的 ipv6 链接本地地址

/etc/hosts 中的 ipv6 链接本地地址

我正在尝试通过 ipv6 ssh 到我 LAN 上的服务器。为了节省时间并且不输入, ssh fe80::301b:7acc:bc33:a191%wlp1s0我尝试在 中定义主机/etc/hosts

问题是,使用链接本地地址时,您需要指定接口,但是当我尝试添加

fe80::301b:7acc:bc33:a191%wlp1s0 ubuntu

然后运行ssh ubuntu

我明白了

$ ssh ubuntu ssh: connect to host ubuntu port 22: Invalid argument

我也无法 ping 通 ubuntu,但如果我 ping 通ping -I wlp1s0 ubuntu它就可以工作。

那么问题是如何通过链接本地 ipv6 地址指定主机?也许我应该做些除了编辑 /etc/hosts 之外的事情?

我宁愿不运行 DNS 服务器或其他一些“繁重”的解决方案:)我只需要在最后指定一个主机。

谢谢。

答案1

找到了,所以我会在这里为像我这样的未来可怜的用户留下答案。

总结

因此,为了使名称解析正常工作,需要通过编辑来激活 LLMNR

/etc/systemd/resolved.conf并在您希望解析主机名的所有主机上取消注释该行LLMNR=yes并重新启动相应的服务。sudo systemctl restart systemd-resolved.service

较长的答案。如所述https://unix.stackexchange.com/questions/452527/ipv6-link-local-address-in-etc-hosts?noredirect=1&lq=1 基本上因为 glibc(所有使用软件的网络都将使用对该库的调用,例如参见 getaddrinfo(3)),使用 /etc/hosts 文件是没有意义的。但应该使用 LLMNR。在撰写本文时,默认情况下,Ubuntu 20.10 中 LLMNR 未默认启用,因此应该手动启用它。您可以在所有希望自动解析的主机名上执行此操作。

一些阅读 man systemd-resolved.service resolvectl solved.conf

相关内容