如何在 MacBook 的以太网端口上成功运行 DHCP 服务器?

tek*_*ird 6 unix dhcp raspberry-pi macos

我的目标是在我的 MacBook 以太网端口上安装一个以太网交换机,我将通过 DHCP 连接几个 Raspberry Pi 来获取它们的 IP,每个都将运行一个 VNC 服务器以进行远程访问,我希望我的互联网可以共享给他们我的 MacBook 的 WiFi 连接。

为了做到这一点,我使用了 OSX 的内置 DHCP 服务器,如下所示:

  • 编辑 /etc/ 中的 bootpd.plist,为 192.168.2.0 网络配置 DHCP 服务器

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    <key>Subnets</key>
    <array>
        <dict>
        <key>_creator</key>
        <string>com.apple.InternetSharing</string>
        <key>allocate</key>
        <true/>
        <key>dhcp_domain_name_server</key>
            <array>
                <string>192.168.2.1</string>
            </array>
        <key>dhcp_router</key>
            <string>192.168.2.1</string>
        <key>lease_max</key>
            <integer>36000</integer>
        <key>lease_min</key>
            <integer>36000</integer>
        <key>name</key>
            <string>192.168.2/24</string>
        <key>net_address</key>
            <string>192.168.2.0</string>
        <key>net_mask</key>
            <string>255.255.255.0</string>
        <key>net_range</key>
            <array>
                <string>192.168.2.2</string>
                <string>192.168.2.254</string>
            </array>
        </dict>
    </array>
    <key>bootp_enabled</key>
        <false/>
    <key>detect_other_dhcp_server</key>
        <true/>
    <key>dhcp_enabled</key>
        <array>
            <string>bridge0</string>
        </array>
    <key>use_server_config_for_dhcp_options</key>
        <false/>
    </dict>
    </plist>
    
    Run Code Online (Sandbox Code Playgroud)
  • 在 /etc/ 中编辑/创建 bootptab,这将静态 IP 分配给 Raspberry Pi

%%
# 主机名 hwtype hwaddr ipaddr 引导文件
Raspi1 1 aa:bb:cc:dd:ee:f1 192.168.2.2
Raspi2 1 aa:bb:cc:dd:ee:f2 192.168.2.3
Raspi3 1 aa:bb:cc:dd:ee:f3 192.168.2.4
Raspi4 1 aa:bb:cc:dd:ee:f4 192.168.2.5
  • 使用以下命令运行/停止 DHCP 服务器,在我的 ~/.bash_profile 中创建一个别名:
别名 dhcp-start='sudo /bin/launchctl load -w /System/Library/LaunchDaemons/bootps.plist'
别名 dhcp-stop='sudo /bin/launchctl unload -w /System/Library/LaunchDaemons/bootps.plist'

太好了,我可以远程连接到每个 Pi,但是我遇到了以下问题:

  1. 无法从每个 Pi 连接到互联网,因为我已经在 OSX 的共享菜单中共享了从 WiFi 到以太网端口的互联网连接:

    OSX 中的 Internet 共享

  2. 重置 MacBook 后,将删除 bootpd.plist 文件

对解决上述两个问题的任何帮助表示赞赏!

jua*_*ant 3

据我了解,您的互联网共享可能会干扰您的bootd配置,特别是考虑到您正在为 Raspberry \xcf\x80s 分配静态地址。

\n\n

一旦 dhcp 服务器运行,您就可以为它们创建路由。如果您的 wifi 已打开en1,并且我们假设您的网关已en1打开172.16.0.1,您可以执行以下操作

\n\n
sudo route add 192.168.2.0/24 172.16.0.1\n
Run Code Online (Sandbox Code Playgroud)\n\n

这将导致来自 的数据包192.168.2.0通过192.168.2.255您的 wifi 网关。

\n\n

例如,请参阅添加到 Mac OS X\n 的永久静态路由,了解如何实现自动化。

\n