Chinaunix首页 | 论坛 | 博客
  • 博客访问: 439370
  • 博文数量: 58
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 623
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-26 18:48
个人简介

在生存面前,那纯洁的理想,原来是那么脆弱不堪!

文章分类

全部博文(58)

文章存档

2022年(1)

2021年(1)

2019年(3)

2018年(6)

2017年(6)

2016年(14)

2015年(10)

2014年(16)

2013年(1)

我的朋友

分类: 服务器与存储

2014-11-05 16:28:17

创建虚拟网卡有多种方法,这里简单记录一下。

一,ifconfig    网络配置工具(开发者建议用ip代替)

点击(此处)折叠或打开

  1. [root@pingshun net]# ifconfig eth0:0 1.1.1.1 up
  2. [root@pingshun net]# ifconfig eth0:0
  3. eth0:0 Link encap:Ethernet HWaddr 08:9E:01:E0:8D:CC
  4.           inet addr:1.1.1.1 Bcast:1.255.255.255 Mask:255.0.0.0
  5.           UP BROADCAST MULTICAST MTU:1500 Metric:1
       说明,eth0表示存在设备的名,如果有无线,也可以是wlan0
  同理可以 创建eth0:1  eth0:2   eth0:3 ........

二,brctl   创建一个桥接设备

点击(此处)折叠或打开

  1. [root@pingshun net]# brctl addbr virbr0
  2. [root@pingshun net]# ifconfig virbr0
  3. virbr0 Link encap:Ethernet HWaddr 26:C9:23:F0:8B:61
  4.           BROADCAST MULTICAST MTU:1500 Metric:1
  5.           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
  6.           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
  7.           collisions:0 txqueuelen:0
  8.           RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
    说明:现在设备已经创建,只是还没有配置和启动,ifconfig命令不会显示该设备。
      可以使用ifconfig配置,并启动:

点击(此处)折叠或打开

  1. [root@pingshun net]# ifconfig virbr0 192.168.122.1
  2. [root@pingshun net]# ifconfig virbr0
  3. virbr0 Link encap:Ethernet HWaddr 26:C9:23:F0:8B:61
  4.           inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
  5.           inet6 addr: fe80::24c9:23ff:fef0:8b61/64 Scope:Link
  6.           UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
  7.           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
  8.           TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
  9.           collisions:0 txqueuelen:0
  10.           RX bytes:0 (0.0 b) TX bytes:468 (468.0 b)

三,/etc/sysconfig/network-script/文件夹下添加ifcfg-*文件
        系统在启动时会启动/etc/init.d/network脚本程序,依据ifcfg-*文件中的规则帮你创建,这也是永久创建的一种方式。例如:

两个网桥配置文件

  1. [root@pingshun network-scripts]# cat ifcfg-br0
  2. DEVICE=virbr0
  3. TYPE=Bridge
  4. BOOTPROTO=none
  5. ONBOOT=yes
  6. IPADDR=192.168.162.100
  7. NETMASK=255.255.255.0
  8. [root@pingshun network-scripts]# cat ifcfg-br1
  9. DEVICE=virbr1
  10. TYPE=Bridge
  11. BOOTPROTO=none
  12. ONBOOT=yes
  13. IPADDR=192.168.162.101
  14. NETMASK=255.255.255.0
附加一:
           如果你用strace跟踪执行上述前两个命令工具,就会看到用户层的应用程序,如何调用系统接口,完成内核对象配置。
               比如:
                brctl

点击(此处)折叠或打开

  1. socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 4
  2. ..............
  3. ioctl(4, SIOCGIFFLAGS, {ifr_name="eth0:0", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_MULTICAST}) = 0
  4. ioctl(4, SIOCSIFFLAGS, {ifr_name="eth0:0", ???}) = -1 EADDRNOTAVAIL (Cannot assign requested address)
                ifconfig:

点击(此处)折叠或打开

  1. socket(PF_FILE, SOCK_DGRAM, 0)          = 3
  2. .......
  3. ioctl(4, SIOCSIFADDR, {ifr_name="eth0:0", ifr_addr={AF_INET, inet_addr("1.1.1.1")}}) = 0
  4. ioctl(4, SIOCGIFFLAGS, {ifr_name="eth0:0", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_MULTICAST}) = 0
  5. ioctl(4, SIOCSIFFLAGS, {ifr_name="eth0:0", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_MULTICAST}) = 0
  6. ioctl(4, SIOCGIFFLAGS, {ifr_name="eth0:0", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_MULTICAST}) = 0
  7. ioctl(4, SIOCSIFFLAGS, {ifr_name="eth0:0", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_MULTICAST}) = 0
            (稍微有点奇怪系统调用!!!!!!!!!!)

附加二:
          linux内核在设备注册后,会在虚拟文件系统创建可供展示的文件,可以查看该文件夹查看相关的内核信息。
           早期的在/proc文件下,最新的内核启用功能更好的/sys/文件夹下。

对于我们的虚拟网络设备:

/sys/class/net/
[root@pingshun net]# ls
eth0  lo  virbr0  virbr1  wlan0
[root@pingshun net]# rmmod ath9k
[root@pingshun net]# ls
eth0  lo  virbr0  virbr1
[root@pingshun net]# ifconfig wlan0
wlan0: error fetching interface information: Device not found

我们把驱动卸载掉,可以看到找不到相关设备,下面我们再加载相关驱动
[root@pingshun net]# modprobe ath9k
[root@pingshun net]# ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 48:D2:24:9E:1E:04  
          inet addr:10.6.23.144  Bcast:10.6.23.255  Mask:255.255.254.0
          inet6 addr: fe80::4ad2:24ff:fe9e:1e04/64 Scope:Link

看到设备又回来了。

对于添加设备的原理,可以用 udevadm monitor命令监听内核创建过程。具体请参考udev的相关知识。





阅读(3729) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~