Alb*_*lla 3 networking terminal systemd-networkd
我与其他开发人员一起创建了一个脚本,只要 Linux 系统未连接到按流量计费的连接,就会自动更新它们。
但我们发现有些系统会使用“systemd-networkd”而不是network-manager来配置网络,并且同时使用这两个程序会相互冲突。
因此,我们不能真正依赖在系统上安装 nmcli 并使用此问题的解决方案。
没有单一可靠的方法可以自动检测到这一点。网络有一些方法可以暗示它是按流量计费的,但这些方法远没有得到普遍部署。
充当 WiFi 热点或网络共享设备的 Android 设备会将 DHCP 选项 43 设置为 string ANDROID_METERED
,并强制在 DHCP 响应中返回该选项。请参阅: https: //www.lorier.net/docs/android-metered.html
苹果显然有自己的方式来使用 iOS 设备的热点功能向客户端指示连接状态,尽管信息似乎很少。
WiFi基站可以实现微软设计的802.11协议扩展来指示无线网络的计量状态。在 Linux 中,我认为wpa_supplicant
可能是接收此信息的组件。
如果不存在其他信息,Windows 将仅根据连接类型(以太网、WiFi、4G、3G 或默认/未知)设置“按流量计费的连接”属性的默认值:请参阅https://www.msoutlook.info /问题/计量网络警告
但是,当这些提示不存在时,您不能假设连接未按流量计费;可能是也可能不是。使用 NetworkManager,用户可以在配置连接时设置“计量连接”属性,因为用户可能最了解连接的状态。
因此,您可能只是让用户选择/负责运行您的脚本或禁用它。