1. 程式人生 > >ARM-Linux配置DHCP自動獲取IP地址

ARM-Linux配置DHCP自動獲取IP地址

備註:
核心版本:2.6.30.9
busybox版本:1.15.2

PC Linux和開發板Linux的工作使用者:root


1. 配置核心:
[*] Networking support  ---> 
 Networking options  ---> 
  <*> Packet socket 
  <*> Unix domain sockets 
  [*] TCP/IP networking
  [*]   IP: kernel level autoconfiguration 
  [*]     IP: DHCP support
  [*] Network packet filtering framework (Netfilter)  --->
2. 配置busybox:
Networking Utilities  --->
 [*] udhcp client (udhcpc)
3.建立配置檔案:
從busybox的examples/udhcp/下copy  simple.script檔案到開發板/usr/share/udhcpc/下,並重命名為default.script

4. 測試:
在命令臺執行udhcpc,注意:必須確保區域網記憶體在DHCP伺服器,否則udhcp執行失敗。
在easy2440上面執行結果如下:
udhcpc (v1.15.2) started
Setting IP address 0.0.0.0 on eth0
Sending discover...
Sending select for 192.168.1.101...
Lease of 192.168.1.101 obtained, lease time 7200
Setting IP address 192.168.1.101 on eth0
Deleting routers
route: SIOCDELRT: No such process
Adding router 192.168.1.1
Recreating /etc/resolv.conf
 Adding DNS server 211.148.192.141
 Adding DNS server 210.21.196.6

5. 修改系統初始化配置檔案,讓開發板開機後自動獲取IP地址:
修改/etc/init.d/rcS檔案在適當位置新增命令: /sbin/udhcpc &

6. Enjoy it!

使用DHCP,為開發板自動分配IP地址

由於要使用網路通訊,所以不可避免的要用到dhcp。理想的網路通訊方式是下面3種都要支援:

1,接入已有網路。這便要求可以作為dhcp客戶端,自動獲取Ip。

2,作為DHCP伺服器,動態分配IP。

3,指定固定IP

第3種情況沒有什麼好說的,簡單說下前2種情況。

使用步驟:

(1)在核心的網路項裡面把DHCP配置上,

    Networking --->
    Networking support   
    Networking options ---> 
           Packet socket                 //新增.配置CONFIG_PACKET
          [ * ]     IP: DHCP support         //新增
          [ * ] Network packet filtering (replaces ipchains) --->  //新增,後面子選項可不選,配置CONFIG_NETFILTER

說明:若沒選 Packet socket, [ * ] Network packet filtering (replaces ipchains) --->選項,在執行udhcpc命令時出現如下錯誤:

   [[email protected](none) /]# udhcpc -f 
   udhcpc (v1.13.2) started
   eth0: link up, 100Mbps, full-duplex, lpa 0x41E1
   udhcpc: socket: Address family not supported by protocol 

(2)在busybox裡面把[*]udhcp server(udhcpd)

                          [*]udhcp client(udhcpc)都選上。

    udhcpd就是終端裝置作為DHCP伺服器 ;udhcpc就是終端裝置作為DHCP客戶端

    若busybox沒編譯相應選項,也可從網上下載相應檔案,用arm-linux交叉編譯得到udhcpd,udhcpc命令copy到usr/sbin下就可以了。

1>編譯Busybox,使make menuconfig,新增以下選項:

Networking Utilities --->
udhcp Server/Client --->
       [ ] udhcp Server (udhcpd)       //在此不作服務端,故不選。生成udhcpd命令
udhcp Client (udhcpc)       //生成udhcpc命令                                
       [ ] Lease display utility (dumpleases)                         
       [ ] Log udhcp messages to syslog (instead of stdout)         
       [ ] Compile udhcp with noisy debugging messages
若busybox沒編譯相應選項,也可從網上下載相應檔案,用arm-linux交叉編譯得到udhcpd,udhcpc命令copy到usr/sbin下就可以了。

說明:有種方法說是從網上下的udhcp_0.9.8cvs20050303.orig.tar.gz檔案,解壓後修改Makefile檔案,
在19行新增CROSS_COMPILE=arm-linux-   
註釋12行的COMBINED_BINARY=1,
否則不生成udhcpc命令。

注:使用0.9.8版本的udhcp貌似也不行,重新編譯Busybox1.9.2版本。

2>使用Busybox下的simple.script,/usr/share/udhcpc/下,並重命名為default.script,修改default.script中RESOLV_CONF="/etc/resolv.conf"為RESOLV_CONF="/tmp/resolv.conf"

