我正试图通过ipv6访问局域网上的服务器。为了节省时间而不是键入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
我也不能平不动,BUt,如果我做了ping -I wlp1s0 ubuntu,那么它就能工作。
因此,问题是如何通过链接本地ipv6地址来指定主机?也许我应该做点什么,而不是编辑/等/主持人?
我宁愿不运行DNS服务器或其他“繁重”的解决方案:)我只需要在最后指定一个主机。
谢谢。
发布于 2021-03-24 20:08:06
找到了,所以我会在这里给像我这样的贫穷用户留下一个答案。
TL;DR
因此,为了正确命名分辨率,需要通过编辑激活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/host文件。但是,我们应该使用LLMNR。在Ubuntu20.10中,默认情况下LLMNR默认不启用,因此应该手动启用LLMNR。您将在所有希望被自动解析的主机名上执行此操作。
一些读入人系统-解析。服务解析器resolved.conf
https://askubuntu.com/questions/1325558
复制相似问题