NetworkManager 多線連接問題
我有一台通過 DHCP 連接到路由器並且處於完全工作狀態的電腦,我在僅連結模式下添加樹莓派零時遇到問題。首先,我可以通過編輯從 DHCP 到僅連結的連接來連接 pi,但隨後我顯然失去了網際網路,因為我一次只能連接一個有線設備,而且它們不像我的主乙太網連接那樣 DHCP。然後,我雖然添加一個帶有僅連結集的新連接是一項簡單的工作,我可以用它來連接 pi,同時保持我的網際網路完好無損,但這就是問題開始的地方,我能夠建立連接,但出於某種原因無法將其分配給 pi,我收到兩條不同的消息,一條是
activation of network connection failed
,另一條是Unable to find a connection with UUID ('null')
.我搜尋了網際網路,並沒有在我執行的其中一個返回連接列表的文章中找到很多建議,
nmcli c show
而這裡的新連接似乎都有一個 UUID。我被這個問題困住了,希望能得到任何幫助。
如何通過網路管理器
nmcli
為通過在 OTG 模式下執行的 USB 埠連接到主機 PC 的 Raspberry Pi 設置網路。
nmcli
我通過命令行界面使用網路管理器成功地將橋接網路設置為 Raspberry Pi Zero 。樹莓派設置
我按照上面評論中列出的這些說明設置了用於 OTG 乙太網連接的 Pi。
修改 Pi 的 MiniSD 卡的文件系統
將以下內容添加到 SD 卡的
/boot/config.txt
# Enable USB OTG like ethernet dtoverlay=dwc2
ssh
在 SD 卡的/boot
目錄中創建一個名為的空文件touch ssh
/boot/cmdline.txt
並通過將以下內容添加到 SD 卡的後面,將 OTG 乙太網模組附加到引導載入程序rootwait
` modules-load=dwc2,g_ether `
設置主機 PC 網橋
然後我在我的 PC 的有線乙太網埠上設置了一個橋接網路介面。
nmcli con add type bridge ifname br0 nmcli con modify bridge-br0 bridge.stp no nmcli con add type bridge-slave ifname eth1 master bridge-br0
使用 Pi 上的 OTG 埠將 Raspberry Pi Zero 插入 PC。使用檢查介面名稱
ifconfig.
然後將OTG介面添加到網橋。nmcli con add type bridge-slave ifname enp0s29f7u1u4u3 master bridge-br0
一切就緒後,我啟用了連接:
nmcli con up bridge-br0 nmcli con up bridge-slave-eth1 nmcli con up bridge-slave-enp0s29f7u1u4u3
驗證所有介面為綠色
nmcli connection
root@local:/etc/ssh# nmcli con NAME UUID TYPE DEVICE bridge-br0 ab1fab48-2c31-4ccc-90bf-db444751c080 bridge br0 bridge-slave-enp0s29f7u1u4u3 5efed614-89c7-48d4-996e-0a2e6e616846 802-3-ethernet enp0s29f7u1u4u3 bridge-slave-eth1 53c4d66a-3f9e-49f4-b954-92b13ecf96f8 802-3-ethernet eth1
觀看 DHCP 伺服器獲取 Raspberry Pi 地址
然後看著我的 DHCP 伺服器為樹莓派分配網路地址。根據您的配置,該資訊將通過您的路由器提供。SSH 到 Pi 成功:
SSH 進入 Pi
root@local:/etc/ssh# ssh pi@192.168.xxx.xxx pi@192.168.xxx.xxx's password: The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Wed Nov 1 19:33:48 2017 from 192.168.xxx.xxx pi@raspberrypi:~ $ uname -a Linux raspberrypi 4.4.38+ #938 Thu Dec 15 15:17:54 GMT 2016 armv6l GNU/Linux pi@raspberrypi:~ $ ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:724 errors:0 dropped:0 overruns:0 frame:0 TX packets:724 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:58980 (57.5 KiB) TX bytes:58980 (57.5 KiB) usb0 Link encap:Ethernet HWaddr 8e:31:5b:06:db:bb inet addr:192.168.xxx.xxx Bcast:192.168.xxx.xxx Mask:255.255.255.0 inet6 addr: fe80::xxx:/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:756 errors:0 dropped:0 overruns:0 frame:0 TX packets:430 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:90941 (88.8 KiB) TX bytes:76278 (74.4 KiB) pi@raspberrypi:~ $ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.xxx.xxx 0.0.0.0 UG 202 0 0 usb0 192.168.xxx.0 * 255.255.255.0 U 202 0 0 usb0 pi@raspberrypi:~ $ sudo -s root@raspberrypi:/home/pi# ping unix.stackexchange.com PING unix.stackexchange.com (151.101.65.69) 56(84) bytes of data. 64 bytes from 151.101.65.69: icmp_seq=1 ttl=55 time=27.2 ms 64 bytes from 151.101.65.69: icmp_seq=2 ttl=55 time=7.91 ms 64 bytes from 151.101.65.69: icmp_seq=3 ttl=55 time=6.40 ms 64 bytes from 151.101.65.69: icmp_seq=4 ttl=55 time=6.78 ms 64 bytes from 151.101.65.69: icmp_seq=5 ttl=55 time=7.87 ms ^C --- unix.stackexchange.com ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4006ms rtt min/avg/max/mdev = 6.404/11.240/27.219/8.012 ms root@raspberrypi:/home/pi#
附錄
在閱讀了 Pi OTG 網路說明的第 2 部分後,我將添加他們提供的組件以永久設置 Pi 的 MAC 地址。使用永久 MAC 地址,您的 DHCP 伺服器和/或路由器將在每次重啟 RPi 時停止提供連續的 IP 地址。
webonomic 說:
您可以通過在 pi 的引導分區上將其附加到 cmdline.txt 來執行此操作:
g_ether.host_addr=8a:3e:d4:ce:89:53
建立連接後,只需從筆記型電腦的 ifconfig 命令中獲取地址即可。
他們繼續提到將 Pi 的配置從 DHCP 更改為靜態 IP。但是,我不建議這樣做。我總是建議在網路的 DHCP 伺服器上設置靜態租約。這樣,只需修改 DHCP 伺服器即可重新設計您的網路。還有一些有用的方法可以劃分子網,以限制其他主機對某些主機的訪問。
大多數現代家庭路由器都允許設置靜態租約。最好利用 DHCP 伺服器的全部功能。
補充筆記
我發現設置 g_ether.host_addr 不足以為 Pi 提供恆定的 MAC 地址。設置 g_ether.dev_addr 的第二個要求
小工具文件還建議設置製造商和產品編號。
Linux-USB 小工具 API 框架說:
為了更好地支持 DHCP、ZCIP 和相關的網路自動配置,您需要管理乙太網地址,以便每個外圍設備在每次啟動時都重複使用相同的唯一地址。您應該使用已註冊的 IEEE 802 公司 ID 分配這些地址;這也將使設備在 Linux 主機中顯示為“ethN”介面,而不是“usbN”。如果您使用的是 U-Boot 等引導韌體,則無需單獨的 ID PROM(或 initrd)即可輕鬆完成此操作:
*#* manufacturing assigns Ethernet addresses; company id is xx:xx:xx setenv eth_a_host xx:xx:xx:01:23:45 setenv eth_a_gadget xx:xx:xx:67:89:ac setenv eth_i_vendor "Great Stuff, LLC" setenv eth_i_product "Our Cool Thing" setenv eth_args g_ether.host_addr=\$(eth_a_host) setenv eth_args $(eth_args) g_ether.dev_addr=\$(eth_a_gadget) setenv eth_args $(eth_args) g_ether.iManufacturer=\$(eth_i_vendor) setenv eth_args $(eth_args) g_ether.iProduct=\$(eth_i_product) *#* you can assign USB vendor/product/version codes too... setenv add_eth_args setenv bootargs $(eth_args) \$(bootargs) ... setenv bootcmd run add_eth_args\;bootm
這些參數也可以附加到
cmdline.txt
DHCP 伺服器以更好地使用。