我正在尝试配置我的新“袖珍小猎犬”与我的 Ubuntu (20.04) 笔记本电脑共享网络连接。 PocketBeagle 运行 Debian 版本:10.3/2020-04-06 (参考文献)。
“袖珍小猎犬”既没有 WiFi 也没有以太网——只有一个 USB 端口。它支持ssh
,我可以通过两个IP中的一个或两个以这种方式访问开发板。如果我这样展示的话也许会更容易:
ifconfig
运行“袖珍小猎犬”揭示了:
$ ifconfig
usb0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.7.2 netmask 255.255.255.0 broadcast 192.168.7.255
inet6 fe80::6264:5ff:fefa:813a prefixlen 64 scopeid 0x20<link>
ether 60:64:05:fa:81:3a txqueuelen 1000 (Ethernet)
...
usb1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.6.2 netmask 255.255.255.0 broadcast 192.168.6.255
inet6 fe80::6264:5ff:fefa:813e prefixlen 64 scopeid 0x20<link>
ether 60:64:05:fa:81:3e txqueuelen 1000 (Ethernet)
...
ifconfig
运行“乌班图”揭示了:
$ ifconfig
enx606405fa813b: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.7.1 netmask 255.255.255.0 broadcast 192.168.7.255
inet6 fe80::2267:92a0:a191:297d prefixlen 64 scopeid 0x20<link>
ether 60:64:05:fa:81:3b txqueuelen 1000 (Ethernet)
...
enx606405fa813d: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.6.1 netmask 255.255.255.0 broadcast 192.168.6.255
inet6 fe80::3898:bc86:d0c2:cb53 prefixlen 64 scopeid 0x20<link>
ether 60:64:05:fa:81:3d txqueuelen 1000 (Ethernet)
...
通过一些研究,我制定了一个实现共享的程序,如下所示:
使用“乌班图”图形用户界面,我改变了“以太网连接”
60:64:05:FA:81:3D
默认情况下带有 MAC“自动 DHCP”到一个“共享连接”。192.168.6.1
这改变了其分配的IP地址“袖珍小猎犬”到10.42.0.1
。
进行此更改后,以下是“乌班图”其 CLI 报告:
$ ifconfig
enx606405fa813d: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.42.0.1 netmask 255.255.255.0 broadcast 10.42.0.255
inet6 fe80::3898:bc86:d0c2:cb53 prefixlen 64 scopeid 0x20<link>
ether 60:64:05:fa:81:3d txqueuelen 1000 (Ethernet)
...
- 此时,界面上“袖珍小猎犬”没有改变,但对于连接共享来说显然是不正确的。我从 CLI 执行了以下命令“袖珍小猎犬”
$ sudo connmanctl config usb1 --ipv4 manual 10.42.0.2 255.255.255.0 10.42.0.1 --nameservers 10.42.0.1
[sudo] password for debian:
Error usb1: Method "SetProperty" with signature "sv" on interface "net.connman.Service" doesn't exist
尝试使用以下命令查询服务connmanctl
:
$ sudo connmanctl
Error getting VPN connections: The name net.connman.vpn was not provided by any .service files
connmancconnmanctl> services
connmanctl>
我一点也不熟悉connmanctl
,但我的研究表明这是正确设置 DNS 服务的唯一方法。也许我搞砸了?也许我还错过了什么?然后我决定尝试“旧方式”配置:
- 以下命令序列用于重新配置相应的“袖珍小猎犬”“旧方式”界面:
$ sudo ifconfig usb1 10.42.0.2 netmask 255.255.255.0 up
$ sudo route add default gw 10.42.0.1 usb1
$ sudo nano /etc/resolv.conf
#
# add line: nameserver 10.42.0.1
# save & exit editor
#
# yes - this is an awful kludge, but it did provide DNS
这成功了!- 这“袖珍小猎犬”成功连接到互联网,DNS 也工作了。
debian@beaglebone:~$ ping unix.stackexchange.com
PING unix.stackexchange.com (151.101.1.69) 56(84) bytes of data.
64 bytes from 151.101.1.69 (151.101.1.69): icmp_seq=1 ttl=56 time=9.01 ms
64 bytes from 151.101.1.69 (151.101.1.69): icmp_seq=2 ttl=56 time=11.8 ms
...
问题:显然问题在于我的使用connmanctl
,而不是“袖珍小猎犬”本身。我做错了什么 - 为什么不能connmanctl
按预期工作?
答案1
我的 Pocketbeagle 也遇到过类似的问题。默认配置由 dnsmasq 组成,它充当本地 dns 服务器。每当您默认连接时,它都无法访问互联网,并提供自己的 DNS 以允许访问默认的 Cloud9 IDE。
我的临时修复是运行:
sudo dhclient -r <usb0 or usb1>
。
这应该会自动从主机 PC 获取并临时配置 DNS。每次重新启动 pocketbeagle 时都必须重新运行该命令。据我所知,connmanctl 不管理 Pocketbeagle 上的 DNS因此,设置名称服务器可能不会对bone-ubuntu 映像或bone-debian 产生任何影响。
要自动运行 DNS 解析器,您需要安装systemd-resolved
并启用该服务,以便它在启动时启动。这通常是我用来访问互联网的方法。