說明:從網上下了幾個default.script貌似無法使用,提示無法找到default.script檔案,使用上面的方法較好。由於 使用Cramfs檔案系統,etc目錄不可寫,執行udhcp.c時會提示無法建立resolv.conf

3>將生成的udhcpc複製到開發板/sbin下,在控制檯下執行udhcpc即可,很快就可以從DHCP SERVER獲得IP地址。但是有個問題,開發板可以獲得IP地址,在路由器裡也可以看到分配地址了,問題是一使用PING命令,不管是PC 機PING 開發板,還是開發板PING PC 機,就會造成開發板宕機。試了好多方法,檢查ROUTE,檢查ARP,修改Default.script ,始終無法解決。

1>使用udhcpc時 ,就可以直接把simple.script拿來使用,busybox裡面預設的目錄檔案是/usr/share/udhcpc/default.script(改下名)

可以檢視下幫助

# udhcpc --help

#udhcpc -f

udhcpc 之後需要關閉網絡卡,之後需要送重開網絡卡使用命令

ifconfig eth0 down
ifconfig eht0 up

之後就能正常工作了,

如果無法PING本機,設定迴環地址就可以了

ifconfig lo 127.0.0.1

2> 使用udhcpd,同樣可以直接把busybox自帶的udhcpd.conf作為參考,按要求配置一下udhcpd.config檔案。

    可以檢視下幫助

    # udhcpd --help

執行的時候直接#udhcpd -fs /etc/udhcpd.conf 

還有一個租約檔案(udhcpd.leases)要簡要說說,使用udhcpd時會要求建立一個租約檔案,按照提示建立一個就行了,它起什麼作用呢?就是為了記錄客戶端所獲得的IP,如果沒有租約檔案,則會重新給客戶端分配一個新IP,如果有,則使用原先分配的IP。

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

另外,摘抄ifconfig用法文章

ifconfig 命令由超級使用者使用,用來配置所有的網路介面引數。也可以被用來重新定義一個介面的IP地址或其它的操作引數。

一、檢查網路介面 

例如:

*檢查所有網路介面的狀態:

# ifconfig –a
lo0: flags=849<UP,LOOPBACK,RUNNING,MULTICAST>; mtu 8232
inet 127.0.0.1 netmask ff000000
le0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST>;
mtu 1500 inet 128.50.1.2 netmask ffff0000 broadcast 128.50.255.255
ether 8:0:20:75:6e:6f

*檢查一個介面的狀態:

# ifconfig le0
le0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST>;
mtu 1500 inet 128.50.1.2 netmask ffff0000 broadcast 128.50.255.255
ether 8:0:20:75:6e:6f

各欄位含義:
lo0,le0——網路介面的裝置名
Flags——網路介面狀態的數字表示方式,狀態變數已經在包中定義,將在後來討論。
MTU——MTU用來定義包的儲存片
Inet——介面的Internet 地址
netmask——掩碼應用於網路層包的輸入和輸出。掩碼被用來定義哪些值是用來表示網路地址的位。
Broadcast——廣播地址,用來發送資訊到所有主機。
Ether——由ARP使用的乙太網地址(MAC)

—狀態段
UP——這個標誌指出這個介面是開放的,可以傳送和接收資料。
DOWN——相反的,這個標誌指出這個介面是關閉的,也就是說,此時不能為主機發送和轉發包。
NOTRAILERS——這個標誌指出了一個報文尾不包括以太幀的尾部。報文尾是在Berkerley Unix系統中使用的把資訊頭加到包尾的一種方式。在Solaris2.x系統中已經不支援。
RUNNING——這個標誌指出,該介面已經被系統識別。
MULTICAST——這表示介面支援多路傳送地址。
BROADCAST——這表示介面支援廣播地址。

二、網路地址配置
 

——解決網路介面故障

丟失,不完整,或不正確的配置網路介面引數,將會引起連線失敗。如:一個主機可能拒絕掛接(mount)遠端檔案系統,拒絕傳送和接收郵件,拒絕執行列印任務,如果一個主機的介面配置錯誤的話。
為了確保主機介面配置的正確,要檢查如下幾項:
所有的介面狀態是否為UP
IP地址是否正確
子網掩碼是否正確
廣播地址是否正確

——重新配置網路介面引數

* 允許一個網路介面(Enable):

# ifconfig le0 up
# ifconfig le0
le0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST>;
mtu 1500 inet 128.50.1.2 netmask ffff0000 broadcast 128.50.255.255
ether 8:0:20:75:6e:6f

*開放一個網路介面(Disable):

