Поздравляю, вы не только сломали синхронизацию свойств каталогов и опции вроде --delay-updates или --delete-after, но и убили производительность постоянными переподключениями SSH-соединений (а ещё такая команда всё равно не работает, потому что parallel не умеет читать из stdin)
Слепое следование идеологиям ни к чему хорошему не приводит
Предположу, что это не так важно, особенно с учётом того, что стабильная версия 1 уже есть и фундаментальные принципы вряд ли поменяются в обозримом будущем (из существенных изменений разве что async/await и Pin, но про это можно отдельно почитать в какой-нибудь книжке про асинхронщину)
От создателей языка это в первую очередь «The Rust Programming Language» (это название книги) и «The Rustonomicon» — вообще они предназначены для обучения написанию программ на Rust, но ответы на некоторые вопросы «почему» в них тоже имеются
Ладно, вы все вынудили меня снова раздолбать мою сеть и повторить эксперимент
Лабораторное оборудование:
длинк с IP-адресом 1.2.3.1 и DHCP-сервером в роли провайдера
кинетик с «внешним» IP-адресом 1.2.3.4 и внутренним IP-адресом 192.168.0.1/24 в роли бытового роутера
компьютер с IP-адресом 192.168.0.168 в роли «лампочки»
гипотетический пользователь этих бытового роутера и «лампочки», который в сетях ничего не понимает
я в роли злого людя, который устроился на работу к провайдеру специально чтобы хакать лампочки
Никакие порты не проброшены, никакие дополнительные маршруты не добавлены (на скриншоте выше кинетик сам сгенерировал маршруты для своей работы)
Итак, поехали: я в качестве злого людя, хочу найти лампочку и подключиться к ней. Процесс поиска IP-адреса опустим, предположим, что я узнал или узнаю перебором, что это именно 192.168.0.168
Так как я провайдер и имею доступ к своему собственному длинку, я могу творить тёмные дела прямо на нём. Захожу на длинк и пробую подключиться к лампочке:
Ой, Network is unreachable
Ну в общем-то логично, откуда длинку знать, куда отправлять пакеты с локальными IP-адресами
Но я же провайдер и имею полный контроль над длинком!
Не проблема — добавляю маршрут для локальных IP-адресов
Пробую ещё раз:
Опаньки
Ошибка исчезла — длинк успешно отправил пакет, но кинетик его дропнул, потому что межсетевой экран делает своё тёмное дело
В захвате трафика на кинетике можно увидеть, что он успешно получает пакеты, но дальше они дропаются межсетевым экраном
Здесь выяснилось, что выключить межсетевой экран на кинетике нельзя ¯\_(ツ)_/¯
Так что вместо выключения смоделирую немного другую ситуацию:
Пользователь пытался запустить майнкрафт-сервер и своими кривыми руками надобавлял разрешающих правил в роутер
Напомню, что мы проверяем ваше утверждение «как его пакет пролезет сквозь роутер до лампочки, если у меня никакие порты не проброшены?», поэтому в рамках данного эксперимента такое устранение влияния межсетевого экрана тоже корректно
Никакие порты НЕ проброшены
(UPnP кстати тоже не установлен)
Ну, что, ещё одна попытка?
ААААААААААА
Без межсетевого экрана кинетик успешно отроутил пакет из внешней сети во внутреннюю
Скриншот из Wireshark, запущенного на «лампочке», это подтверждает
Удаляем разрешающее правило из межсетевого экрана кинетика — пакеты перестают появляться в Wireshark на «лампочке»
Таким образом, по итогам этого эксперимента в очередной раз повторю — NAT ЭТО НЕ ЗАЩИТА, защищает именно межсетевой экран, без него пакеты до лампочки прекрасно пролезают через роутер
Что такое «без дополнительных настроек»? Если под этой фразой вы имеете в виду отключение фаервола — поздравляю, вы только что сами опровергли свой самый первый комментарий
Почему? Не вижу технических причин, которые помешали бы провайдеру прописать в src свой собственный адрес — роутеры именно для того и существуют, чтобы роутить такие адреса туда-сюда между разными сетями
Вышеупомянутую проверку на практике я делал как раз на кинетике и убеждался, что включение фаерволла начинает дропать пакеты, так что буду считать, что всё ок
Всё так, поэтому я не доверяю не только своей локальной сети, но даже локалхосту (всё, для чего нашлась техническая возможность закрыть и/или зашифровать, у меня закрыто и/или зашифровано, впрочем, я пока ещё не продумал защиту от штук вроде BadUSB или DMA-атак)
Тогда в вашем примере тем более нет смысла
Так вся эта статья посвящена этому самому примеру — rclone
Поздравляю, вы не только сломали синхронизацию свойств каталогов и опции вроде
--delay-updates
или--delete-after
, но и убили производительность постоянными переподключениями SSH-соединений (а ещё такая команда всё равно не работает, потому что parallel не умеет читать из stdin)Слепое следование идеологиям ни к чему хорошему не приводит
Без танцев с бубном — это JMAP. Вопрос к клиентам, какого чёрта они за ~6 лет существования стандарта так толком и не делают его поддержку
На фоне вышеупомянутых недостатков чувствую необходимость пропиарить Stalwart
Антивируса нет (хотя вроде ничего не мешает прикрутить тот же ClamAV), но всё остальное перечисленное в наличии
Антиспам имеется, по набору реализованных правил напоминает rspamd
Админ-панель имеется (зачем-то на WebAssembly, но тем не менее)
Прямо сейчас кушает всего 50МБ памяти на моём личном сервере (но это без антивируса, да)
В Stalwart тоже имеется
Админ-панель заботливо вывалит сразу все рекомендуемые DNS-записи (SPF, DMARC, TLSA и много чего ещё) в настройках домена после его создания
Админ-панель автоматически создаёт DKIM-ключи в момент создания домена (и среди DNS-записей они тоже будут)
Этого пока нет, но можно тот же Roundcube сбоку воткнуть, если сильно надо
За исключением вышеупомянутых Roundcube и антивируса, Stalwart — это ровно один бинарник, в котором есть всё сразу
Stalwart есть в версиях AGPL и Enterprise, и, если платные фичи не нужны, можно использовать AGPL-версию без ограничений
На днях ещё появилась поддержка CardDAV и CalDAV, что позволяет использовать Thunderbird на полную катушку
Нет такого
Нажимаю где? После выбора региона и раскладки сразу идёт окно «Давайте подключим вас к сети»
Рад, что у вас и условного друга такая же нога и не болит
Ну, мой провайдер прям так и пишет в описании тарифов «подходит для администраторов сайтов и серверов»
Именно что раньше, а потом многие провайдеры потихоньку повключали NATы и с этим стало грустно
Значит товарищ майор успешно справляется с поставленной перед ним задачей 🙃
Предположу, что это не так важно, особенно с учётом того, что стабильная версия 1 уже есть и фундаментальные принципы вряд ли поменяются в обозримом будущем (из существенных изменений разве что async/await и Pin, но про это можно отдельно почитать в какой-нибудь книжке про асинхронщину)
От создателей языка это в первую очередь «The Rust Programming Language» (это название книги) и «The Rustonomicon» — вообще они предназначены для обучения написанию программ на Rust, но ответы на некоторые вопросы «почему» в них тоже имеются
После, например, провайдерского MITM на jabber.ru мой внутренний параноик предпочитает на всякий случай предполагать, что возможно всё
Тогда не знаю что вы делаете не так
Ладно, вы все вынудили меня снова раздолбать мою сеть и повторить эксперимент
Лабораторное оборудование:
длинк с IP-адресом 1.2.3.1 и DHCP-сервером в роли провайдера
кинетик с «внешним» IP-адресом 1.2.3.4 и внутренним IP-адресом 192.168.0.1/24 в роли бытового роутера
компьютер с IP-адресом 192.168.0.168 в роли «лампочки»
гипотетический пользователь этих бытового роутера и «лампочки», который в сетях ничего не понимает
я в роли злого людя, который устроился на работу к провайдеру специально чтобы хакать лампочки
Никакие порты не проброшены, никакие дополнительные маршруты не добавлены (на скриншоте выше кинетик сам сгенерировал маршруты для своей работы)
Итак, поехали: я в качестве злого людя, хочу найти лампочку и подключиться к ней. Процесс поиска IP-адреса опустим, предположим, что я узнал или узнаю перебором, что это именно 192.168.0.168
Так как я провайдер и имею доступ к своему собственному длинку, я могу творить тёмные дела прямо на нём. Захожу на длинк и пробую подключиться к лампочке:
Ой, Network is unreachable
Ну в общем-то логично, откуда длинку знать, куда отправлять пакеты с локальными IP-адресами
Но я же провайдер и имею полный контроль над длинком!
Не проблема — добавляю маршрут для локальных IP-адресов
Пробую ещё раз:
Опаньки
Ошибка исчезла — длинк успешно отправил пакет, но кинетик его дропнул, потому что межсетевой экран делает своё тёмное дело
В захвате трафика на кинетике можно увидеть, что он успешно получает пакеты, но дальше они дропаются межсетевым экраном
Здесь выяснилось, что выключить межсетевой экран на кинетике нельзя ¯\_(ツ)_/¯
Так что вместо выключения смоделирую немного другую ситуацию:
Пользователь пытался запустить майнкрафт-сервер и своими кривыми руками надобавлял разрешающих правил в роутер
Напомню, что мы проверяем ваше утверждение «как его пакет пролезет сквозь роутер до лампочки, если у меня никакие порты не проброшены?», поэтому в рамках данного эксперимента такое устранение влияния межсетевого экрана тоже корректно
Никакие порты НЕ проброшены
(UPnP кстати тоже не установлен)
Ну, что, ещё одна попытка?
ААААААААААА
Без межсетевого экрана кинетик успешно отроутил пакет из внешней сети во внутреннюю
Скриншот из Wireshark, запущенного на «лампочке», это подтверждает
Удаляем разрешающее правило из межсетевого экрана кинетика — пакеты перестают появляться в Wireshark на «лампочке»
Таким образом, по итогам этого эксперимента в очередной раз повторю — NAT ЭТО НЕ ЗАЩИТА, защищает именно межсетевой экран, без него пакеты до лампочки прекрасно пролезают через роутер
Какой один клик?
Что такое «без дополнительных настроек»? Если под этой фразой вы имеете в виду отключение фаервола — поздравляю, вы только что сами опровергли свой самый первый комментарий
Вы не забыли отключить фаервол?
Почему? Не вижу технических причин, которые помешали бы провайдеру прописать в src свой собственный адрес — роутеры именно для того и существуют, чтобы роутить такие адреса туда-сюда между разными сетями
Вышеупомянутую проверку на практике я делал как раз на кинетике и убеждался, что включение фаерволла начинает дропать пакеты, так что буду считать, что всё ок
Всё так, поэтому я не доверяю не только своей локальной сети, но даже локалхосту (всё, для чего нашлась техническая возможность закрыть и/или зашифровать, у меня закрыто и/или зашифровано, впрочем, я пока ещё не продумал защиту от штук вроде BadUSB или DMA-атак)