我的 ProtonVPN 连接不断中断。我使用的是 Ubuntu 18.04。ProtonVPN 告诉我问题出在 Ubuntu 上,他们不会帮我修复它,我应该在这里发帖。这是一篇交叉帖子这个 Unix SE 问题。
目前,处于损坏状态,两个 ProtonVPN 设备配置文件分别proton0
被ipv6leakintrf0
列为“未管理”和“已断开连接” nmcli
:
$ nmcli d
DEVICE TYPE STATE CONNECTION
wlp3s0 wifi connected WifiAP
ipv6leakintrf0 dummy disconnected --
enp2s0 ethernet unavailable --
lo loopback unmanaged --
proton0 tun unmanaged --
ProtonVPN 支持人员花了近两个月的时间才解决这个问题,但他们告诉我他们不支持非托管连接。所以,我只能靠自己努力实现两者proton0
并ipv6leakintrf0
实现“托管”。
据我所知NetworkManager
配置文档NetworkManager 按以下顺序从以下来源配置设备:
- /usr/lib/NetworkManager/conf.d/
- /运行/NetworkManager/conf.d/
- /etc/NetworkManager/conf.d/
- /etc/NetworkManager.conf
- /var/lib/NetworkManager/NetworkManager-intern.conf
在这三个目录中,文件按其列出的顺序进行解析。在我的系统上,该文件/usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf
存在并包含以下指令:
[keyfile]
unmanaged-devices=*,except:type:wifi,except:type:wwan
这出现将所有非 wifi 和非 wan 网络设备设置为“未管理”,这可以解释为什么它们proton0
可能ipv6leakintrf0
是未管理的。但是,考虑到 NetworkManager UX 的设计很差,我无法确定我不理解的后续配置不会覆盖此指令。
我在上面的配置列表中搜索了其他unmanaged-devices
指令,但一无所获,因此我只能假设其中的那个10-globally-managed-devices.conf
是唯一的。在这种情况下,我似乎可以通过创建包含以下内容的proton0
文件来纠正问题并创建受管设备:/usr/lib/NetworkManager/conf.d/80-proton-vpn.conf
[device]
match-device=interface-name:proton0
managed=true
[device]
match-device=interface-name:ipv6leakintrf0
managed=true
我已尽可能地将语法从上面链接的糟糕文档中拼凑起来。我重新启动了network-manager
。ProtonVPN 工作了几天后又坏了,给出$ nmcli d
上面显示的输出,表明proton0
(可能ipv6leakintrf0
)仍然不受管理,尽管我尽了最大努力更改配置。
这AskUbuntu 答案表示列出设备/etc/network/interfaces
将导致它不受 NetworkManager 管理。在我的例子中,这并不适用,该文件的唯一内容是
$ cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
我还尝试明确地将 ProtonVPN 设备排除在外,10-globally-managed-devices.conf
正如我上面链接的 Unix SE 帖子中的评论所建议的那样:
[keyfile]
unmanaged-devices=*,except:type:wifi,except:type:wwan,except:interface-name:proton*,except:interface-name:ipv6leakintrf*
重新启动后network-manager
,此配置对问题没有任何改变。
我还需要做什么才能让 NetworkManager 管理这些设备配置文件?
编辑
对于“如何设置要管理的网络设备?”这个问题,首先的答案是:
“运行命令
$ nmcli device set <name> managed yes
其中是输出列<name>
下的相关条目。”DEVICE
$ nmcli d
我已经花了很长时间来研究这个问题,以至于我忘了把研究结果也包括进去。结果如下:
当我跑步时
$ nmcli device set proton0 managed yes
它不会以任何方式影响“proton0”。 的输出$ nmcli d
继续显示“proton0”为“断开连接”(因为我无法连接), 的输出$ nmcli device show
继续显示“proton0”具有GENERAL.STATE: 10 (unmanaged)
。
在整个故障排除过程中,“ipv6leakintrf0”出现并消失。我不知道为什么,但 ProtonVPN 支持人员认为它不值得注意,所以我认为这是意料之中的。当它存在时,运行
$ nmcli device set ipv6leakintrf0 managed yes
没有任何效果。 的输出$ nmcli d
继续显示它为“未托管”。 当它不存在时,运行命令$ nmcli device set
会返回错误Error: Device 'ipv6leakintrf0' not found.
,这似乎很正常。 它目前不存在。
额外信息
以下是输出的“proton0”部分$ nmcli device show
:
GENERAL.DEVICE: proton0
GENERAL.TYPE: tun
GENERAL.HWADDR: (unknown)
GENERAL.MTU: 1500
GENERAL.STATE: 10 (unmanaged)
GENERAL.MTU: 1500
GENERAL.STATE: 20 (unavailable)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
WIRED-PROPERTIES.CARRIER: off
答案1
这就是我所拥有的
$ cat /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf
[keyfile]
unmanaged-devices=*,except:type:wifi,except:type:gsm,except:type:cdma
我有两台设备,我确定它们与 ProtonVPN 相对应,因为它们的修改日期会受到连接/断开连接的影响
$ cat /run/NetworkManager/devices/19
[device]
managed=true
connection-uuid=...
nm-owned=false
$ cat /run/NetworkManager/devices/18
[device]
managed=true
perm-hw-addr-fake=...
connection-uuid=...
nm-owned=true
route-metric-default-effective=550
当我断开连接时,它们看起来像这样
$ cat /run/NetworkManager/devices/19
[device]
nm-owned=false
$ cat /run/NetworkManager/devices/18
[device]
managed=true
perm-hw-addr-fake=...
nm-owned=true
我猜它们不应该被手动修改,但这可能会有所帮助。
请发布输出
$ nmcli device show
另外,强制管理连接,如下所示 https://developer-old.gnome.org/NetworkManager/unstable/NetworkManager.html可能有帮助
Udev 属性
udev(7) 设备管理器用于网络设备发现。以下属性影响 NetworkManager 管理设备的方式:
NM_UNMANAGED
如果设置为"1"
或"true"
,则设备配置为不受 NetworkManager 管理。请注意,用户仍然可以通过以下方式明确否决此配置:nmcli device set "$DEVICE" managed yes
或"device*.managed=1"
在NetworkManager.conf
。
因此请发布使用结果
nmcli device set proton0 managed yes
nmcli device set ipv6leakintrf0 managed yes
如图所示这里。
并检查ls -al /etc/udev/rules.d/
是否有任何 udev 规则这可能会告诉网络管理器停止控制接口