# ifconfig le0 down
# ifconfig le0
le0: flags=863<BROADCAST,NOTRAILERS,RUNNING,MULTICAST>; mtu 1500 
inet 128.50.1.2 netmask ffff0000 broadcast 128.50.255.255
ether 8:0:20:75:6e:6f

*關閉一個網路介面(Close):

# ifconfig le0 unplumb
# ifconfig le0
ifconfig : SIOCGIFFLAGS:le0:no such interface

*開啟一個網路介面(Open):

# ifconfig le0 plumb
# ifconfig le0
le0:flags=842<BROADCAST,RUNNING,MULTICAST>; mtu 1500
inet 0.0.0.0 netmask 0
ether 8:0:20:75:6e:6f

*設定一個IP地址,允許介面但不允許 trailers:

# ifconfig le0 inet 128.50.1.2 –trailers up
# ifconfig le0
le0: flags=842<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST>;
mtu 1500 inet 128.50.1.2 netmask ffff0000 broadcast 128.50.255.255
ether 8:0:20:75:6e:6f

*改變掩碼值和廣播值來正確的反映新的掩碼:

# ifconfig le0 netmask 255.255.255.0 broadcast +
# ifconfig le0
le0: flags=843<UP,BROADCAST,RUNNING,MULTICAST>; mtu 1500 
inet 128.50.1.2 netmask ffffff00 broadcast 128.50.1.255
ether 8:0:20:75:6e:6f

*在正確的設定子網掩碼後改變所有的廣播地址:

# ifconfig –a
lo0: flags=849<UP,LOOPBACK,RUNNING,MULTICAST>; mtu 8232
inet 127.0.0.1 netmask ff000000
le0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST>; mtu 1500
inet 128.50.1.5 netmask ffffff00 broadcast 128.50.255.255
ether 8:0:20:75:8b:59
le1: flags=842<BROADCAST,NOTRAILERS,RUNNING,MULTICAST>; mtu 1500
inet 128.50.3.6 netmask ffffff00 broadcast 128.50.255.255
ether 8:0:20:75:8b:59
# ifconfig –a broadcast +
# ifconfig –a
lo0: flags=849<UP,LOOPBACK,RUNNING,MULTICAST>; mtu 8232
inet 127.0.0.1 netmask ff000000
le0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST>; mtu 1500
inet 128.50.1.5 netmask ffffff00 broadcast 128.50.1.255
ether 8:0:20:75:8b:59
le1: flags=842<BROADCAST,NOTRAILERS,RUNNING,MULTICAST>; mtu 1500
inet 128.50.3.6 netmask ffffff00 broadcast 128.50.3.255
ether 8:0:20:75:8b:59 

相關推薦

ARM-Linux配置DHCP自動獲取IP地址

備註: 核心版本:2.6.30.9 busybox版本:1.15.2 PC Linux和開發板Linux的工作使用者:root 1. 配置核心: [*] Networking support  --->   Networking options  --->    <*> Pa

嵌入式linux通過DHCP自動獲取IP地址實現

http://blog.chinaunix.net/uid-17188120-id-2820863.html 1.  在核心中新增以下選項: Networking  --->    [*] Networking support         Networkin

Linux 實現DHCP自動獲取IP地址

1.  在核心中新增以下選項: Networking  ---> Networking support          Networking options  --->              Packet socket                 /

不同VLAN通過配置DHCP自動獲取IP

net from 保存 .com 默認 int 技術 服務端 oss 實驗目的:不同VLAN通過配置DHCP自動獲取IP實驗拓撲: 實驗需求:四臺PC機,兩臺交換機,一臺三層交換機實驗思路:1、配置DHCP 客戶端:將PC配置為“自動獲取IP地址2、確保DHCP客戶端與服務

DHCP自動獲取IP地址

DHCP在此實驗中,我打開了一臺linux還有一臺win7,用xshell去遠程連接linux,其中win7作為客戶機,linux作為服務器在linux中我打開了rh6-2,在win7中我打開了win7-1第一步:對win7設置在win7打開“控制面板”,選擇“網絡和Internet”,選擇“網絡和共享中心”

DHCP自動獲取IP地址服務

