web-dev-qa-db-ja.com

MacBookのイーサネットポートでDHCPサーバーを正常に実行するにはどうすればよいですか?

私はMacBookのイーサネットポートにイーサネットスイッチを配置し、そこから複数のRaspberry Piを接続してDHCP経由で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>
    
  • / etc /で編集/作成されたbootptab、これは静的IPをRaspberryPiに割り当てます

 %% 
#hostname hwtype hwaddr ipaddr bootfile 
 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にエイリアスを作成しました。
 alias dhcp-start = 'Sudo/bin/launchctl load -w /System/Library/LaunchDaemons/bootps.plist'
alias dhcp-stop =' Sudo/bin/launchctl undo -w/System/Library/LaunchDaemons/bootps.plist '

各Piにリモートで接続できますが、次の問題があります:

  1. OSXの共有メニュー内でWiFiからイーサネットポートへのインターネット接続を共有しているため、各Piからインターネットに接続できません。

    Internet Sharing in OSX

  2. MacBookをリセットすると、bootpd.plistファイルが削除されます

上記の2つの問題の解決にご協力いただければ幸いです。

6
tekiwibird

私が理解しているように、特にRaspberryπに静的アドレスを割り当てている場合、インターネット共有がbootd構成を妨害している可能性があります。

Dhcpサーバーを実行したら、それらのルートを作成できます。 Wi-Fiがen1にあり、en1のゲートウェイが172.16.0.1であると想定している場合、次のようなことができます。

Sudo route add 192.168.2.0/24 172.16.0.1

これにより、192.168.2.0から192.168.2.255に送信されるパケットがwifiのゲートウェイを通過します。

自動化する方法については、たとえば、 Mac OS Xに永続的な静的ルートを追加する を参照してください。

3
juandesant