通过设置MAC电脑的DHCP服务器可以为局域网内的其它设备自动分配IP地址,还能把物理地址和IP地址绑定起来,限制IP地址的获取。

 
OS X 10.11或以上版本已内置DHCP服务器软件,即bootpd。通过man bootpd命令即可查看这个命令的用法。
bootpd启动时可提供2种模式,即DHCP和bootp,但默认情况不开启DHCP而是开启了Bootp服务,所以需要通过bootp -D把DHCP服务打开。
DHCP的配置包含以下步骤:
1.准备活动
2.设置开机启动。通过LaunchDaemon程序设置开机启动。
3.设置bootpd的运行方式。配置bootpd的2个配置文件bootps.plist和bootptab。bootps.plist用于设置dhcp或者bootp协议的运行方式,而bootptab用于设置地址池。
 
准备活动
配置DHCP服务前最重要的事情,就是把本机的DHCP客户端设置成手动获取IP地址的方式,因为DHCP客户端无法从本机的DHCP服务端获取IP地址。配置方法:系统偏好设定->网络->以太网连接->在右边下拉按钮选择手动,再填写ip地址,注意不要与网关地址相同。
 
设置开机启动
1)编辑启动脚本。由于OS X10.11(OS X EI Capitan)上首次启用了SIP(System Integrity Protection )模式,所有启动脚本文件都设置了restricted位(通过ls -lO可查看restricted位),这导致即使是root用户也没有权限对这些文件进行任何修改,包括修改内容和文件权限。
为了修改启动脚本,可先通过以下步骤关闭sip模式:
a)重启 Mac,听到启动声音后迅速按住 Command+R 键直到 Apple logo 出现,进入 Recovery Mode
b)点击 Utilities > Terminal
c)在 Terminal 中输入 csrutil disable,之后回车
d)重启 Mac
2)成功关闭sip模式后就可以利用下面的XML代码覆盖系统目录中的启动脚本(/System/Library/LaunchDaemons/bootps.plist).
  1.  
    <?xml version="1.0" encoding="UTF-8"?>
  2.  
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3.  
    <plist version="1.0">
  4.  
    <dict>
  5.  
    <key>Disabled</key>
  6.  
    <true/>
  7.  
    <key>Label</key>
  8.  
    <string>com.apple.bootpd</string>
  9.  
    <key>Program</key>
  10.  
    <string>/usr/libexec/bootpd</string>
  11.  
    <key>ProgramArguments</key>
  12.  
    <array>
  13.  
    <string>/usr/libexec/bootpd</string>
  14.  
    <string>-Dv</string>
  15.  
    </array>
  16.  
    <key>Sockets</key>
  17.  
    <dict>
  18.  
    <key>Listeners</key>
  19.  
    <dict>
  20.  
    <key>SockFamily</key>
  21.  
    <string>IPv4</string>
  22.  
    <key>SockServiceName</key>
  23.  
    <string>bootps</string>
  24.  
    <key>SockType</key>
  25.  
    <string>dgram</string>
  26.  
    </dict>
  27.  
    </dict>
  28.  
    <key>inetdCompatibility</key>
  29.  
    <dict>
  30.  
    <key>Wait</key>
  31.  
    <true/>
  32.  
    </dict>
  33.  
    </dict>
  34.  
    </plist>

3)加载启动脚本命令:sudo /bin/launchctl load -w /System/Library/LaunchDaemons/bootps.plist

4)去除启动脚本命令:sudo /bin/launchctl unload -w /System/Library/LaunchDaemons/bootps.plist

设置bootpd的运行方式

1)bootpd有两个配置文件,一个是bootps.plist用于指导dhcp和bootp服务的工作方式,另一个是bootptab,用于设置地址池。(注意,此处的bootps.plist与上一个步骤的plist文件同名,但作用完全不同,前者的目的是设置开机启动bootpd程序,本文件的目地是指导bootpd程序的运行方式)

2)bootps.plist的路径:/etc/bootps.plist

