博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
udhcpc 和 udhcpd
阅读量:4159 次
发布时间:2019-05-26

本文共 2648 字,大约阅读时间需要 8 分钟。

由于要使用网络通讯,所以不可避免的要用到dhcp。理想的网络通讯方式是下面3种都要支持:

  1,接入已有网络。这便要求可以作为dhcp客户端。

  2,作为DHCP服务器,动态分配IP。

  3,指定固定IP

  第3种情况没有什么好说的,简单说下前2种情况。

  使用步骤:

  (1)在内核的网络项里面把DHCP配置上;

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

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

  udhcpd就是终端设备作为DHCP服务器

  udhcpc就是终端设备作为DHCP客户端

  busybox里面对dhcp都已经给出例子了,

  [zhh@localhost busybox-1.14.1]$ ls ./examples/udhcp/

  sample.bound  sample.deconfig  sample.nak  sample.renew  sample.script  simple.script  udhcpd.conf

  比如使用udhcpc时

  就可以直接把simple.script拿来使用,改不改名字都可以,busybox里面默认的目录文件是/usr/share/udhcpc/default.script

  可以查看下帮助

  # udhcpc --help

  BusyBox v1.14.1 (2010-01-22 10:35:16 CST) multi-call binary

  Usage: udhcpc [-Cfbnqtvo] [-c CID] [-V VCLS] [-H HOSTNAME] [-i INTERFACE]

  [-p pidfile] [-r IP] [-s script] [-O dhcp-option]... [-P N]

  -V CLASSID      Vendor class identifier

  -i INTERFACE    Interface to use (default: eth0)

  -H,-h HOSTNAME  Client hostname

  -c CLIENTID     Client identifier

  -C              Suppress default client identifier

  -p file         Create pidfile

  -r IP           IP address to request

  -s file         Run file at DHCP events (default /usr/share/udhcpc/default.script)

  -t N            Send up to N request packets

  -T N            Try to get a lease for N seconds (default 3)

  -A N            Wait N seconds (default 20) after failure

  -O OPT          Request DHCP option OPT (cumulative)

  -o              Do not request any options (unless -O is also given)

  -f              Run in foreground

  -b              Background if lease is not immediately obtained

  -S              Log to syslog too

  -n              Exit with failure if lease is not immediately obtained

  -q              Quit after obtaining lease

  -R              Release IP on quit

  -P N            Use port N instead of default 68

  -a              Use arping to validate offered address

  #

  这样就很好理解了。

  下面就说说使用udhcpd,同样可以直接把busybox自带的udhcpd.conf作为参考,怎么设置该文件就不详述了,去参考相关文档即可。看看udhcpd怎么使用

  # udhcpd --help

  BusyBox v1.14.1 (2010-01-22 10:35:16 CST) multi-call binary

  Usage: udhcpd [-fS] [-P N] [configfile]

  DHCP server

  -f      Run in foreground

  -S      Log to syslog too

  -P N    Use port N instead of default 67

  帮助一目了然。

  我使用的时候直接

  #udhcpd /etc/udhcpd.conf

  即可。

  还有一个租约文件要简要说说,使用udhcpd时会要求建立一个租约文件,按照提示创建一个就行了,它起什么作用呢?就是为了记录客户端所获得的IP,如果没有租约文件,则会重新给客户端分配一个新IP,如果有,则使用原先分配的IP。

 

以下几点基于busybox 1.23.2 中udhcp的实现, 不同客户端、服务器实现可能会有差异。

DHCP client  ---- udhcpc :
-R选项可以让udhcpc进程退出的时候释放ip地址。
   
DHCP Server ---- udhcpd:
1. 不会主动释放IP地址,即使原来的租约超时(前提是IP地址还没分配完,或者分配完了但是没有新的客户端请求地址);
2.  假设IP地址A已经超期,但是DHCP服务器还有剩余IP地址,这时如果有请求,服务器优先分配剩余的IP地址;
3. 假设服务器上没有剩余IP地址,但是有一批超期的IP地址,这时如果有请求,服务器优先分配超时最久的IP地址(即最早分配出去的IP地址);
4. 如果一个客户之前申请了IP地址A,然后不再续约,A地址超期; 过了很久该客户又去请求DHCP,如果这时A地址还没分配给其他客户,那么服务器还会分配A地址给该客户;
5. 释放租约只是把某一项请求的超时时间设置为当前时间,并不会删除该表项;
6. 如果所有的IP地址都分配出去了,并且都没到期,新的请求上来,不再分配IP地址,即使某个IP对应好的客户端已经不在线了(ping不通)。

转载地址:http://dqdxi.baihongyu.com/

你可能感兴趣的文章
CentOS yum 源的配置与使用
查看>>
安装R package的2种方法
查看>>
ggplot2--legend图例的修改
查看>>
ggplot2--Legend(图例操作)
查看>>
遍历目录下的所有文件夹和文件,为指定文件改名
查看>>
Crontab定时任务配置
查看>>
Linux添加/删除用户和用户组
查看>>
linux下对于用户的操作
查看>>
chdir与getcwd
查看>>
kill(杀死)僵尸进程
查看>>
解决找不到动态库libpthread.so
查看>>
linux shell 关联数组 hash
查看>>
Git 分支管理和冲突解决
查看>>
Redhat关闭SELinux和防火墙的办法
查看>>
linux下怎么查看ssh的用户登录日志
查看>>
VirtualBox使用VBoxManage 命令调整分辨率
查看>>
Linux Shell 脚本中字符串的连接方法
查看>>
Linux shell脚本的字符串截取
查看>>
linux程序守护进程(shell)
查看>>
linux 下shell中if的“-e,-d,-f”是什么意思
查看>>