dhcp的安装与使用

dhcp的编译安装

解压源码:

tar zxvf dhcp-4.2.5-P1.tar.gz
cd dhcp-4.2.5-P1/

配置:

./configure --host=arm-linux ac_cv_file__dev_random=yes

修改Makefile:

cd bind
vim Makefile +55

添加配置 :

./configure BUILD_CC=gcc ac_cv_file__dev_random=yes --host=arm-linux --disable-kqueue
tar xzf bind.tar.gz
vim bind-9.8.4-P2/lib/export/dns/Makefile.in +169
修改CC :
${BUILD_CC} ${ALL_CFLAGS} ${LDFLAGS} -o $@ ${srcdir}/gen.c ${LIBS}
cd ../
make
make DESTDIR=$PWD/tmp install

复制应用程序、配置文件和脚本文件到根文件系统

cp ./client/scripts/linux /mnt/rootfs/etc/dhclient-script
vim /mnt/rootfs/etc/dhclient-script
将#!/bin/bash改成#!/bin/sh
chmod +x /mnt/rootfs/etc/dhclient-script
cd ./tmp/usr/local/
cp ./bin/* /mnt/rootfs/bin/
cp ./sbin/* /mnt/rootfs/sbin/
cp ./etc/dhclient.conf.example /mnt/rootfs/etc/dhclient.conf
cp ./etc/dhcpd.conf.example /mnt/rootfs/etc/dhcpd.conf

创建进程交互文件目录:

mkdir -p /mnt/rootfs/var/db/
touch /mnt/rootfs/var/db/dhclient.leases
touch /mnt/rootfs/var/db/dhcpd.leases

树莓派上安装DHCPD

sudo apt install udhcpd
sudo vim /etc/udhcpd.conf    	#修改DHCP池,DNS,网关地址
sudo vim /etc/default/udhcp		#将DHCPD_ENABLE="no"注释,使能UDHCPD
sudo touch /var/lib/misc/udhcpd.leases 
sudo systemctl restart udhcpd.service

工具使用

在这里的实验中的热插拔,由于我使用的是sdio接口wifi,直接使用mdev.conf中设备名直接使用wlan0貌似不好使,还没有找到原因(直接将设备名改为任意字符“.*”,本来想通过echo “$MDEV”,找到模块名,但竟然没有匹配上,非常有可能是驱动没有实现的问题),最后直接将auto_wifi_xx.sh脚本命令复制到rcS文件中运行算了,有待后续找到问题。

客户端:

最简单的就是打开网卡之后,使用dhclient wlan0获得ip、网关和DNS
dhclient -d wlan0 可以得到运行的调试信息


添加热插拔功能实现:
当插入网卡的时候,先执行wpa_supplicant连接热点,启动wpa_cli检测连接完成,然后执行脚本启动dhclient

vim /etc/mdev.conf 
wlan0 0:0 777 * /etc/auto_wifi_sta.sh

vim /etc/auto_wifi_sta.sh

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

添加执行权限

chmod +x /etc/auto_wifi_sta.sh 

一连接上WIFI AP, 就自动执行dhclient脚本:
vim /etc/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 /etc/wpa_action.sh

服务端:

最简单的命令,先在/etc/dhcpd.conf中添加一个可分配的网段,然后根据这个网段设置无线网卡的ip:

subnet 192.168.88.0 netmask 255.255.255.0 {
        range 192.168.88.150 192.168.88.200;    
        option domain-name-servers 192.168.88.1;        
        option routers 192.168.88.1;
}
ifconfig wlan0 192.168.88.1     
dhcpd -cf /etc/dhcpd.conf wlan0

热插拔功能实现:

vim /etc/mdev.conf
wlan0 0:0 777 * /etc/auto_wifi_ap.sh
vim /etc/auto_wifi_ap.sh
#!/bin/sh
if [ $ACTION = "add" ]; 
then
   echo -e "Hostapd AP Starting\n"
   hostapd -B /etc/hostapd.conf
   ifconfig wlan0 192.168.88.1
   dhcpd -cf /etc/dhcpd.conf wlan0
else
   echo -e "Hostapd AP Closing.\n"
   killall hostapd
   killall dhcpd
fi

添加执行权限:

chmod +x /etc/auto_wifi_ap.sh
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值