我正在尝试设置一个设备以使用 mDNS 宣布其服务,并在没有基础设施、路由器或 DHCP 的情况下连接到它。它在树莓派和 OSX 之间完美运行。树莓派(使用主机名'ubuntu.local'运行ubuntu)和英特尔上的ubuntu 14.02之间并非如此。在清除 ubuntu 上的路由之后,这是我最集中的测试的一个运行过程,来自英特尔上的 ubuntu 命令行。
jeff@jeff-OptiPlex-SX280:~$ ip -6 route list
jeff@jeff-OptiPlex-SX280:~$ sudo traceroute -i eth0 ubuntu.local
traceroute to ubuntu.local (fe80::ba27:ebff:fe1a:74e5), 30 hops max, 80 byte packets
connect: Network is unreachable
所以——没有路线,对吧?让我们添加一个并再试一次:
jeff@jeff-OptiPlex-SX280:~$ sudo ip -6 route add fe80::/10 dev eth0
jeff@jeff-OptiPlex-SX280:~$ sudo traceroute -i eth0 ubuntu.local
traceroute to ubuntu.local (fe80::ba27:ebff:fe1a:74e5), 30 hops max, 80 byte packets
1 ubuntu.local (fe80::ba27:ebff:fe1a:74e5%eth0) 0.925 ms 0.988 ms 1.058 ms
现在我有一条路由,并且已经证明 intel 上的 ubuntu 知道 ubuntu.local 的 ipv6 地址,并且可以与之对话。请注意,我强制使用 eth0 接口。让我们在不指定接口的情况下尝试一下,因为我添加的路由应该将所有 fe80* 流量发送到 eth0:
jeff@jeff-OptiPlex-SX280:~$ sudo traceroute ubuntu.local
traceroute to ubuntu.local (fe80::ba27:ebff:fe1a:74e5), 30 hops max, 80 byte packets
connect: Invalid argument
jeff@jeff-OptiPlex-SX280:~$ ssh -6 ubuntu.local
ssh: connect to host ubuntu.local port 22: Invalid argument
没有指定接口,我得到“无效参数”。使用 ssh、wget 等进行的各种测试都返回“无效参数”。如果我再次强制接口,使用附加 %eth0 的树莓派(ubuntu.local)的 ipv6 地址,我可以连接。
jeff@jeff-OptiPlex-SX280:~$ ssh -6 ubuntu@fe80::ba27:ebff:fe1a:74e5%eth0
Password:
Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.18.0-14-rpi2 armv7l)
* Documentation: https://help.ubuntu.com/
Last login: Fri Mar 20 20:56:52 2015 from fe80::20f:1fff:fee2:2c36%eth0
ubuntu@ubuntu:~$ exit
logout
Connection to fe80::ba27:ebff:fe1a:74e5%eth0 closed.
从语法上讲,我似乎无法将接口附加到 mDNS 名称,ssh 会抱怨。似乎“无效参数”是尝试 eth0 以外的其他设备的产物,但我无法确认。我只是错过了 ipv6 路由的要点吗?在这个用例中我没有网关,所以我看到的很多建议都不适用。我尝试让树莓派成为网关,但没有不同的结果。
谢谢你的建议!
-杰夫