3)bootps.plist配置文件内容:

  1.  
    <?xml version="1.0" encoding="UTF-8"?>
  2.  
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3.  
    <plist version="1.0">
  4.  
    <dict>
  5.  
    <key>Subnets</key>
  6.  
    <array>
  7.  
    <dict>
  8.  
    <key>allocate</key>
  9.  
    <true/>
  10.  
    <key>allow</key>
  11.  
    <array>
  12.  
    <string>8C:FA:BA:01:E6:F3</string>
  13.  
    <string>6C:FD:B9:C8:7E:2B</string>
  14.  
    <string>B8:09:8A:83:22:A3</string>
  15.  
    <string>10:dd:b1:c6:b4:37</string>
  16.  
    <string>60:92:17:A2:C2:65</string>
  17.  
    <string>E0:06:E6:1B:AE:A0</string>
  18.  
    <string>E8:8D:28:DF:13:0C</string>
  19.  
    <string>64:09:80:D8:5B:98</string>
  20.  
    <string>b8:98:f7:11:a4:79</string>
  21.  
    <string>70:72:3C:53:CE:BA</string>
  22.  
    <string>00:0a:f5:10:fb:2c</string>
  23.  
    <string>b8:98:f7:aa:1e:0d</string>
  24.  
    <string>28:b2:bd:af:07:62</string>
  25.  
    <string>68:3e:34:4c:ca:cb</string>
  26.  
    <string>9C:44:3D:1E:68:F4</string>
  27.  
    <string>A8:15:4D:F5:4A:AC</string>
  28.  
    <string>68:3e:34:4c:ca:cb</string>
  29.  
    <string>54:EE:75:27:6C:D4</string>
  30.  
    </array>
  31.  
    <key>dhcp_domain_name</key>
  32.  
    <string>ns1.drugsales.com</string>
  33.  
    <key>dhcp_domain_name_server</key>
  34.  
    <string>192.168.1.1</string>
  35.  
    <key>dhcp_router</key>
  36.  
    <string>192.168.1.1</string>
  37.  
    <key>lease_max</key>
  38.  
    <integer>86400</integer>
  39.  
    <key>lease_min</key>
  40.  
    <integer>86400</integer>
  41.  
    <key>name</key>
  42.  
    <string>vulcan</string>
  43.  
    <key>net_address</key>
  44.  
    <string>192.168.1.0</string>
  45.  
    <key>net_mask</key>
  46.  
    <string>255.255.255.0</string>
  47.  
    <key>net_range</key>
  48.  
    <array>
  49.  
    <string>192.168.1.100</string>
  50.  
    <string>192.168.1.200</string>
  51.  
    </array>
  52.  
    </dict>
  53.  
    </array>
  54.  
    <key>bootp_enabled</key>
  55.  
    <false/>
  56.  
    <key>detect_other_dhcp_server</key>
  57.  
    <integer>1</integer>
  58.  
    <key>dhcp_enabled</key>
  59.  
    <array>
  60.  
    <string>en0</string>
  61.  
    </array>
  62.  
    <key>reply_threshold_seconds</key>
  63.  
    <integer>0</integer>
  64.  
    </dict>
  65.  
    </plist>

4)bootptab文件内容(路径也是/etc/bootptab):

  1.  
    %%
  2.  
    # machine entries have the following format:
  3.  
    #
  4.  
    # hostname hwtype hwaddr ipaddr bootfile
  5.  
    vulcan-macmini 1 10:dd:b1:c6:b4:37 192.168.1.2
  6.  
    vulcan-iphone5s 1 60:92:17:A2:C2:65 192.168.1.100
  7.  
    tangling-pc 1 E0:06:E6:1B:AE:A0 192.168.1.101
  8.  
    tangling-iphone5 1 E8:8D:28:DF:13:0C 192.168.1.102
  9.  
    tangMum-xiaomi 1 64:09:80:D8:5B:98 192.168.1.103
  10.  
    iPad3 1 8C:FA:BA:01:E6:F3 192.168.1.104
  11.  
    vulcan-huawei 1 70:72:3C:53:CE:BA 192.168.1.105
  12.  
    vulcan-u2 1 00:0a:f5:10:fb:2c 192.168.1.106
  13.  
    vulcan-u4 1 b8:98:f7:aa:1e:0d 192.168.1.107
  14.  
    vulcan-win8-wifi 1 28:b2:bd:af:07:62 192.168.1.108
  15.  
    vulcan-win8-eth 1 54:EE:75:27:6C:D4 192.168.1.109
  16.  
    mum-mobile 1 d0:2d:b3:8e:48:4c 192.168.1.110
  17.  
    vulcan-meilan 1 68:3e:34:4c:ca:cb 192.168.1.111
  18.  
    android-tvbox 1 9C:44:3D:1E:68:F4 192.168.1.112
  19.  
    yangzhenxue-iphone5s 1 B8:09:8A:83:22:A3 192.168.1.113
  20.  
    yangzhenxue-hasee 1 6C:FD:B9:C8:7E:2B 192.168.1.114

5)手动启动bootpd的命令:bootpd -Ddv,D表示要启动DHCP模式,d表示前台运行并把调试信息重定向到标准输出,v表示输出更加全面的调试信息。

6)使用苹果系统自带的“控制台”工具程序可以查看bootpd的运行日志。

7)bootpd的日志文件输出到/var/log/system.log文件中。

如果输出以下调试信息,恭喜你,这说明bootpd的启动是没有问题的:

Jan  4 00:05:16 bogon bootpd[3185]: server starting

Jan  4 00:05:16 bogon bootpd[3185]: re-reading /etc/bootptab

Jan  4 00:05:16 bogon bootpd[3185]: Loaded 16 entries from bootptab (0 bad)

Jan  4 00:05:16 bogon bootpd[3185]: server name bogon

Jan  4 00:05:16 bogon bootpd[3185]: interface en0: ip 192.168.1.2 mask 255.255.255.0

常见错误信息:

1.bootpd[1091]: bind call failed: Permission denied

