
Я на своем BTGuard VPN, и просто случайно получил всплывающее окно с отказом в подключении от Little Snitch. Заметки из записи в LS:
29 мая 2019 г. vpn.btguard.com попытался установить входящее соединение с openvpn. Запрос был автоматически отклонен, поскольку такой тип соединения не может быть задержан.
решение1
Вероятно, это что-то вроде случайного пакета с предыдущего раза, когда вы были подключены. Например, клиент OpenVPN перезапустился, но сервер все еще пытался отправить данные через предыдущий сеанс.
OpenVPN (по умолчанию и в конфигурации BTGuard) работает по протоколу UDP, который представляет собой транспортный протокол без сохранения состояния, в котором естьнетявные пакеты «установить соединение» или «отключить», никаких порядковых номеров, ничего, кроме пары номеров портов.
В TCP хосты и брандмауэры начинают отслеживать соединение, как только они видят пакеты SYN (рукопожатие). Но в UDP, поскольку нет никакого пакета «подключения» (только пакеты данных), брандмауэры просто начинают отслеживать «соединения» послелюбойпакет, который они видят.
В TCP хосты и брандмауэры забывают соединение, как только видят пакеты FIN (отключение). Но в UDP, поскольку нет никакого пакета «отключение», брандмауэры должны использовать тайм-ауты для истечения срока действия старых «соединений» (например, запись удаляется, если она простаивает в течение 60 секунд или 180 секунд или 10 минут или что-то подобное).
Такие программы, как OpenVPN, конечно, могут иметь команды «подключиться»/«отключиться» в своем протоколе прикладного уровня, но брандмауэр ничего об этом не знает — он видит только UDP с некоторыми данными внутри.
Вот что иногда происходит:
Либо OpenVPN перезапускается/завершает работу, и брандмауэр забывает все записи, связанные со старым процессом, либо VPN-подключение простаивает так долго, что брандмауэр забывает о нем из-за истечения срока действия.
Однако сервер BTGuard не получил пакет OpenVPN «disconnect» и не забыл о подключении из-за истечения времени ожидания, поэтому он пытается отправить вам некоторые данные обратно через старый сеанс.
Брандмауэр видит входящий пакет и имеетнет возможности узнатьявляется ли это новой «связью» или принадлежит к ранее установленной. (И у него нет возможности узнать, была ли она изначально установлена наружу или внутрь.)
Поскольку брандмауэр не помнит эту пару портов (забыв ее в части 1), он просто предполагает, что она должна быть новой. И поскольку это входящий пакет, брандмауэр показывает предупреждение о «входящем соединении».
Это всего лишь предположение, но весьма обоснованное.