使用WIFI网卡 dhcp动态获取IP

前面几篇博客中,wifi网卡的ip都是手工设置的,本篇博客将来移植dhcp,使得wifi网卡可以动态的获取ip、路由等信息。

那我们去哪里下载dhcp源码呢?在pc机上执行dh +tab键,看一下有哪些应用程序?其中有一个应用程序为dhclient,执行dhclient -v,可以看到:For info,please visit http://www.isc.org/downloads/dhcp从这可以看出,它就是从网站http://www.isc.org/sw/dhcp获取源码的。

a. dhcp : 使得WIFI网卡动态获取IPa.1 编译、安装tar xzf dhcp-4.2.5-P1.tar.gzcd dhcp-4.2.5-P1./configure --host=arm-linux ac_cv_file__dev_random=yes

cd bind修改Makefile:./configure BUILD_CC=gcc ac_cv_file__dev_random=yes --host=arm-linux --disable-kqueue

tar xzf bind.tar.gzcd bind-9.8.4-P2修改 lib/export/dns/Makefile.in gen: ${srcdir}/gen.c ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o $@ ${srcdir}/gen.c ${LIBS}改为gen: ${srcdir}/gen.c ${BUILD_CC} ${ALL_CFLAGS} ${LDFLAGS} -o $@ ${srcdir}/gen.c ${LIBS}

cd ../..make DESTDIR=$PWD/tmp install

把文件复制到NFSsudo cp bin/* /work/nfs_root/fs_mini_mdev_new/bin/sudo cp sbin/* /work/nfs_root/fs_mini_mdev_new/sbin/sudo cp etc/dhclient.conf.example //work/nfs_root/fs_mini_mdev_new/etc/dhclient.confsudo cp etc/dhcpd.conf.example //work/nfs_root/fs_mini_mdev_new/etc/dhcpd.conf

sudo cp client/scripts/linux /work/nfs_root/fs_mini_mdev_new/etc/dhclient-scriptchmod +x /work/nfs_root/fs_mini_mdev_new/etc/dhclient-script并修改#!/bin/bash改为#!/bin/sh

a.2 使用:mkdir -p /var/db   //解决出现的警告信息wpa_supplicant -B -c/etc/wpa_wpa2.conf -iwlan0dhclient -d wlan0

此时ifconfig看一下,就可以看到wlan0有ip了。

route看一下,也配置了路由了。

cat /etc/resolv.conf,可以看到将域名服务器也设置好了。

直接ping news.qq.com,就会成功。

a.3 这样使用起来还有一些麻烦,能不能一接入WIFI网卡,就自动执行wpa_supplicant等参考第2期视频第28课热拔插cat /etc/mdev.conf wlan0 0:0 777 * /sbin/auto_wifi.sh

cat /sbin/auto_wifi.sh#!/bin/shif [ $ACTION = "add" ];then   wpa_supplicant -B -c/etc/wpa_wpa2.conf -iwlan0    //如果添加网卡(包括两种情况:连接与断开)的话,就需要执行这两条命令   wpa_cli -a/sbin/wpa_action.sh -Belse   killall wpa_supplicant   //拔掉网卡时,执行这些命令。   killall wpa_cli   killall dhclientfi

chmod +x /sbin/auto_wifi.sh

a.4 一连接上WIFI AP, 就自动执行dhclient创建一脚本: cat /sbin/wpa_action.sh #!/bin/shIFNAME=$1   //网卡CMD=$2    //命令   有connected和disconnected两种。if [ "$CMD" = "CONNECTED" ]; then   echo connect $IFNAME, dhclient for it > /dev/console   dhclient $IFNAMEfiif [ "$CMD" = "DISCONNECTED" ]; then   echo disconnect $IFNAME, kill dhclient for it > /dev/console   killall dhclientfi

总结一下接上网卡和拔掉网卡的过程:

首先接上网卡时会触发mdev,mdev就会根据配置文件mdev.conf执行/sbin/auto_wifi.sh脚本。当它发现是添加网卡时,就会执行下面这两条命令: wpa_supplicant -B -c/etc/wpa_wpa2.conf -iwlan0 wpa_cli -a/sbin/wpa_action.sh -B:

当wpa_supplicant发现wifi网卡连接上AP之后,它就会给wpa_cli发一个事件,wpa_cli就会执行wpa_action.sh的脚本。 当wpa_supplicant发现网卡与AP断开之后,它也会给wpa_cli发送一个事件,wpa_cli就会去执行wpa_action.sh的脚本。

对于wpa_action.sh脚本:

一旦接上wifi 网卡时,执行CONNECTED那个分支,默认的就是这个分支。我感觉这个地方脚本还有点问题。问题在于在wpa_action.sh这个脚本中,你是如何确定它走的是CONNECTED分支还是DISCONNECTED分支。在auto_wifi.sh脚本中,你只是指明了它要执行wpa_action.sh这个脚本,但是具体执行哪个分支,并没有交代清楚。

如果将网卡拔掉时,同样会触发mdev,执行medv.conf,此时它不走add那条分支了,而是直接执行: killall wpa_supplicant killall wpa_cli killall dhclient

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 一般情况下不会冲突。DHCP动态主机配置协议)是一种网络协议,用于自动分配IP地址、子网掩码、默认网关和DNS服务器等网络参数。当多个网络接口开启DHCP时,它们会向DHCP服务器请求分配网络参数,DHCP服务器会为每个接口分配独立的IP地址,因此不会出现冲突。 但是,如果你的计算机连接的网络中有多个DHCP服务器,它们可能会分配不同的IP地址给同一个网络接口,导致冲突。此外,如果你的计算机同时连接到两个或多个不同的网络(例如有线和无线网络),则可能需要手动配置每个接口的IP地址和子网掩码,以避免冲突。 ### 回答2: 有线网卡Wifi网卡同时开启DHCP并不会造成冲突。DHCP动态主机配置协议)是用于自动分配IP地址、网关和DNS设置等网络参数的协议。当有线网卡Wifi网卡同时开启DHCP时,它们会向同一DHCP服务器发送请求,但DHCP服务器会根据网卡的MAC地址来分别回应给它们不同的IP地址和其他网络参数。 当有线网卡Wifi网卡同时连接到同一网络时,它们实际上会被视为两个独立的设备。通过DHCP服务器,它们会分别获取不同的IP地址,并且它们之间的通信是相互独立的,不会产生冲突。 然而,需要注意的是,在某些情况下,同时开启有线网卡Wifi网卡可能会导致网络速度变慢。这是因为当两个网卡同时连接到同一网络时,系统的网络连接管理会花费额外的资源来处理这两个连接。如果您只需要使用一个网络连接,建议将另一个网卡禁用,以优化网络性能。 总结而言,有线网卡Wifi网卡同时开启DHCP不会发生冲突,但可能会对网络性能产生一定影响。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值