理解linux虚拟网络设备veth

作者:刘海峰,IT行业资深码农,从事.net/java/go语言开发十余年,长期关注springcloud/k8s/linux网络相关的技术,现为滴普科技容器产品首席架构师。


前言

前面介绍了linux network namespace,接着介绍一下如何让一个独立的网络命名空间和主机的网络互通,这里我们需要用到linux虚拟网络设备veth。

veth设备

veth是linux的一种虚拟网络设备,它有点类似于两张网卡中间用一条网线连着,veth设备总是成对出现,通常用来连接不同网络命名空间(下面开始简称NS),一端连着NS1的内核协议栈,另一端连着NS2的内核协议栈,一端发送的数据会立刻被另一端接收。
在这里插入图片描述

接下来我们通过一些示例来理解veth设备,我们创建一个新的NS,然后跟主机的NS连接起来

通过下面的命令可以创建一对veth设备:

ip link add veth0 type veth peer name veth1

然后创建一个名为ns1的network namespace :

ip netns add ns1

然后把刚创建的veth1网卡的其中一端转到ns1,这就好像一端插到ns1上,另一端插在主机的ns上:

ip link set veth0 netns ns1

给veth的两端都配置个IP,设置veth0时,要用ip netns exec ns1,因为veth0此时在ns1中:

ip netns exec ns1 ip addr add 192.168.10.10/24 dev veth0
ip addr add 192.168.10.11/24 dev veth1

把两张网卡都启动起来:

ip netns exec ns1 ip link set veth0 up
ip link set veth1 up 

此时的状态如下:
在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部