Raspberry Pi 4B의 L3 "의사 브리지" 구현에 대한 질문

Raspberry Pi 4B의 L3 "의사 브리지" 구현에 대한 질문

사용자가 제공한 정적 구성 지침에 따라 프록시 ARP(파프로루트)를 사용하여 Raspberry Pi 4B에 L3 "의사 브리지"를 구현했습니다.잉고확립된여기외부 세계와 동기화되는 로컬 데이터베이스를 현장 시스템에 제공합니다. 우리 시스템은 Buster를 실행합니다. 시스템이 잘 작동하는 것 같지만 우리가 직면하고 있는 것으로 보이는 몇 가지 미묘한 차이/문제를 설명하여 의도한 대로 시스템을 사용하고 있는지 확인하고 싶었습니다. 먼저 토폴로지를 설명하겠습니다.

                          ┌─proxy arp─┐     UPLINK
                wired     V           V      wifi            wan
a few hosts <─────────> (eth0)RPi(wlan0) <~.~.~.~.> hotspot <---> INTERNET
     \                           \
(STATIC IP for easy id'ing)   (STATIC IP for easy id'ing)

또한 외부 연결을 위해 이 핫스팟에 연결하기 위해 여러 RPi를 사용한다는 점도 언급해야 합니다. 각 Raspberry Pi는 연결이 필요한 여러 장치를 제공하지만 이러한 장치에는 유선 기능만 있습니다. 이것이 우리가 이렇게 하는 유일한 이유는 아닙니다. 각 장치는 핫스팟에서 매우 멀리 떨어져 있으며 6dBi 이득 무지향성 안테나를 사용하여 외부 안테나 WiFi를 USB 어댑터에 연결합니다.

우리가 직면한 문제는 특히 두 가지였습니다.

1.) 핫스팟이 활성화되지 않으면 Raspberry Pi를 핑할 수 없습니다.

2.) Wi-Fi 신호가 좋지 않아 유선 비상 계획으로 RPi에 긴 케이블을 연결하는 경우 RPi는 이 상황을 원활하게 처리하는 경우가 거의 없으며 일반적으로 eth0을 통한 트래픽이 좋지 않지만 여전히 wlan0을 통해 연결을 시도합니다. 비록 연결 상태는 좋지 않지만. 브리지 ARP 기능이 그것들을 동일하게 만든다는 것을 알고 있으므로아마도이로 인해 NIC의 "장애 조치" 동작이 복잡해질 수 있습니다.

/etc/systemd/network/08-wlan0.network 문제 중 하나는 다음과 같이 구성 스크립트에 대한 게이트웨이 또는 DNS 설정을 지정하는 방식일 수 있다고 생각합니다 .

cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.100.200/16
Gateway=192.168.0.1
DNS=8.8.8.8
IPForward=yes
EOF

그러한 게이트웨이가 포함된 경우(이 경우 핫스팟) 핫스팟이 꺼지면 RPi에 문제가 발생합니까?

또한 무차별 모드가 활성화되지 않으면 의사 브리지가 제대로 작동하지 않는다는 내용도 읽었습니다. Buster에 다음을 추가해야 할까요?

ip link set wlan0 promisc on

당신의 도움을 주셔서 감사합니다.

답변1

문제를 확인하기 위해 설정을 다시 테스트했지만 물론 현재 OS 버전과 하드웨어를 사용했습니다. Raspberry Pi 4B의 Raspbian Buster입니다. 참조 설정은 다음과 같습니다.Raspberry Pi에서 프록시 arp를 사용하는 Wi-Fi 브리지 솔루션. ~을 위한일반 설정나는 고전적인 이름 확인자를 가지고 있고넘쳐데몬이 제거되었으며systemd로 해결더 적합하다고 생각해서 활성화했습니다.시스템 네트워크. 꼭 확인해 보세요.

1.) 핫스팟이 활성화되지 않으면 Raspberry Pi를 핑할 수 없습니다.

이는 의도적인 것입니다. RasPi는 실제 브리지처럼 연결된 장치에 투명해야 합니다. RasPi가 아닌 핫스팟이 표시되어야 합니다. 해당 IP 주소는 OSI 레이어 3에서 프록시 ARPS를 관리하는 데에만 사용되며 연결된 장치에는 의미가 없습니다. 당신이 보면이더넷 0그리고무선랜 0그들은 모두 동일한 IP 주소를 가지고 있습니다. 일반 네트워크 장비에서는 작동하지 않습니다. 따라서 핫스팟이 다운되면 RasPis 인터페이스도 인터페이스와 동일한 방식으로 작동하므로 다운됩니다.

2.) RPi[..]에 긴 케이블을 연결하면 RPi가 이를 원활하게 처리하는 경우가 거의 없으며 일반적으로 eth0을 통과하는 트래픽이 좋지 않고 Link 연결 상태가 좋지 않음에도 불구하고 여전히 wlan0을 통과하려고 시도합니다.

장거리 이더넷 케이블이 없기 때문에 실제로 확인할 수는 없지만 길이는 이더넷 사양 내에 있으므로 문제가 없습니다. 그렇지 않다면 케이블 자체, 차폐, 접점 등에 문제가 있을 수 있습니다. 아이디어를 얻기 위해 성능이 좋지 않은 테스트넷에서 오래된 RasPis를 사용하여 대역폭 테스트를 실행했습니다. 내가 실행중인 핫스팟 뒤의 유선 연결 장치에서 iperf --server. 연결된 기기에서이더넷 0RasPi에서 다음을 실행합니다.

rpi ~$ iperf --time 60 --client 192.168.50.174
------------------------------------------------------------
Client connecting to 192.168.50.174, TCP port 5001
TCP window size: 43.8 KByte (default)
------------------------------------------------------------
[  3] local 192.168.50.3 port 43434 connected with 192.168.50.174 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-60.9 sec   286 MBytes  39.4 Mbits/sec

상호 작용이더넷 0RasPi에서는 오류가 표시되지 않습니다.

rpi ~$ ip -statistics link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether dc:a6:32:01:db:ec brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    510673218  338397   0       0       0       155
    TX: bytes  packets  errors  dropped carrier collsns
    2690947    35971    0       0       0       0

존재하다무선랜 0오류 없이 비슷한 깨끗한 결과를 찾았습니다.

고정 주소, 게이트웨이 및 DNS 설정이 /etc/systemd/network/08-wlan0.network정확합니다. 비슷한 구성으로 테스트했는데 핫스팟이 꺼져 있을 때 RPi를 끄는 것과는 아무런 관련이 없습니다(위의 1번 항목 참조).

parprorouted.service 단위 파일에 설정된 무차별 모드가 필요합니다. 거기에서 당신은 찾을 것입니다

ExecStartPre=/sbin/ip link set wlan0 promisc on
# and
ExecStopPost=/sbin/ip link set wlan0 promisc off

따라서 다시 할 필요가 없습니다.

관련 정보