3

Я использую Mac OS X Lion, и у меня возникла эта проблема с FTP (любой FTP-клиент, обратите внимание. Я пробовал Transmit, FileZilla, Cyberduck и Терминал, все с тем же результатом)

Я могу просматривать файлы в моем FTP-клиенте, но когда я загружаю файлы, клиент зависает на несколько секунд, а затем думает, что успешно загрузил файлы, но создает только новый файл с одной пустой строкой. Иногда удается загрузить 4-5 строк.

Затем он возвращает:

226 - Error during read from data connection
226 Transfer aborted

Но 2xx - это сообщение об успехе. Это не проблема сервера, поскольку любая машина с Windows будет нормально загружаться по той же сети. Кто-нибудь может понять, в чем проблема? Это делает мой Mac бесполезным для веб-разработки.

Проблема сохраняется с SFTP и FTP с SSL/TLS.

1 ответ1

1

Проблема исчезает, когда вы берете маршрутизатор и подключаетесь напрямую через PPPoE.

На первый взгляд проблема с роутером. Но нет, проблема в Mac, который подключается через маршрутизатор, который подключается через PPPoE и пытается загрузить через FTP. Я знаю довольно специфично.

Проблема с MTU (максимальная единица передачи). Очевидно, Mac OS X разбивает файл на куски, которые слишком велики для отправки маршрутизатором, поскольку MTU маршрутизатора был установлен ниже, чем Mac OS X.

Маршрутизатор здесь был 1492, что нормально, но там, где MTU для Mac составляет 1500, это недопустимо. Не очень понимаю, почему это работает напрямую с PPPoE.

Если вы столкнулись с той же проблемой, вот как вы диагностируете и исправляете ее:

В терминале запустите следующее, чтобы увидеть, что MTU для en0 (или en1, у меня было en0):

ifconfig | grep mtu

Если это 1500, беги

sudo ifconfig en0 mtu 1300

Это должно решить это.

Если это так, это может быть только до следующего перезапуска. Вы также можете изменить MTU в Системных настройках \ Сеть \ Ethernet -> Дополнительно \ Оборудование


Позже отредактируйте:

Исправление в одну строку (если вы хотите использовать его как расширение Alfred или запустить его при запуске, замените его на пароль sudo):

echo <password> | sudo -S ifconfig en0 mtu 1300;

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .