问题:如何设置两台机器,以便当我用以太网电缆将它们直接连接在一起时,一台机器可以连接到另一台机器?我正在寻找一种不涉及设置静态 IP 地址的解决方案。
动机:我有一个 Raspberry Pi,它在无法通过以太网访问互联网的位置使用连接的传感器进行测量。我希望能够将笔记本电脑插入 Pi 并从中传输数据,而无需关闭 Pi。我想避免使用静态 IP,这样我就不必在每次需要插入 Pi 时更改笔记本电脑的配置。另外,我偶尔想将 Pi 重新连接到有线以太网连接,将其插入,并在其上运行软件更新,而无需更改 Pi 上的设置。
我尝试过的:我按照上面列出的步骤进行操作拱门维基和这篇博文用于设置 Avahi 以使用.local
TLD。目前,笔记本电脑使用 Arch Linux,而 Pi 使用 Ubuntu Mate。我avahi-daemon
在安装了库的两个系统上运行nss-mdns
。在笔记本电脑上,我编辑了主机行/etc/nsswitch.conf
以读取
hosts: files mdns_minimal [NOTFOUND=return] dns myhostname
我所看到的:首次插入以太网电缆时,avahi-browse -alr
显示
+ enp1s0 IPv6 rpi2b0 [b8:27:eb:65:2e:43] Workstation local
= enp1s0 IPv6 rpi2b0 [b8:27:eb:65:2e:43] Workstation local
hostname = [rpi2b0.local]
address = [fe80::ba27:ebff:fe65:2e43]
port = [9]
txt = []
几分钟后,avahi-browse -alr
重新运行时找不到 Pi。当 Pi 被 找到时avahi-browse
,它也能被 找到avahi-resolve
,但是一旦没有找到,avahi-browse
它就不再被 找到avahi-resolve
。运行ping rpi2b0.local
显示ping
解析rpi2b0.local
为 列出的 IPv6 地址,avahi-browse
但结果为Address unreachable
。ssh
给出错误:debug1: connect to address fe80::ba27:ebff:fe65:2e43 port 22: Invalid argument
.
答案1
您可以通过以太网电缆将 PC 和 RPi 连接在一起,这将创造两者之间的专用网络。
维基百科页在这样的网络上:
在 IPv4 中,链路本地地址被编入 RFC 6890 和 RFC 3927 中。当动态主机配置协议 (DHCP) 服务不可用并且不希望由网络管理员进行手动配置时,它们的用途是由网络设备进行自我自动配置。
块 169.254.0.0/16 是为此目的而保留的,该范围内的第一个和最后一个 /24 子网除外。如果 IEEE 802(以太网)网络上的主机无法通过 DHCP 获取网络地址,则可能会伪随机分配从 169.254.1.0 到 169.254.254.255 的地址。该标准规定必须妥善处理地址冲突。
这意味着您的两台机器都应该位于 169.254.0.0 地址空间中。
然后我找到了几篇博客文章,引导您了解如何让这两者进行交流:
https://pihw.wordpress.com/guides/direct-network-connection/
http://embeddedday.com/projects/raspberry-pi/basics/direct-connection-to-pc/
如果你在苹果系统,选择以太网卡,DHCP,您应该会被分配一个私有IP地址,如下所示:
如果你在Linux,打开 GNOME 设置,选择适配器接口,然后将 IPv4 / IPv6 方法更改为仅链接本地。
基本上,您需要在 RPi 上编辑文件/boot/cmdline.txt
并在配置行末尾添加您想要用于 RPi 的 IP。
ssh
然后,重新启动 RPi,当然,如果您已进行设置,您应该能够通过 来连接它。