OpenVPN remote-random: перемешанный порядок, один туннель
remote-random перемешивает порядок настроенных remote при подключении. Он не меняет ваш выход на каждый запрос, не балансирует пакеты и не меняет активный туннель.
Предположение состоит в том, что добавление remote-random превращает профиль во вращающийся пул, и каждое подключение выходит с другого адреса. На самом деле директива делает следующее: она один раз перемешивает список remote, когда клиент начинает подключаться, а затем пробует их в этом новом порядке. Туннель, который в итоге поднимается, всё равно заканчивается на одной конечной точке и остаётся там на всё время жизни сеанса.
Эта разница важна и для тестирования, и для заявлений о конфиденциальности.
Что опция меняет в момент подключения
Профиль клиента может содержать несколько строк remote, каждая со своим именем хоста и портом. Без директивы они пробуются в порядке файла; с ней список один раз переставляется в начале сеанса, и побеждает первый адрес, который ответит. Остальные остаются запасными для этой попытки, а не параллельными путями. Профиль с одним remote не даёт директиве ничего перемешивать, и это самый быстрый способ понять, может ли это вообще иметь значение.
Руководство OpenVPN описывает опцию как влияющую на порядок попыток подключения, и именно такого охвата следует ожидать в поведении.
Переподключение запускает новый цикл выбора, поэтому более поздний сеанс может оказаться в другом месте. Работающий туннель не перемещается, пока он поднят.
Миф: каждый запрос получает новый сервер
После установки туннель передаёт весь трафик этого сеанса выбранному партнёру. Повторного выбора на каждый запрос нет, и директива не является балансировщиком нагрузки для отдельных соединений: она перемешивает кандидатов, а не распределяет пакеты. Каждое приложение, использующее этот туннель, использует и того же партнёра. Всё, что браузер сообщает о своём выходе, относится к сеансу, а не к отдельному запросу.
Если тест показывает два разных выхода, ищите два отдельных сеанса, а не одну хитрую опцию. Эта разница объясняет и то, почему тест в браузере и тест загрузки могут расходиться, если между ними произошло переподключение.
Для чего нужен remote-random-hostname
Вторая директива с похожим названием меняет имя хоста, используемое для разрешения, а не порядок списка remote. Она существует для развёртываний, где имя разрешается в несколько адресов через round-robin DNS, и её следует использовать только тогда, когда сервис для этого построен. Меняется только шаг разрешения; порядок списка кандидатов — нет.
Включать её из-за того, что имена выглядят связанными, — распространённая ошибка. Сертификат с подстановочным знаком или схема DNS, не ожидающая изменённого имени, просто не сможет разрешить или проверить его.
Прочитайте выбранную конечную точку из журнала
Запишите, какого партнёра сеанс действительно использовал, прежде чем делать выводы. Подробный вывод называет пробуемый адрес, а сам профиль показывает, сколько есть кандидатов. Сравните это число с адресом в журнале, прежде чем винить перемешивание.
grep -c '^remote ' client.ovpn openvpn --config client.ovpn --verb 4 2>&1 | grep -i -E 'attempting|peer connection' openvpn --help | grep -A2 remote-random head -20 client.ovpn
Для сравнения производительности закрепите конечную точку, закомментировав остальные remote, чтобы тестируемой переменной был протокол или клиент, а не путь. Для вопроса о конфиденциальности оценивайте идентичность сервиса и его журналирование в целом; перемешанный первый выбор не удаляет cookie, не убирает вход в аккаунт и не делает двух операторов равнозначными.
Держите вместе поставленный материал доверия и поддерживаемый набор конечных точек. Перемешивание меняет только порядок, в котором этот набор пробуется.