详解:Linux收集假造化技能
副问题[/!--empirenews.page--]
Linux的收集假造化是LXC项目中的一个子项目,LXC包罗文件体系假造化,历程空间假造化,用户假造化,收集假造化,等等,这里行使LXC的收集假造化来模仿多个收集情形。 本文从根基的收集装备讲起,到详细尝试环节,但愿能对 Linux 自己的假造收集情形有一个宏观的相识。 TUN 装备 TUN 装备是一种假造收集装备,通过此装备,措施可以利便得模仿收集举动。先来看看物理装备是怎样事变的: ![]() 全部物理网卡收到的包会交给内核的 Network Stack 处理赏罚,然后通过 Socket API 关照给用户措施。下面看看 TUN 的事变方法: ![]() 平凡的网卡通过网线收发数据包,可是 TUN 装备通过一个文件收发数据包。全部对这个文件的写操纵会通过 TUN 装备转换成一个数据包送给内核;当内核发送一个包给 TUN 装备时,通过读这个文件可以拿到包的内容。 假如我们行使 TUN 装备搭建一个基于 UDP VPN,那么整个处理赏罚进程就是这样: ![]() 数据包会通过内核收集栈两次。可是颠末 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 装备,其事变方法如下: ![]() MACVLAN 会按照收到包的目标 MAC 地点判定这个包必要交给哪个假造网卡。单独行使 MACVLAN 仿佛毫有时义,可是共同之前先容的 network namespace 行使,我们可以构建这样的收集: ![]() 因为 macvlan 与 eth0 处于差异的 namespace,拥有差异的 network stack,这样行使可以不必要成立 bridge 在 virtual namespace 内里行使收集。 MACVTAP MACVTAP 是对 MACVLAN的改造,把 MACVLAN 与 TAP 装备的特点综合一下,行使 MACVLAN 的方法收发数据包,可是收到的包不交给 network stack 处理赏罚,而是天生一个 /dev/tapX 文件,交给这个文件: ![]() 因为 MACVLAN 是事变在 MAC 层的,以是 MACVTAP 也只能事变在 MAC 层,不会有 MACVTUN 这样的装备。 建设假造收集情形 行使呼吁
可以建设一个完全断绝的新收集情形,这个情形包罗一个独立的网卡空间,路由表,ARP表,ip地点表,iptables,ebtables,等等。总之,与收集有关的组件都是独立的。 行使呼吁
可以看到我们适才建设的收集情形 进入假造收集情形 行使呼吁
我们可以在 net0 假造情形中运行任何呼吁 ![]() 这样我们可以在新的收集情形中打开一个shell,可以看到,新的收集情形内里只有一个lo装备,而且这个lo装备与表面的lo装备是差异的,之间不能相互通信。 毗连两个收集情形 新的收集情形内里没有任何收集装备,而且也无法和外部通信,就是一个孤岛,通过下面先容的这个要领可以把两个收集情形连起来,简朴的说,就是在两个收集情形之间拉一根网线。
先建设另一个收集情形net1,我们的方针是把net0与net1连起来。 ![]() 这里建设连一对veth假造网卡,相同pipe,发给veth0的数据包veth1何处会收到,发给veth1的数据包veth0会收到。就相等于给呆板安装了两个网卡,而且之间用网线毗连起来了。
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |