我正在运行带有 openvpn 2.4.7 的 Ubuntu 19.10,随着时间的推移,我已经积累了 40 个 tun 设备,这些设备在我登录时都会显示出来。ifconfig
确认它们都在那里。
我努力了:
- 做
sudo ip link delete tun0
(以及所有其他设备) - 正在做
sudo ip link delete tun0
和也在做sudo tunctl -d tun0
(回答将“tun0”设置为非持久性- 我也对所有其他人这样做过) - 做
sudo ifconfig tun0 down
(和所有其他) - 删除并重新安装 openvpn(删除所有 tun 设备)
但重启后,它们又都回来了。我使用系统的唯一方法是每次启动后删除 openvpn 并重新安装。它们不是 netplan 的一部分。
我怎样才能永久删除它们?
*编辑:禁用 IPv6 实际上导致这些设备消失。我简直不敢相信。禁用 IPv6 不应该是一个解决方案。
答案1
如果您想要永久删除任何接口以使其在重启后不再出现,那么这取决于它们受哪个服务控制。如果您使用了 nm,那么本质上它会在您安装 openvpn 时自动创建 tun/tap 接口,并且不能使用 networkctl 删除它们,而只能用 强制删除nmcli tool
。nm 和 sn 之间有一个微妙之处,当您激活 sn 时,在安装例如“openvpn”之前卸载 nm 很重要,因为 nm 会自动为流量隧道创建接口并且它保留在 networkctl 列表中并且它无法删除它。但是如果您在安装 openvpn 之前卸载并停用 nm,那么创建的接口就无法从 networkctl 列表中创建和消失。这样您就不会偶然发现由 nm 创建的接口,... networkctl 列表中没有海滩,如果您想彻底改变,那么我建议您使用 systemd-networkd,您可以逐渐习惯它的语法。
- Nmcli 是一个用于控制网络管理器和报告网络状态的命令行工具。
- Networkctl 可用于检查 systemd-networkd 所见的网络链接状态。
奈克利来自网络管理器。
重启后关闭所有接口,由 nm 管理:
nmcli networking off
显示接口/连接:
nmcli
nmcli general status
nmcli device show tun0
nmcli connection
暂时禁用/删除 nm 接口直到重新启动:
nmcli device set autoconnect no tun0
nmcli device set managed no tun0
nmcli device delete tun0
uuidgen tun0
84a068f7-efe5-40c5-a813-3fc85fabdcc3 # replace it with yours uuid
nmcli connection delete 84a068f7-efe5-40c5-a813-3fc85fabdcc3
网络控制来自 systemd-networkd。
为了有可能考虑一个适当的设置解决方案而不是急于重新安装系统,那么从 nm 绕过不必要接口的唯一方法是创建一个使用您需要的所有接口的 sn 的配置/etc/default/grub
,从而将它们添加到自动加载中。要查看 networkctl 中的接口(仅查看您感兴趣的接口),请创建一个配置 01-netcfg.yaml:
sudo apt install bridge-utils net-tools ; reboot # use net-tools to display ifconfig list
sudo nano /etc/netplan/01-netcfg.yaml
netplan --debug generate
将您创建的配置添加到自动加载:
sudo nano /etc/default/grub
替换以下行:
GRUB_CMDLINE_LINUX=""
在:
GRUB_CMDLINE_LINUX="netcfg/do_not_use_netplan=true"
update-grub ; reboot
ifconfig
查看你拥有的所有接口:
networkctl status all
WARNING: systemd-networkd is not running, output will be incomplete.
Failed to request link: No such device
因此,您可以在这里看到,直到 sn 运行时,networkctl 才会显示。
在 networkctl 中重新启动之前关闭接口:
sudo ifconfig tun0 down
sudo ip link set tun0 down
sudo ip link delete tun0
sudo systemctl restart systemd-networkd ; sudo systemctl status systemd-networkd