DHCP를 통해 라우터에 연결되어 있고 완벽하게 작동하는 컴퓨터가 있는데 링크 전용 모드에서 Raspberry Pi Zero를 추가하는 데 문제가 있습니다. 처음에는 DHCP에서 링크로만 연결을 편집하여 파이에 연결할 수 있었지만 한 번에 하나의 유선 장치만 연결할 수 있었고 기본 이더넷 연결과 같은 DHCP가 아니었기 때문에 분명히 인터넷이 끊어졌습니다. 그런 다음 링크 세트만으로 새 연결을 추가하는 것은 간단한 작업이었지만 이를 사용하여 인터넷을 그대로 유지하면서 파이에 연결할 수 있었고 여기서 문제가 시작되었습니다. 연결을 설정할 수 있었지만 to some 어떤 이유로 파이에 자신을 할당할 수 없습니다. 두 개의 다른 메시지가 표시됩니다. 하나는 이고 activation of network connection failed
다른 하나는 입니다 Unable to find a connection with UUID ('null')
.
인터넷을 검색했지만 nmcli c show
연결 목록을 반환한 게시물에서 제안된 내용을 찾지 못했습니다. 여기서 새 연결에는 모두 UUID가 있는 것 같습니다. 이 문제가 발생하여 도움을 주시면 감사하겠습니다.
답변1
nmcli
OTG 모드에서 실행되는 USB 포트를 통해 호스트 PC에 연결된 Raspberry Pi에 대해 네트워크 관리자를 통해 네트워크를 설정하는 방법 .
명령줄 인터페이스를 통해 Network Manager를 사용하여 Raspberry Pi Zero에 브리지된 네트워크를 성공적으로 설정했습니다 nmcli
.
라즈베리 파이 설정
나는 이것을 따라 갔다지시하다OTG 이더넷 연결을 위한 Pi 설정에 대한 정보는 위의 설명에 나열되어 있습니다.
Pi의 MiniSD 카드 파일 시스템 수정
SD 카드에 다음 콘텐츠를 추가하세요./boot/config.txt
# Enable USB OTG like ethernet
dtoverlay=dwc2
ssh
SD 카드 디렉터리 /boot
에 이름이 빈 파일을 만듭니다.
touch ssh
그리고 SD 카드 뒷면에 다음을 추가하여 /boot/cmdline.txt
OTG 이더넷 모듈을 부트로더에 연결합니다.rootwait
` modules-load=dwc2,g_ether `
호스트 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 서버에서 Raspberry Pi 네트워크 주소 할당을 살펴보세요. 구성에 따라 이 정보는 라우터를 통해 제공됩니다. Pi에 대한 SSH 성공:
SSH를 통해 Pi에 연결
root@local:/etc/ssh# ssh [email protected]
[email protected]'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#
부록
읽고 나서2 부Pi OTG 네트워킹 지침에서 Pi의 MAC 주소를 영구적으로 설정하기 위해 제공되는 구성 요소를 추가하겠습니다. 영구 MAC 주소를 사용하면 DHCP 서버 및/또는 라우터가 RPi가 재부팅될 때마다 지속적인 IP 주소 제공을 중지합니다.
네트워크 경제는 다음과 같이 말합니다.
이를 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 호스트에 "usbN" 대신 "ethN" 인터페이스로 표시됩니다. 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 서버 에 추가할 수도 있습니다 .
답변2
이것은 나에게 효과적입니다.
PI 인터페이스가 나타날 때 자동으로 인식되도록 cmdline.txt에서 MAC 주소를 설정합니다.
...rootwait modules-load=dwc2,g_ether g_ether.dev_addr=AA:BB:CC:DD:EE:GG g_ether.host_addr=AA:BB:CC:DD:EE:FF quiet...
그런 다음 호스트 시스템에서(한 번만):
IF_NAME=$(ip --oneline link show | grep aa:bb:cc:dd:ee:ff | awk '{split($0,a,": "); print a[2];}')
nmcli connection add type ethernet ifname $IF_NAME ipv4.method shared con-name local_pi_shared
nmcli connection up local_pi_shared
이제 Zero를 USB에 연결할 때마다 감지되고 local_pi_shared가 활성화됩니다.
연결 삭제:
nmcli con del local_pi_shared
나는 그것을 작은 스크립트로 자동화했습니다:https://github.com/radzimir/Raspberry-Pi-OTG