如何永久删除 tun 接口

如何永久删除 tun 接口

我正在运行带有 openvpn 2.4.7 的 Ubuntu 19.10,随着时间的推移,我已经积累了 40 个 tun 设备,这些设备在我登录时都会显示出来。ifconfig确认它们都在那里。

tun 适配器太多,无法全部显示

我努力了:

  • 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:

https://netplan.io/

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

相关内容