Linux GRE隧道

GRE隧道是一种IP-OVER-IP的隧道,可以让封装的网络层数据包能够进行传输,用到的tunnel虚拟设备两端分别对封装的数据包进行封装和解封

下面是两台虚拟机里创建隧道通信,虚拟机网络均设置为Host-Only

首先两台虚拟里linux需要加载内核模块,是ip_gre

lihui@2015:~$ lsmod | grep gre
gre                    13796  1 o[......]

Read more

NAT

虚拟机设置NAT模式,尽管虚拟机发出的流量数据是虚拟机的,但是会被NAT隐藏在内部,让外部无法发觉,但会通过NAT网络地址转换,通过宿主机的网络来访问外网,也就是只要宿主机能够访问外网,NAT虚拟机也能访问

在虚拟机访问外网的时候,数据包包头的src ip被NAT转换成宿主机IP来访问外网,同时会记录这一映射关系,等外网的数据包返回,查找这个映射关系,再将dst ip修改成原本的ip地址,达到通信[……]

Read more

Linux network namespace

有了前面有关namespace的隔离的例子,对于namespace的认识应该会更深一层,对于网络的namespace同样可以虚拟化出多个网络环境,相互之间的网络环境都是独立的

在Linux里,创建网络命名空间通过netns来完成,具体可以查看netns的man page,有的linux版本是man net-ns,我这个debian更奇怪,还需要如下apt安装

sudo apt-get install[......]

Read more

神秘的虚拟CPU以及性能考虑

VMware上一块物理网卡能虚拟出几块一样的虚拟网卡,那一个物理CPU是否能虚拟出多个呢,如果可以的话,岂不是能够单CPU模拟多处理并行

由于公司系统的运行环境对于多核的CPU Affinity绑定要求十分高,这样问题来了,假如安装在虚拟机里,分配了两个不同的CPU,如何能保证不会跨CPU呢,感觉想不通,试试再说

通过VMware ESXi来进行测试,宿主服务器2个物理CPU,12核

首先虚拟机属[……]

Read more

虚拟机网络

无论是VMware还是VirtualBox,在虚拟机网络连接的时候,提供了多种网络连接类型,而针对不同的类型,有的环境下能够连接上,而有的环境下是无法连接上的,既然虚拟化大公司做了这些设置,而且都类似,自然有他的道理

每当创建一个虚拟机,网络连接中大概有桥接模式(B),NAT模式(N),仅主机模式(H),自定义(U)和LAN区段(L),后两个是后来新版本新添加的网络模式,以前老版本只有前面三种,也[……]

Read more