FreeBSD는 USB와 이더넷 어댑터 같은 이름을 혼합합니다.

FreeBSD는 USB와 이더넷 어댑터 같은 이름을 혼합합니다.

두 개의 Asix USB-이더넷 어댑터가 있습니다. FreeBSD는 이를 ue1어댑터 로 식별합니다 ue2.

문제는 재부팅 후 때때로 인터페이스가 ue1그 반대로 변경되어 ue2네트워크 구성이 거의 손상된다는 것입니다. 두 어댑터의 MAC은 매우 유사하므로 시스템이 이를 인식하려고 할 때 문제가 발생할 수 있습니다.

udevLinux 시스템에서는 이전에 어댑터 MAC 주소로 정적 규칙을 설정하여 이 문제를 해결했습니다. Freebsd에서 비슷한 기능을 어떻게 구현할 수 있나요? 관련이 있다는 것은 알고 있지만 devd어댑터가 "정적" 이름을 갖도록 관리하는 방법을 잘 모르겠습니다.

usbconfig 
ugen0.1: <DWCOTG OTG Root HUB> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA)
ugen0.2: <vendor 0x0424 product 0x9514> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (2mA)
ugen0.3: <vendor 0x0424 product 0xec00> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (2mA)
ugen0.4: <ASIX Elec. Corp. AX88179> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (248mA)
ugen0.5: <ASIX Elec. Corp. AX88179> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (248mA)


usbconfig -d ugen0.5 dump_device_desc
ugen0.5: <ASIX Elec. Corp. AX88179> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (248mA)

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0210 
  bDeviceClass = 0x00ff  <Vendor specific>
  bDeviceSubClass = 0x00ff 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0040 
  idVendor = 0x0b95 
  idProduct = 0x1790 
  bcdDevice = 0x0100 
  iManufacturer = 0x0001  <ASIX Elec. Corp.>
  iProduct = 0x0002  <AX88179>
  iSerialNumber = 0x0003  <00000000000114>
  bNumConfigurations = 0x0001 

ugen0.4: <ASIX Elec. Corp. AX88179> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (248mA)

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0210 
  bDeviceClass = 0x00ff  <Vendor specific>
  bDeviceSubClass = 0x00ff 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0040 
  idVendor = 0x0b95 
  idProduct = 0x1790 
  bcdDevice = 0x0100 
  iManufacturer = 0x0001  <ASIX Elec. Corp.>
  iProduct = 0x0002  <AX88179>
  iSerialNumber = 0x0003  <00000000000013>
  bNumConfigurations = 0x0001 

답변1

제가 제안하는 해결책은 연결 시 Mac 주소를 확인하고 장치 이름을 바꾸는 스크립트를 호출하는 것입니다.

     0을 추가하세요 {
             장치 이름 "(ue)[0-9]+";
             액션 "yourscript $device_name";
     };

테스트되지 않음:

#!/bin/sh

MAC=`ifconfig $1 |

INBOUND_MAC="foo"
OUTBOUND_MAC="bla"

if ["$MAC" == "$INBOUND_MAC"];
ifconfig $1 이름 인바운드
기타
ifconfig $2 이름 아웃바운드
필리핀 제도

관련 정보