Banana Pi R1(Lamobo R1)의 DSA 이더넷 포트와 통신 실패

Banana Pi R1(Lamobo R1)의 DSA 이더넷 포트와 통신 실패

내 바나나 PI R1의 스위치 포트에서 실행되는 TCP/IP 트래픽이 없습니다(즉, eth0으로 표시되고 작동하는 별도의 LAN 포트가 아닙니다). 이는 Armbian 이미지에서 Debian 8[1]로 업그레이드된 "Debian GNU/Linux 9.8"을 실행합니다.

이것은 내 /etc/network/interfaces 파일입니다.

allow-hotplug eth0
iface eth0 inet dhcp

# Local loopback
auto lo
iface lo inet loopback

# Router ports
auto lan1
iface lan1 inet static
    address 192.168.12.253
        netmask 255.255.255.0
        network 192.168.12.0
        broadcast 192.168.12.255
        gateway 192.168.12.253
        dns-search greatsoft.local

auto lan2
iface lan2 inet static
        address 192.168.13.253
        netmask 255.255.255.0
        network 192.168.13.0
        broadcast 192.168.13.255
        gateway 192.168.13.253
        dns-search greatsoft.local

auto lan3
iface lan3 inet static
        address 192.168.14.253
        netmask 255.255.255.0
        network 192.168.14.0
        broadcast 192.168.14.255
        gateway 192.168.14.253
        dns-search greatsoft.local

auto lan4
iface lan4 inet static
        address 192.168.15.253
        netmask 255.255.255.0
        network 192.168.15.0
        broadcast 192.168.15.255
        gateway 192.168.15.253
        dns-search greatsoft.local

