嵌入式linux 学习笔记--如何使用udhcpc获取动态IP

如何使用udhcpc获取动态IP

本文是为了提供给百问网wiki使用而编辑的!同步发表到个人博客

udhcpc是一个动态分配IP的指令,使用这个指令我们可以为开发板动态的获得一个IP。

1. 正确的进行硬件连接

首先要明确一个概念,路由器和交换机,能动态分配IP的是路由器,而交换机是不能进行动态IP的分配的,所以如果想使用动态分配IP的功能,请确保开发板已经连接到一个路由器而不是交换机(或者开发板连接到交换机之后,交换机的某一个端口连接到了路由器的lan口)如果是使用单独的交换机的话 则需要设置固定的IP。

2 .使用串口登录到开发板

正确的连接串口线和开发板,确保能使用串口登录到开发板并且输入命令。

3.打开网卡

如果需要某个网口获得动态IP,则需要将这个网口使能(默认情况下网卡0已经使能,网卡1 为使能)

可以使用以下指令查看网卡的使能状态。

[root@ebf6ull:/etc]# ifconfig
eth0      Link encap:Ethernet  HWaddr B6:74:53:97:D3:32
          inet addr:192.168.1.101  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::b474:53ff:fe97:d332/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1380 errors:0 dropped:0 overruns:0 frame:0
          TX packets:468 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:296205 (289.2 KiB)  TX bytes:37792 (36.9 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

如上图所示 显示的是只有一个网卡使能。如果需要使能网卡1

[root@ebf6ull:/etc]# ifconfig eth1 up
[23220.804681] Micrel KSZ8081 or KSZ8091 20b4000.ethernet-1:02: attached PHY driver [Micrel KSZ8081 or KSZ8091] (mii_bus:phy_addr=20b4000.ethernet-1:02, irq=-1)
[23220.819375] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[root@ebf6ull:/etc]# ifconfig
eth0      Link encap:Ethernet  HWaddr B6:74:53:97:D3:32
          inet addr:192.168.1.101  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::b474:53ff:fe97:d332/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1451 errors:0 dropped:0 overruns:0 frame:0
          TX packets:485 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:305108 (297.9 KiB)  TX bytes:38506 (37.6 KiB)

eth1      Link encap:Ethernet  HWaddr C6:80:EA:BE:35:7F
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

[root@ebf6ull:/etc]#

此时两个网卡都已经使能,如果此时接上网线并且连接到路由器,指定网口的灯应该是黄色常亮的状态。

4.获取动态IP

[root@ebf6ull:/etc]# udhcpc
udhcpc: started, v1.29.3
udhcpc: sending discover
udhcpc: sending select for 192.168.1.101
udhcpc: lease of 192.168.1.101 obtained, lease time 7200
deleting routers
adding dns 202.96.134.33
adding dns 202.96.128.166
[root@ebf6ull:/etc]#

至此开发板已经获得了动态的IP地址。 此处不建议将获得动态IP的指令加入到开机启动项中,笔者曾加入过但是 因为没接网线,导致整个系统一直卡在获取动态IP的代码段!建议使用配置路由器的IP 段的方式将某一段IP 隔离(动态分配永远不会分配到这一段的IP,例如将动态分配的起始地址设置为192.168.1.10)

然后在开发板的启动脚本中加入设置固定IP 的代码段,去给开发板设置一个固定的IP。 此处不细说。

[root@ebf6ull:/etc]# ifconfig eth0 192.168.1.111
[root@ebf6ull:/etc]# ifconfig
eth0      Link encap:Ethernet  HWaddr B6:74:53:97:D3:32
          inet addr:192.168.1.111  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::b474:53ff:fe97:d332/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1574 errors:0 dropped:0 overruns:0 frame:0
          TX packets:519 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:314286 (306.9 KiB)  TX bytes:40534 (39.5 KiB)

eth1      Link encap:Ethernet  HWaddr C6:80:EA:BE:35:7F
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

可以将下面代码段加入到/etc/init.d/rcS中去

ifconfig eth0 192.168.1.111
  • 10
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值