Блог Ходакова

#golang #macos #linux #overwatch и стопицот других тегов
TFTP в macOS

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

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

<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
$ sudo launchctl start com.apple.tftpd

Кроме того, есть GUI-утилита для запуска и отслеживания TFTP-сервера — TftpServer. Она позволяет перезапускать TFTP-сервер, видеть, что у него в корне за файлы расположены, и смотреть журнал сервера.

← Про софт по подписке Dynamic DNS у Hurricane Electric →