FreeBSDはUSBとイーサネットアダプタのような名前を混ぜます。

FreeBSDはUSBとイーサネットアダプタのような名前を混ぜます。

2つの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 名前アウトバウンド
フィリピン諸島

関連情報