Linux虚拟网卡

昨天研究了下利用虚拟网卡实现两个机器利用一个物理网卡连接外网的内核源码和设置,其实利用虚拟网卡上网的例子在上学 的时候就做过类似的实验,一般可以在一个机器A的一个网卡上配置一个外网ip一个内网ip,另一个内部机器B只配置内网ip,让后B的网关设置为A的内网ip,在A机器上启用netfilter的NAT功能,再启用A机器的路由转发功能,就可以实现B由A上外网的功能了!就如下面这个图。

INTERNET<——>eth0<——>host1<——>eth0:0<——>eth0<——>host2

昨晚又看了看netfilter的代码,恩,太乱了,还需要读读,以前分析有点太浅了。

今天有顺便虚拟网卡的例子,根据以前一个网卡程序,修改了下,32的内核中,网卡的操作方法也一struct ops的形式出现了,共同归net_device来管理,踢出了原来的init方法,在修改了这些后,实现了简单的一个虚拟网卡,在上面的实验中测试了下,也没有问题,虚拟机可以根据既有的配置找到这个虚拟网卡,并且可以通信!哈哈,内核还是好玩。回头想想怎么把这个实际应用下!

2 thoughts on “Linux虚拟网卡

  1. 这个应该是几个配置指令简单搞定的事情。熟悉iptables命令的网管,几分钟可以搞定。无需研究内核源码。

  2. 是的,这个只不过就是nat的设置。但是知道内核中的实现原理就更容易控制和定制开发了,

Leave a Reply

Your email address will not be published. Required fields are marked *