我希望每次我连接手机时,我的电脑都能自动连接到我的 VPN。问题是每次我连接时,连接都会被分配一个新的 MAC 地址和名称。
几年前,我设法使用 udev 规则解决了这个问题,但我已经尝试了好几天,却不知道之前是怎么做到的。
有人可以帮我编写 udev 规则或者找到替代解决方案吗?
以下是
udevadm info -a -p $(udevadm info -q path -n /dev/bus/usb/003/009)
looking at device '/devices/pci0000:00/0000:00:14.0/usb3/3-3':
KERNEL=="3-3"
SUBSYSTEM=="usb"
DRIVER=="usb"
ATTR{authorized}=="1"
ATTR{avoid_reset_quirk}=="0"
ATTR{bConfigurationValue}=="1"
ATTR{bDeviceClass}=="e0"
ATTR{bDeviceProtocol}=="00"
ATTR{bDeviceSubClass}=="00"
ATTR{bMaxPacketSize0}=="64"
ATTR{bMaxPower}=="96mA"
ATTR{bNumConfigurations}=="1"
ATTR{bNumInterfaces}==" 3"
ATTR{bcdDevice}=="0226"
ATTR{bmAttributes}=="c0"
ATTR{busnum}=="3"
ATTR{configuration}==""
ATTR{devnum}=="9"
ATTR{devpath}=="3"
ATTR{idProduct}=="6864"
ATTR{idVendor}=="04e8"
ATTR{ltm_capable}=="no"
ATTR{manufacturer}=="samsung"
ATTR{maxchild}=="0"
ATTR{product}=="GT-I9305"
ATTR{quirks}=="0x0"
ATTR{removable}=="removable"
ATTR{speed}=="480"
ATTR{urbnum}=="773"
ATTR{version}==" 2.00"
以下是一些udevadm info -q all -n /dev/bus/usb/003/009
P: /devices/pci0000:00/0000:00:14.0/usb3/3-3
N: bus/usb/003/009
E: DEVTYPE=usb_device
E: DRIVER=usb
E: ID_BUS=usb
E: ID_MODEL=GT-I9305
E: ID_MODEL_ENC=GT-I9305
E: ID_MODEL_FROM_DATABASE=GT-I9070 (network tethering, USB debugging enabled)
E: ID_MODEL_ID=6864
E: ID_REVISION=0226
E: ID_USB_INTERFACES=:e00103:0a0000:ff4201:
E: ID_VENDOR=samsung
E: ID_VENDOR_ENC=samsung
E: ID_VENDOR_FROM_DATABASE=Samsung Electronics Co., Ltd
E: ID_VENDOR_ID=04e8
E: MAJOR=189
E: MINOR=264
E: PRODUCT=4e8/6864/226
E: SUBSYSTEM=usb
E: USEC_INITIALIZED=1914672992
最后,当我激活 USB 网络共享功能时udevadm monitor
,
UDEV [3129.357001] add /devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.1 (usb)
UDEV [3129.389973] add /devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.0/net/enp0s20u3 (net)
UDEV [3129.393191] add /devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.0/net/usb0/queues/rx-0 (queues)
UDEV [3129.393625] add /devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.0/net/usb0/queues/tx-0 (queues)
UDEV [3129.394565] move /devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.0/net/enp0s20u3 (net)
我已经尝试了 70-persistent-net.rules 的各种规则,目前我的规则是
SUBSYSTEM=="net", KERNEL=="enp0s20u3", ACTION=="add", ATTR{address}="4A:9E:C3:67:F4:1D" NAME="Phone"
这是行不通的。
答案1
在连接/绑定手机时遇到类似/相关的问题。路由度量将高于有线以太网的“100”,而有线以太网没有互联网连接。
手机 USB 连接的度量为“101”,因此无法通过手机连接到互联网,因为度量较低的默认网关是选定的路径。因此,我将连接重命名为PhoneTether并将设备 (如上所述) 设置为 DEVICE,如下所示:
nmcli -t --fields NAME,TYPE,DEVICE connection show --active
然后将配置文件指标设置为“99”,如下所示:
nmcli conn mod id PhoneTether ipv4.route-metric 99
现在,当我插入电话时,路由度量为 99,因此是首选默认路由。当我拔下电话时,恢复正常。
答案2
回答我自己的问题,我不需要做任何这些。在 16.04 网络管理器中,编辑连接并在设备字段中输入名称(在本例中为 enp0s20u3)而不是 MAC 地址。取消选择“使所有用户可用”以使其自动重新连接。- 可能是错误?