2.bootpd[1290]: bind call failed: Address already in use,说明地址已经被绑定,很可能有bootpd的另一个实例在运行。

Mac电脑如何设置DHCP的更多相关文章

  1. 怎么用Mac电脑创建多个桌面

    区别于win的单个桌面,Mac电脑可以设置多个桌面,方面用户处理各种多乱杂的情况.究竟怎么用Mac电脑创建多个桌面呢?一起来看看吧! 1.首先打开Mission Control,点击偏好设置 2.然后 ...

  2. mac 中host设置方法

    在开发中,有的接口为了安全考虑,只能通过指定的域名去反问,这时本地启动的 localhost 就无法获取到数据,需要去更改电脑的host文件配置,下面介绍mac 电脑的设置方法 1. 打开终端,输入一 ...

  3. 远程Jenkins新增Mac电脑节点

    一,前言 上一篇博客Jenkins集成appium自动化测试(Windows篇)介绍了怎么使用远程Jenkins新建节点连接本地Windows电脑进行Appium自动化测试集成. 但是在做ios Ap ...

  4. mac电脑http代理服务设置公司内网的相关配置

    哈喽,亲爱的小伙伴们 ,今天给大家分享一下公司内网配置 http代理服务设置及外网访问 ,<这是mac电脑的噢>  ===链接地址我的github项目   https://github.c ...

  5. mac电脑设置USB键盘按键方法,设置多显示屏镜像显示器的方法

    mac电脑设置USB键盘按键方法,设置多显示屏镜像显示器的方法 设置多显示屏镜像显示器的方法 ==================== mac电脑复制粘贴使用command+c command+v - ...

  6. Mac电脑完美解决 BasicIPv6ValidationError 问题,通过命令行更改ip设置

    在更改mac电脑ip网络时,提示BasicIPv6ValidationError.

  7. Mac OS 网络设置教程 wifi设置与宽带设置详解

    虽然所有设备连接无线网络的步骤都相差无几,但是Mac与windows系统还是不相同的,那么,苹果Mac怎么连接无线网络呢?针对此问题,本文就为大家介绍Mac网络的设置教程,有兴趣的朋友们可以了解下.如 ...

  8. 【工具使用】mac电脑使用技巧

    本文地址 分享提纲: 1.  mac命令行和finder的交互 2. 一些mac的插件 3. 一些开发的配置 1.mac命令行和findder交互           1)命令行中打开当前文件夹: o ...

  9. mac电脑的使用

    1. control + command + a 截图 2. shift + command + g 前往 3.在 Mac OS X 中怎样获取当前文件夹的路径 原文网址:https://www.zh ...

随机推荐

  1. JavaScript之关闭轮询定时器(setTimeout/clearTimeout|setInterval/clearInterval)小结

    已知: 1.1 开启Timeout程序: scope.setTimeout("functionName()" | functionHandle, timeValue) 返回值:ti ...

  2. luogu P2627 修剪草坪

    传送门 单调队列优化dp板子 表示不大想写详细做法,自己看代码吧qwq (懒) 注意细节,不然就会跟我一样WA4次 // luogu-judger-enable-o2 #include<bits ...

  3. luogu P1268 树的重量

    一开始把这题想复杂了,,, 这里记\(di[i][j]\)表示\(i\)到\(j\)的距离 首先如果\(n=2\),答案显然为\(di[1][2]\) 如果\(n=3\) 懒得画图了盗图过来 那么3号 ...

  4. Java基础中的一些概念理解

    同步 和 异步区别 同步和异步通常用来形容一次方法的调用. 同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为.而异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用 ...

  5. swift 计算100000以内的 回文数

    ... { var rep = var aa = a repeat{ rep = rep * + aa % aa = aa / }) if(rep == a) { print("\(a)是回 ...

  6. 【转】PyDev Eclipse使用技巧说明

    PyDev Package Explorer 创建项目 在开展工作之前,需要创建一个新的项目.在 Eclipse 菜单栏中,选择 File > New > Project > Pyd ...

  7. ES系列十一、ES的index、store、_source、copy_to和all的区别

    1.基本概念 1.1._source 存储的原始数据._source中的内容就是搜索api返回的内容,如: { "query":{  "term":{   &q ...

  8. 如何在windows上调试安卓机谷歌浏览器上的页面

    - 下面的方法仅在windows和安卓机上测试过,,,, - 手机(安卓机)需要安装chrome与电脑(Windows)上的chrome配合,也就是只能调试谷歌浏览器上的页面 1.手机的准备工作 打开 ...

  9. unbuntu 16.04.2 安装 Eclipse C++开发环境

    1.安装JAVA (1)首先添加源: sudo gedit /etc/apt/sources.list 在打开的文件中添加如下内容并保存: deb http://ppa.launchpad.net/w ...

  10. plsql developer无法识别32位oracle问题如何解决?

    1.登录PL/SQL Developer这里省略Oracle数据库和PL/SQL Developer的安装步骤,注意在安装PL/SQL Developer软件时,不要安装在Program Files ...