시작 후 ifconfig는 다음 행을 보고합니다(lo0/wlan0 생략됨).

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.113  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::47:aff:fec1:f535  prefixlen 64  scopeid 0x20<link>
        ether 02:47:0a:c1:f5:35  txqueuelen 1000  (Ethernet)
        RX packets 4581  bytes 816911 (797.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2392  bytes 294521 (287.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 49  

lan1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.12.253  netmask 255.255.255.0  broadcast 192.168.12.255
        ether 02:47:0a:c1:f5:35  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lan2: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.13.253  netmask 255.255.255.0  broadcast 192.168.13.255
        ether 02:47:0a:c1:f5:35  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lan3: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.14.253  netmask 255.255.255.0  broadcast 192.168.14.255
        ether 02:47:0a:c1:f5:35  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lan4: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.15.253  netmask 255.255.255.0  broadcast 192.168.15.255
        inet6 fe80::47:aff:fec1:f535  prefixlen 64  scopeid 0x20<link>
        ether 02:47:0a:c1:f5:35  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 13  bytes 1070 (1.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

"ip -d link show"의 출력은 다음과 같습니다(lo0/wlan0 생략됨).

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 02:47:0a:c1:f5:35 brd ff:ff:ff:ff:ff:ff promiscuity 0 addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 
3: lan2@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state LOWERLAYERDOWN mode DEFAULT group default qlen 1000
    link/ether 02:47:0a:c1:f5:35 brd ff:ff:ff:ff:ff:ff promiscuity 0 addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 switchid 00000000 
4: lan3@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state LOWERLAYERDOWN mode DEFAULT group default qlen 1000
    link/ether 02:47:0a:c1:f5:35 brd ff:ff:ff:ff:ff:ff promiscuity 0 addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 switchid 00000000 
5: lan4@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 02:47:0a:c1:f5:35 brd ff:ff:ff:ff:ff:ff promiscuity 0 addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 switchid 00000000 
6: wan@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 02:47:0a:c1:f5:35 brd ff:ff:ff:ff:ff:ff promiscuity 0 addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 switchid 00000000 
7: lan1@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state LOWERLAYERDOWN mode DEFAULT group default qlen 1000
    link/ether 02:47:0a:c1:f5:35 brd ff:ff:ff:ff:ff:ff promiscuity 0 addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 switchid 00000000 

예를 들어 LAN 4 포트에 케이블을 연결하고 연결된 시스템에 IP 주소 192.168.15.250과 넷마스크 255.255.255.0을 제공하면 Banana PI의 핑에 다음이 표시됩니다.

From 192.168.15.253 icmp_seq=1 Destination Host Unreachable

arp -n 표시

Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.15.250                   (incomplete)                              lan4

왜 통신이 실패했는지 모르겠습니다. 뭔가 빠진 게 틀림없다고 생각했어요. 누구든지 나에게 조언을 줄 수 있나요?

[1]https://www.armbian.com/lamobo-r1/

답변1

기본적으로 ArmBian과 이전 Bananian의 WAN 포트를 제외한 4개 포트는 모두 브리지되어 있으며 WAN 포트에 대한 두 번째 인터페이스인 단일 IP 인터페이스로만 나타납니다. 이것이 IP OS 수준 구성이 작동하지 않는 이유입니다. R1에서는 보드에 BCM53125에 연결된 저항이 없기 때문에 포트/칩셋이 5포트 허브로 부팅되므로 이런 일이 발생하지 않습니다. 더 나쁜 것은 Linux 커널이 부팅에 실패하더라도 여전히 5포트 허브라는 것입니다.

BCM53125 스위치 칩셋은 각 포트를 다른 포트와 브리지하는 대신 별도의 VLAN으로 전환하도록 프로그래밍해야 합니다.

포트 번호를 참고하세요. 적어도 이전 커널 구성 스위치에서는 새 DSA가 아직 테스트되지 않았습니다.

|2|1|0|4| |3|

다음 구성은 5개 포트 각각이 별도의 포트/VLAN인 스위치 VLAN을 설정하는 데 유용합니다.

시작이 완료된 후:

eth.10(VLAN 10)은 기존 eth0이 되고,
eth.12(VLAN 12)는 기존 lan1이 되고, 192.168.12.x 인터페이스
eth.13(VLAN 13)은 기존 eth0이 됩니다. lan2, 192.168.13.x 인터페이스
eth.14(VLAN 14)는 기존 lan3, 192.168.14.x 인터페이스
eth.15(VLAN 15)는 기존 lan4, 192.168.15.x 인터페이스입니다.

분들은 조심하세요내부칩셋 VLAN. Broadcom BCM53125는 802.1Q를 지원하지 않습니다. 따라서 아래 스크립트에서는 untagged 지시문이 사용됩니다.

파일 생성 위치:/etc/network/if-pre-up.d/dsa

#!/bin/bash

# to avoid execute more than once
[ "$IFACE" == "eth0" ] || exit 0

ip link set eth0 up

# ** create the native VLAN **    
ip link add link eth0 name eth0.10 type vlan id 10
ip link add link eth0 name eth0.12 type vlan id 12
ip link add link eth0 name eth0.13 type vlan id 13
ip link add link eth0 name eth0.14 type vlan id 14
ip link add link eth0 name eth0.15 type vlan id 15

# ** ALLOCATION VLAN
bridge vlan add vid 10 dev wan pvid untagged
bridge vlan add vid 12 dev lan1 pvid untagged
bridge vlan add vid 13 dev lan2 pvid untagged
bridge vlan add vid 14 dev lan3 pvid untagged
bridge vlan add vid 15 dev lan4 pvid untagged




# ** Delete VLAN default 1 **
bridge vlan del vid 1 dev wan

bridge vlan del vid 1 dev lan1
bridge vlan del vid 1 dev lan2
bridge vlan del vid 1 dev lan3
bridge vlan del vid 1 dev lan4
bridge vlan del vid 1 dev eth0.10
bridge vlan del vid 1 dev eth0.12
bridge vlan del vid 1 dev eth0.13
bridge vlan del vid 1 dev eth0.14
bridge vlan del vid 1 dev eth0.15

# ** ACTIVATE /Start **
ip link set up wan

ip link set eth0.10 up
ip link set eth0.12 up
ip link set eth0.13 up
ip link set eth0.14 up
ip link set eth0.15 up

ip link set lan1 up
ip link set lan2 up
ip link set lan3 up
ip link set lan4 up

파일을 실행 가능하게 만듭니다: chmod 0777 /etc/network/if-pre-up.d/dsa

부팅 후 모든 것을 확인하십시오 ip -d link show eth0.10 ip -d link show eth0.11....

브리지 VLAN 표시 브리지 링크 표시

다른 VLAN 파일에 대한 모든 권한을 제거하고 읽기 전용으로 만듭니다: chmod 0444 /etc/network/if-post-down.d/vlan chmod 0444 /etc/network/if-pre-up.d/vlan

스크립트는 테스트되지 않았으며 가이드에서 조정되었습니다. BPi-R1 - 분산 스위치 아키텍처 2017

링크된 가이드에는 스위치를 끄는 스크립트도 있습니다.

면책 조항: 이 스크립트가 첫 번째 시도에서 작동할 것이라고 주장하지는 않지만 좋은 시작이 될 것입니다. 또한 6~7주 안에 R1에서 테스트할 예정입니다. 그 전에는 시간이 없습니다.

추신: R1이 격일로 무작위로 충돌합니까? 내 경우에는 2주마다 알 수 없는 읽기 전용 파일 시스템 상황이 발생합니다.

원인을 찾아 리얼텍 와이파이 칩셋을 제거하여 문제를 해결했습니다.

나중에 누군가가 전기 측정을 수행한 결과 Realtek 칩셋이 때때로 R1에 완전히 과부하되어 사용하지 않을 때에도 불안정성을 유발할 수 있다는 사실을 발견했으며 이는 내 경험적 발견을 확인했습니다.

PPS: R1을 구입했을 때 AP로 바꾸려고 했습니다. 잃어버린 원인. 관련 항목을 참조하세요:ASUS USB-N13 어댑터(realtek) 사용 시 Wi-Fi 문제

관련 항목도 참조하세요https://electronics.stackexchange.com/questions/236530/dht21-am2301-sensor-not-measuring-humidity/236751

답변2

조각https://github.com/armbian/build/issues/511나에게 올바른 방향을 알려주었고 결국 이 /etc/network/interfaces 파일을 갖게 되었습니다.

auto lo
iface lo inet loopback

auto eth0.101
iface eth0.101 inet dhcp
    pre-up ip link add br53125 type bridge
    pre-up ip link set wan master br53125
    pre-up bridge vlan add vid 101 dev wan pvid untagged
    pre-up bridge vlan del vid 1 dev wan
    pre-up ip link set wan up
    post-down ip link set wan down
    post-down ip link del dev eth0.101

auto eth0.102
iface eth0.102 inet manual
    pre-up ip link set lan1 master br53125
    pre-up ip link set lan2 master br53125
    pre-up ip link set lan3 master br53125
    pre-up ip link set lan4 master br53125
    pre-up bridge vlan add vid 102 dev lan1 pvid untagged
    pre-up bridge vlan del vid 1 dev lan1
    pre-up ip link set lan1 up
    pre-up bridge vlan add vid 102 dev lan2 pvid untagged
    pre-up bridge vlan del vid 1 dev lan2
    pre-up ip link set lan2 up
    pre-up bridge vlan add vid 102 dev lan3 pvid untagged
    pre-up bridge vlan del vid 1 dev lan3
    pre-up ip link set lan3 up
    pre-up bridge vlan add vid 102 dev lan4 pvid untagged
    pre-up bridge vlan del vid 1 dev lan4
    pre-up ip link set lan4 up
    post-down ip link set lan4 down
    post-down ip link set lan3 down
    post-down ip link set lan2 down
    post-down ip link set lan1 down
    post-down ip link del dev br53125
    post-down ip link del dev eth0.102

auth eth0.102
iface eth0.102 inet static
    address 192.168.12.254
    netmask 255.255.255.0
    gateway 192.168.12.254
iface eth0.102 inet6 static
    address 0db8:cafe:beef:c::
    netmask 64
    gateway 0db8:cafe:beef:c::

allow-hotplug wlan0
iface wlan0 inet static
    address 192.168.13.254
    netmask 255.255.255.0
    gateway 192.168.13.254
iface wlan0 inet6 static
    address 0db8:cafe:beef:d::
    netmask 64
    gateway 0db8:cafe:beef:d::

불행하게도 IPv6은 아직 LAN에서 작동하지 않습니다. 그러나 이는 다른 질문에서 다루어야 합니다.

결과적으로 교환된 LAN 포트는 실제로 하나의 포트인 것처럼 동작하므로 모든 포트는 단일 IP 주소를 공유하고 DHCP 서버는 동일한 서브넷에 대한 주소인 192.168.12.0을 제공합니다. 4개의 서로 다른 서브넷이 있으면 좋았겠지만 제 목적으로는 현재 동작이 허용됩니다.

관련 정보