
문제 설명
다음 명령을 사용하여 유선(USB)과 무선 "브리지"를 설정하려고 했습니다.마감일 방법데비안 기반 배포판을 실행하는 Khadas VIM3L 보드에서볼륨 운영 체제. 전체 설정은 다음과 같습니다.
[인터넷]---이더넷---[Linux 호스트0]----usb----[VIM3L]----wifi----[인터넷]
VIM3L에서 systemd 및 parprorouted를 사용하는 "브리지" 구성은 다음과 같습니다.
cat <<'EOF' >/etc/systemd/system/parprouted.service
[Unit]
Description=proxy arp routing service
Documentation=https://raspberrypi.stackexchange.com/q/88954/79866
[Service]
Type=forking
# Restart until wlan0 gained carrier
Restart=on-failure
RestartSec=5
TimeoutStartSec=30
ExecStartPre=/lib/systemd/systemd-networkd-wait-online --interface=wlan0 --timeout=6 --quiet
ExecStartPre=/bin/echo 'systemd-networkd-wait-online: wlan0 is online'
# clone the dhcp-allocated IP to usb0 so dhcp-helper will relay for the correct subnet
ExecStartPre=/bin/bash -c '/sbin/ip addr add $(/usr/bin/get-adapter-ip wlan0)/32 dev usb0'
ExecStartPre=/sbin/ip link set dev usb0 up
ExecStartPre=/sbin/ip link set wlan0 promisc on
ExecStart=-/usr/sbin/parprouted usb0 wlan0
ExecStopPost=/sbin/ip link set wlan0 promisc off
ExecStopPost=/sbin/ip link set dev usb0 down
ExecStopPost=/bin/bash -c '/sbin/ip addr del $(/usr/bin/get-adapter-ip usb0)/32 dev usb0'
[Install]
[email protected]
EOF
어디/usr/bin/어댑터 IP 가져오기스크립트는 단순히 주어진 인터페이스의 IP를 추출합니다. 이 "브리지" 접근 방식에 대한 자세한 내용은 다음을 참조하세요. 여기.
데몬을 활성화하고 시작한 후 usb0 인터페이스는 예상대로 wlan0 인터페이스와 동일한 IP를 얻고 이더넷 연결이 없더라도 [Linux Host0] 및 [VIM3L]에서 인터넷에 연결할 수 있습니다.
질문
앞에서 설명한 대로 전체 시스템을 설정한 후 또는 이더넷 케이블을 분리한 후 얼마 후에 문제가 발생합니다. 어떤 이유로 새 IP 주소가 usb0 인터페이스에 할당되어 이 새 IP를 삭제할 때까지 VIM3L의 인터넷 연결이 끊어집니다.
문제의 예는 다음과 같습니다.
volumio@volumio:~$ ip addr
...
9: wlan0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 70:f7:54:e4:b5:67 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.42/24 brd 10.0.0.255 scope global dynamic wlan0
valid_lft 13931sec preferred_lft 13931sec
10: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
link/ether fe:8b:d1:fa:e0:b7 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.42/32 scope global usb0
valid_lft forever preferred_lft forever
inet 10.0.0.35/24 brd 10.0.0.255 scope global noprefixroute usb0
...
IP 10.0.0.35를 수동으로 제거하면 (앞서 언급한 대로) 네트워크가 변경될 때까지 "브리지"가 다시 작동하기 시작합니다.
내가 지금까지 시도한 것
/etc/avahi-daemon.conf 파일 수정
내 초기 의심은넘쳐데몬은 DHCP를 통해 인터페이스에 대한 새 IP를 가져오므로 다음 줄을 추가하여 usb0 인터페이스에 대해 dhcp를 비활성화하기로 결정했습니다./etc/avahi-daemon.conf문서:
[server]
...
deny-interfaces=usb0
...
그럼 당연히 다시 시작하세요넘쳐데몬 프로세스:
sudo service avahi-daemon restart
그러나 이것으로는 문제가 해결되지 않는 것 같습니다.