主機 感謝 RoCE TP proto ges 51cto size mark DHCP(Dynamic Host Configuration Protocol,動態主機配置協議) DHCP(Dynamic Host Configuration Protocol,動態主機配

linux如何自動獲取ip地址

動態ip 啟用 eve eth pad 開機 soft 靜態ip地址 inux 第一步:激活網卡   系統裝好後默認的網卡是eth0,用下面的命令將這塊網卡激活。  # ifconfig eth0 up   第二步:設置網卡進入系統時啟動   想要每次開機就可以自動獲取IP

CentOS 7.x網路配置,設定自動獲取IP地址

檢視網路配置資訊 使用以下命令檢視網格配置資訊: ip addr 為什麼不是ifconfig呢?因為它已經在新版的CentOS中被優化掉啦!如果有需要,可以用以下命令將其召喚回來,但前提是你得先能連上網啊,哈哈! yum install net-tools -y 示例

關於ARM開發板通過有線接入網際網路自動獲取IP地址問題

參考網頁,以備後用: 1. 配置核心: [*] Networking support  ---> Networking options  --->   <*> Packet socket   <*> Unix domain so

基礎實驗1(單臂路由及利用路由器開啟DHCP自動分配IP地址

單臂路由 路由器dhcp服務應用 子接口封裝協議實驗環境:PT 6.2兩臺PC:PC1/PC2 一臺cisco 2960交換機 一臺2620路由器實驗目的:讓PC1/PC2屬於不同的VLAN,且相互通信。同時自動獲取各自網段IP地址。1、進入2960的配置模式,劃分不同的vlan並將PC1/PC2劃入不同的

DHCP方式獲取IP地址過程

終端以廣播的形式向網路內廣播DISCOVER發現報文,報文中攜帶相關的引數列表。 網路內的伺服器,從可用地址池中分配一個ip地址給客戶機,向這個地址廣播offer報文,報文中攜帶終端請求的引數。 終端從響應offer的伺服器中選擇一個,並在request報文中攜帶選擇的伺服器的ip和

設定CentOS 7開機自動獲取IP地址

本例中以CentOS 7舉例說明如何設定Linux開機自動獲取IP地址和設定固定IP地址。具有一定的參考價值,感興趣的小夥伴們可以參考一下。 本例中以CentOS 7舉例說明如何設定Linux開機自動獲取IP地址和設定固定IP地址。 自動獲取動態IP地址 1.輸入“ip

CentOS 7 如何自動獲取IP地址

剛安裝完CentOS7,最小安裝是不開啟網絡卡的自動獲取IP的。如何操作自動獲取IP地址↓ 檢視當前網絡卡資訊使用nmcli命令,不需要再去安裝net-tools,使用ifconfig,當然也可以使用ip add show命令檢視ip地址,使用nmcli device show命令檢視

linux配置網絡卡IP地址命令詳細介紹及一些常用網路配置命令

Linux命令列下配置IP地址不像圖形介面下那麼方 便,完全需要我們手動配置,下面就給大家介紹幾種配置的方法: 即時生效(重啟後失效): ifconfig eth0 192.168.1.102 netmask 255.255.255.0  //新增IP地址 rout

Kali橋接模式DHCP自動獲取IP失敗(VMware)

Kali橋接模式DHCP自動獲取IP失敗 筆者用的是VMware執行Kali Linux,突然發現橋接模式無法上網,只能使用NAT模式.身為有一點點強迫症的人來說,這就很不爽了.於是馬上切換為橋接模式,一點點排查 第一步:檢查DNS vim

window7,xp通過cmd 設定ip地址自動獲取ip地址

提示:  如果你要使用的連線不叫“本地連線”,請改為要使用的連線名稱,如:“無線網路連線”;也請注意間隔,留空,不然執行時,會出錯。 一、手動設定.bat 1、Windows7、Vista netsh interface ip set address name="本地

Centos 7開啟網絡卡開啟DHCP自動獲取IP關閉防火牆

Centos 7開啟網絡卡開啟DHCP自動獲取IP Centos7預設安裝是沒有開啟配置網絡卡資訊的, 也就是說啥都木有,無法訪問外網; 直接開啟網路功能自動獲取ip吧,等centos7自動獲取到IP後, 再通過終端登入程式編輯設定ce

【方法】lwip-2.0.2配置DHCP自動從路由器獲取IP地址和DNS伺服器地址, 並設定NetBIOS計算機名

本文使用是STM32F107VC微控制器的有線乙太網外設ETH和DP83848外部PHY收發器。 如果使用的是Keil uVision5的編譯器,需要檢查一下lwip/include/arch/cc.h裡面是否有下面這一行: #define PACK_STRUCT_BE

arm linux開發板自動配置IP地址

配置核心: [*] Networking support ---> Networking options ---> <*> Packet socket <*> Unix

CentOS 6.9使用Setup配置網絡(解決dhcp模式插入網線不自動獲取IP的問題)

參考 ip地址 圖片 article 上下 防火墻 sdn 一個 con 說明:dhcp模式插入網線不自動獲取IP是因為網卡沒有激活,造成這種原因的,應該是安裝系統時沒有插入網線造成的。 解決方法: 修改網卡配置文件 vim /etc/sysconfig/netw