我正在尝试通过 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