使用WIFI網絡卡 dhcp動態獲取IP

2022-06-21 06:36:09 字數 3268 閱讀 8208

前面幾篇部落格中,wifi網絡卡的ip都是手工設定的,本篇部落格將來移植dhcp,使得wifi網絡卡可以動態的獲取ip、路由等資訊。

在pc機上執行dh +tab鍵,看一下有哪些應用程式?

其中有乙個應用程式為dhclient,執行dhclient -v,可以看到:

for info,please visit

從這可以看出,它就是從**獲取原始碼的。

a. dhcp : 使得wifi網絡卡動態獲取ip

a.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: $/gen.c

$ $ $ -o $@ $/gen.c $

改為gen: $/gen.c

$ $ $ -o $@ $/gen.c $

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

a.2 使用:

mkdir -p /var/db   //解決出現的警告資訊

wpa_supplicant -b -c/etc/wpa_wpa2.conf -iwlan0

dhclient -d wlan0

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

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

cat /etc/resolv.conf,可以看到將網域名稱伺服器也設定好了。

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

a.3 這樣使用起來還有一些麻煩,能不能一接入wifi網絡卡,就自動執行wpa_supplicant等

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

fichmod +x /sbin/auto_wifi.sh

a.4 一連線上wifi ap, 就自動執行dhclient

建立一指令碼:

cat /sbin/wpa_action.sh

#!/bin/sh

ifname=$1   //網絡卡

cmd=$2    //命令   有connected和disconnected兩種。

if [ "$cmd" = "connected" ]; then

echo connect $ifname, dhclient for it > /dev/console

dhclient $ifname

fiif [ "$cmd" = "disconnected" ]; then

echo disconnect $ifname, kill dhclient for it > /dev/console

killall dhclient

fi總結一下接上網絡卡和拔掉網絡卡的過程:

首先接上網絡卡時會觸發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

Centos 7開啟網絡卡開啟DHCP自動獲取IP

在windows10上安裝了centos7的hyper v虛擬機器。雖然配置了可訪問外網的網絡卡 win8.1 hyper v 共享本機ip上網 但是預設安裝的centos是沒有開啟配置網絡卡資訊的,也就是說,仍然不能訪問外網。這時候,如果執行需要外網訪問的命令,就會出現 couldn t reso...

使用DHCP動態管理主機位址

什麼是dhcp 動態主機配置協議 dhcp,dynamic host configuration protocol 該協議用於自動管理區域網內主機的ip位址 子網掩碼 閘道器位址及dns位址等引數,可以有效地提公升ip位址的利用率,提高配置效率,並降低管理與維護成本。dhcp常見術語 1 作用域 乙...

使用DHCP動態管理主機位址

動態主機配置協議 dhcp 是一種基於udp協議且僅限於在區域網內部使用的網路協議,主要用於大型的區域網環境或者存在較多移動辦公裝置的區域網環境中,其主要用途是讓區域網中的主機自動獲得網路引數 ip位址 子網掩碼 閘道器位址以及dns位址等引數 dhcp涉及的常見術語 超級作用域 用於管理處於同乙個...