当前位置 : 主页 > 手机开发 > 无线 >

使用WIFI网卡 dhcp动态获取IP

来源:互联网 收集:自由互联 发布时间:2021-06-10
前面几篇博客中,wifi网卡的ip都是手工设置的,本篇博客来将移植dhcp,使得wifi网卡可以动态的获取ip、路由等信息。 那我们去哪里下载dhcp源码呢? 在pc机上执行dh +tab键,看一下有哪些

前面几篇博客中,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获取源码的。

c. dhcp : 使得WIFI网卡动态获取IP
c.1 编译、安装
tar xzf dhcp-4.2.5-P1.tar.gz
cd 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.gz
cd bind-9.8.4-P2
修改 lib/export/dns/Makefile.in
gen: ${srcdir}/gen.c
${CC} ${ALL_CFLAGS} ${LDFLAGS} -o [email protected] ${srcdir}/gen.c ${LIBS}
改为
gen: ${srcdir}/gen.c
${BUILD_CC} ${ALL_CFLAGS} ${LDFLAGS} -o [email protected] ${srcdir}/gen.c ${LIBS}

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

把文件复制到NFS
sudo 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.conf
sudo 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-script
chmod +x /work/nfs_root/fs_mini_mdev_new/etc/dhclient-script
并修改
#!/bin/bash
改为
#!/bin/sh

c.2 使用:
mkdir -p /var/db
wpa_supplicant -B -c/etc/wpa_wpa2.conf -iwlan0
dhclient wlan0

c.2 一接入WIFI网卡,就自动执行wpa_supplicant等
参考第2期视频第28课热拔插
cat /etc/mdev.conf
wlan0 0:0 777 * /sbin/auto_wifi.sh

cat /sbin/auto_wifi.sh
#!/bin/sh
if [ $ACTION = "add" ];
then
wpa_supplicant -B -c/etc/wpa_wpa2.conf -iwlan0
wpa_cli -a/sbin/wpa_action.sh -B
else
killall wpa_supplicant
killall wpa_cli
killall dhclient
fi

chmod +x /sbin/auto_wifi.sh

一连接上WIFI AP, 就自动执行dhclient
创建一脚本:
cat /sbin/wpa_action.sh
#!/bin/sh
IFNAME=$1
CMD=$2
if [ "$CMD" = "CONNECTED" ]; then
echo connect $IFNAME, dhclient for it > /dev/console
dhclient $IFNAME
fi
if [ "$CMD" = "DISCONNECTED" ]; then
echo disconnect $IFNAME, kill dhclient for it > /dev/console
killall dhclient
fi

chmod +x /sbin/wpa_action.sh

wpa_cli -a/sbin/wpa_action.sh -B

网友评论