В macOS встроен сервер TFTP — протокола, по которому получают по сети файлы перепрошивки многие устройства. Данный сервер почти не требует настройки, но есть некоторые тонкости, о которых следует знать.

Начиная с macOS Sierra, TFTP-сервер не запускается с plist-файлом сервиса по умолчанию. На форуме поддержки Apple также есть решение, чтобы TFTP-сервер не пытался подняться на IPv6-интерфейсе в файл /System/Library/LaunchDaemon/tftpd.plist необходимо в секцию Listeners добавить пару ключей. Итоговый файл будет выглядит следующим образом (потребуется отключить SIP):

<code>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Disabled</key>
    <true/>
    <key>Label</key>
    <string>com.apple.tftpd</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/libexec/tftpd</string>
        <string>-i</string>
        <string>/private/tftpboot</string>
    </array>
    <key>inetdCompatibility</key>
    <dict>
        <key>Wait</key>
        <true/>
    </dict>
    <key>InitGroups</key>
    <true/>
    <key>Sockets</key>
    <dict>
        <key>Listeners</key>
        <dict>
            <key>SockFamily</key> # <-- добавить это -->
            <string>IPv4</string> # <-- и вот это -->
            <key>SockServiceName</key>
            <string>tftp</string>
            <key>SockType</key>
            <string>dgram</string>
        </dict>
    </dict>
</dict>
</plist>
</code>

Для запуска TFTP сервера воспользуемся командой:

sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist

Для проверки состояния сервера можно воспользоваться командой:

netstat -atp UDP | grep tftp

Следующий вывод означает, что сервер запущен и работает:

Также можно проверить состояние сервера, проверив использование им порта:

netstat -na |grep *.69

Остановить TFTP

sudo launchctl unload -F /System/Library/LaunchDaemons/tftp.plist
0 0 vote
Article Rating