我正在使用启用了 Kill Switch 功能的 NordVPN。
如果我的计算机没有正常关闭,该文件/etc/resolv.conf
将被设置为不可变,并且以后任何解析名称的尝试都会失败。
有时,即使没有不正常的关闭,当运行ping
时root
,我会看到:
ping:sendmsg:不允许操作
如何使用终止开关并拥有不间断的连接?
答案1
重新启动nordvpnd
服务可以解决连接问题。
自动执行此操作的方法如下:
创造/etc/systemd/system/nordvpnd-restart-after-network-online.service
:
# Prevent immutable /etc/resolv.conf
# https://forum.manjaro.org/t/internet-blocked-by-nordvpn-killswitch/108413
# https://bbs.archlinux.org/viewtopic.php?id=246004
# If using NetworkManager, requires NetworkManager-wait-online.service to be started
# https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
[Unit]
Description=restart nordvpnd after network online
After=NetworkManager-wait-online.service
# Uncomment if using networkd, and comment previous line
; Before=systemd-networkd-wait-online.service
[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl restart nordvpnd
[Install]
WantedBy=NetworkManager-wait-online.service
# Uncomment if using networkd, and comment previous line
; WantedBy=systemd-networkd-wait-online.service
启用两个必需的服务:
sudo systemctl daemon-reload
sudo systemctl enable NetworkManager-wait-online.service nordvpnd-restart-after-network-online.service
现在,在NetworkManager
表示在线后,nordvpnd
服务将立即自动重新启动。
答案2
这汤姆·黑尔的解决方案使用守护进程对我不起作用nordvpnd
。 (顺便说一句,我不知道如何将终止开关与 NetworkManager 一起使用,因为似乎没有任何选项?)
我所做的是添加以下脚本/usr/lib/pm-utils/sleep.d/99restart_nordvpnd.sh
:
#!/bin/sh
case "$1" in
resume)
/usr/bin/systemctl restart nordvpnd
;;
esac
使其可执行后,nordvpn 守护进程会在计算机从挂起状态恢复时自动重新启动。
如果这不起作用,您可以尝试稍微不同的脚本:
#!/bin/sh
case "$1" in
pre)
echo "$(date): $1" >> /tmp/nordvpn/suspend.txt
/usr/bin/systemctl restart nordvpnd
;;
post)
echo "$(date): $1" >> /tmp/nordvpn/suspend.txt
;;
esac
(请注意,“echo”行是完全可选的。我用它们进行调试)
该文件必须放在不同的位置:
/lib/systemd/system-sleep/
答案3
我遇到了这个问题,唯一对我有用的就是禁用终止开关。
发生的情况是,当您的计算机进入睡眠状态时,它会失去连接,并且终止开关将拒绝所有连接,因为您没有连接到 VPN。如果不禁用终止开关,它甚至不会让您重新连接。
唯一的解决方案似乎是暂时禁用终止开关以重新建立连接,然后重新启用终止开关。