加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

详解:Linux收集假造化技能

发布时间:2019-05-17 07:02:35 所属栏目:站长百科 来源:Android高级架构师
导读:Linux的收集假造化是LXC项目中的一个子项目,LXC包罗文件体系假造化,历程空间假造化,用户假造化,收集假造化,等等,这里行使LXC的收集假造化来模仿多个收集情形。 本文从根基的收集装备讲起,到详细尝试环节,但愿能对 Linux 自己的假造收集情形有一个
副问题[/!--empirenews.page--]

Linux的收集假造化是LXC项目中的一个子项目,LXC包罗文件体系假造化,历程空间假造化,用户假造化,收集假造化,等等,这里行使LXC的收集假造化来模仿多个收集情形。

详解:Linux收集假造化技能

本文从根基的收集装备讲起,到详细尝试环节,但愿能对 Linux 自己的假造收集情形有一个宏观的相识。

TUN 装备

TUN 装备是一种假造收集装备,通过此装备,措施可以利便得模仿收集举动。先来看看物理装备是怎样事变的:

详解:Linux收集假造化技能

全部物理网卡收到的包会交给内核的 Network Stack 处理赏罚,然后通过 Socket API 关照给用户措施。下面看看 TUN 的事变方法:

详解:Linux收集假造化技能

平凡的网卡通过网线收发数据包,可是 TUN 装备通过一个文件收发数据包。全部对这个文件的写操纵会通过 TUN 装备转换成一个数据包送给内核;当内核发送一个包给 TUN 装备时,通过读这个文件可以拿到包的内容。

假如我们行使 TUN 装备搭建一个基于 UDP VPN,那么整个处理赏罚进程就是这样:

详解:Linux收集假造化技能

数据包会通过内核收集栈两次。可是颠末 App 的处理赏罚后,数据包也许已经加密,而且原有的 ip 头被封装在 udp 内部,以是第二次通过收集栈内核看到的是截然差异的收集包。

TAP 装备

TAP 装备与 TUN 装备事变方法完全沟通,区别在于:

TUN 装备的 /dev/tunX 文件收发的是 IP 层数据包,只能事变在 IP 层,无法与物理网卡做 bridge,可是可以通过三层互换(如 ip_forward)与物理网卡连通。

TAP 装备的 /dev/tapX 文件收发的是 MAC 层数据包,拥有 MAC 层成果,可以与物理网卡做 bridge,支持 MAC 层广播

MACVLAN

偶然我们也许必要一块物理网卡绑定多个 IP 以及多个 MAC 地点,固然绑定多个 IP 很轻易,可是这些 IP 会共享物理网卡的 MAC 地点,也许无法满意我们的计划需求,以是有了 MACVLAN 装备,其事变方法如下:

详解:Linux收集假造化技能

MACVLAN 会按照收到包的目标 MAC 地点判定这个包必要交给哪个假造网卡。单独行使 MACVLAN 仿佛毫有时义,可是共同之前先容的 network namespace 行使,我们可以构建这样的收集:

详解:Linux收集假造化技能

因为 macvlan 与 eth0 处于差异的 namespace,拥有差异的 network stack,这样行使可以不必要成立 bridge 在 virtual namespace 内里行使收集。

MACVTAP

MACVTAP 是对 MACVLAN的改造,把 MACVLAN 与 TAP 装备的特点综合一下,行使 MACVLAN 的方法收发数据包,可是收到的包不交给 network stack 处理赏罚,而是天生一个 /dev/tapX 文件,交给这个文件:

详解:Linux收集假造化技能

因为 MACVLAN 是事变在 MAC 层的,以是 MACVTAP 也只能事变在 MAC 层,不会有 MACVTUN 这样的装备。

建设假造收集情形

行使呼吁

  1. $ ip netns add net0 

可以建设一个完全断绝的新收集情形,这个情形包罗一个独立的网卡空间,路由表,ARP表,ip地点表,iptables,ebtables,等等。总之,与收集有关的组件都是独立的。

行使呼吁

  1. $ ip netns listnet0 

可以看到我们适才建设的收集情形

进入假造收集情形

行使呼吁

  1. $ ip netns exec net0  
  2. `command` 

我们可以在 net0 假造情形中运行任何呼吁

详解:Linux收集假造化技能

这样我们可以在新的收集情形中打开一个shell,可以看到,新的收集情形内里只有一个lo装备,而且这个lo装备与表面的lo装备是差异的,之间不能相互通信。

毗连两个收集情形

新的收集情形内里没有任何收集装备,而且也无法和外部通信,就是一个孤岛,通过下面先容的这个要领可以把两个收集情形连起来,简朴的说,就是在两个收集情形之间拉一根网线。

  1. $ ip netns add net1 

先建设另一个收集情形net1,我们的方针是把net0与net1连起来。

详解:Linux收集假造化技能

这里建设连一对veth假造网卡,相同pipe,发给veth0的数据包veth1何处会收到,发给veth1的数据包veth0会收到。就相等于给呆板安装了两个网卡,而且之间用网线毗连起来了。

  1. $ ip link set veth0 netns net0 
  2. $ ip link set veth1 netns net1 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读