如何摆脱 veth 接口?

如何摆脱 veth 接口?

我不知道为什么/何时,veth我的系统中出现了一些接口(Ubuntu 16.0. LTS):

» ifconfig | grep veth
veth4556676 Link encap:Ethernet  HWaddr ee:b9:b9:ed:71:a6  
veth8747335 Link encap:Ethernet  HWaddr 66:40:47:fd:1f:a7  
veth13905bf Link encap:Ethernet  HWaddr ae:73:8f:f7:9d:d4  
veth2636dd7 Link encap:Ethernet  HWaddr fa:b8:3c:d4:52:9c  
veth42de626 Link encap:Ethernet  HWaddr 92:08:43:90:6e:f3  
veth4eedb05 Link encap:Ethernet  HWaddr 66:5f:b8:e7:52:05  
veth7534db0 Link encap:Ethernet  HWaddr 16:9c:06:e6:f2:aa  
veth83508c7 Link encap:Ethernet  HWaddr 5a:55:6c:ee:e5:7b  
veth8f275d6 Link encap:Ethernet  HWaddr 46:18:a1:52:7f:e9  
veth9f370c9 Link encap:Ethernet  HWaddr da:9e:49:37:b4:16  
vethb96da94 Link encap:Ethernet  HWaddr 42:11:90:11:8a:f4  
vethba463c9 Link encap:Ethernet  HWaddr 06:40:d5:9a:79:7a  
vethd820900 Link encap:Ethernet  HWaddr a2:94:53:c8:53:bf  
vethdd077a0 Link encap:Ethernet  HWaddr 1a:f9:00:93:05:5e  
vethef191e6 Link encap:Ethernet  HWaddr b2:b0:e1:68:50:7c  
vethf70a6f9 Link encap:Ethernet  HWaddr a6:a7:72:dd:88:69  

这发生在刚刚重启的系统中。我有两个问题:

  1. 为什么那些韦特接口是否存在?
  2. 我怎样才能摆脱它们?

注意:我最近一直在做一些与 Vagrant / VirtualBox 相关的东西,所以这可能是原因。

答案1

为什么veth存在这些接口?

可能是因为你正在使用虚拟化平台例如 vmware 或 virtualbox 或 vagrant。

摆脱veth接口!

我认为存在更好的解决方案,但是暂时您可以这样做。

  • 获取名称interfaces

    ifconfig | grep "^veth" | cut -d' ' -f1
    

    这里仅选择以 开头的grep "^veth"那些接口(由 列出) ,并通过消除内容并仅显示第一个字段来仅显示名称。ifconfigvethcutdf

  • 现在我们必须关闭驱动程序对于这些接口使用

    ifconfig vethxxxxxx down
    

    另外,您可以使用ip命令来执行此操作(按照建议@dirkt 在评论中)。

    ip link set $veth down
    

    但由于它们太多,因此使用for如下循环:

    for veth in $(ifconfig | grep "^veth" | cut -d' ' -f1)
    do
        ifconfig $veth down    # OR this ip link set $veth down
    done
    
  • 以下是复制粘贴的一行代码:

    for veth in $(ifconfig | grep "^veth" | cut -d' ' -f1); do ifconfig $veth down; done
    

请随意在答案中添加更多内容。

答案2

添加到@C0deDaedalus 答案,提供的解决方案对我来说并不完全起作用,因此我对其进行了修改以使其起作用ip

带来韦特接口关闭

for veth in $(ip a | grep veth | cut -d' ' -f 2 | rev | cut -c2- | rev | cut -d '@' -f 1 )
do
    sudo ip link set $veth down
done

删除韦特接口

for veth in $(ip a | grep veth | cut -d' ' -f 2 | rev | cut -c2- | rev | cut -d '@' -f 1 )      
do
    sudo ip link delete $veth  
done

根据你的根与否,你可以保留sudo或不保留

答案3

尝试改进脚本(易于阅读)

查找接口名称(选择你喜欢的一个)

ip link | grep -Eo '\bveth\w+'

ifconfig | grep -Eo '^veth\w+'

ifconfig | grep '^veth' | cut -d':' -f1

调低界面

for f in `ifconfig | grep -Eo '^veth\w+'`;
  do echo === $f;
  sudo ifconfig $f up;
done

笔记
当我关闭这些接口时,我的docker实例无法工作。

关于 veth
https://vivek-syngh.medium.com/linux-virtual-ethernet-devices-aba9c3840d0d

https://developers.redhat.com/blog/2018/10/22/introduction-to-linux-interfaces-for-virtual-networking#

https://man7.org/linux/man-pages/man4/veth.4.html

相关内容