# Ошибка SSL при установке ## Описание проблемы При выполнении `cobot setup` или `rosdep update` может возникать ошибка SSL-рукопожатия при попытке загрузить индексы зависимостей ROS с серверов GitHub. **Возможные причины:** - Сетевые ограничения (корпоративный брандмауэр, интернет-провайдер) - Блокировка GitHub на уровне маршрутизатора или провайдера - Проблемы с DNS-разрешением `raw.githubusercontent.com` - Ограниченный доступ к TLS-соединениям (Deep Packet Inspection) ## Симптомы === "cobot setup" ``` [rosdep] Initializing rosdep... ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml]: ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml]: ERROR: Not all sources were able to be updated. ``` === "rosdep update" ``` /usr/bin/rosdep:6: DeprecationWarning: pkg_resources is deprecated as an API. from pkg_resources import load_entry_point ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml]: (https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml) ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml]: (https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml) ERROR: Not all sources were able to be updated. [[[ ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml]: (https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml) ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml]: (https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml) ``` --- ## Решение: VPN через WireGuard Рекомендуемый способ обойти сетевые ограничения — поднять WireGuard VPN-туннель. По настройке **WireGuard-сервера** обратитесь к [официальной документации WireGuard](https://www.wireguard.com/quickstart/) или документации вашего облачного провайдера. Ниже приведена настройка **клиентской части** на рабочей машине. --- ### 1. Установка WireGuard ```bash sudo apt update && sudo apt install -y wireguard-tools ``` --- ### 2. Конфигурация клиента Создайте файл конфигурации: ```bash sudo nano /etc/wireguard/wg0.conf ``` Добавьте следующее содержимое, подставив данные вашего сервера: ```ini [Interface] # Приватный ключ клиента (генерируется командой: wg genkey) PrivateKey = <ВАШ_ПРИВАТНЫЙ_КЛЮЧ> # IP-адрес клиента в VPN-сети Address = 10.0.0.2/24 # DNS-серверы (опционально) DNS = 8.8.8.8, 1.1.1.1 [Peer] # Публичный ключ WireGuard-сервера PublicKey = <ПУБЛИЧНЫЙ_КЛЮЧ_СЕРВЕРА> # Адрес и UDP-порт сервера Endpoint = :51820 # Маршрутизировать весь трафик через VPN AllowedIPs = 0.0.0.0/0 # Keepalive для клиентов за NAT PersistentKeepalive = 25 ``` !!! tip "Генерация ключей" Если у вас ещё нет ключевой пары, сгенерируйте её: ```bash # Приватный ключ wg genkey | tee privatekey # Публичный ключ (передайте администратору сервера) cat privatekey | wg pubkey ``` !!! note "Частичная маршрутизация" Если нужно направлять через VPN только трафик к GitHub, замените `AllowedIPs`: ```ini AllowedIPs = 140.82.112.0/20, 185.199.108.0/22 ``` !!! warning "Проблемы с MTU" Если соединение установлено, но есть потери пакетов — уменьшите MTU в секции `[Interface]`: ```ini MTU = 1420 ``` --- ### 3. Управление туннелем ```bash # Поднять туннель sudo wg-quick up wg0 # Проверить статус и статистику соединения sudo wg show # Остановить туннель sudo wg-quick down wg0 ``` --- ### 4. Автозапуск при загрузке системы ```bash sudo systemctl enable wg-quick@wg0 sudo systemctl start wg-quick@wg0 ``` --- ### 5. Проверка подключения ```bash # Убедиться, что интерфейс поднят ip addr show wg0 # Проверить маршруты ip route show # Пинг до VPN-сервера ping 10.0.0.1 # Проверить внешний IP (должен совпадать с IP VPN-сервера) curl -s ifconfig.me ``` После успешного подключения повторно запустите установку: ```bash cobot setup ``` или только обновление rosdep: ```bash rosdep update ``` --- ### 6. Диагностика Если туннель не поднимается, смотрите системные логи: ```bash sudo journalctl -u wg-quick@wg0 -f ``` Убедитесь, что на **сервере** открыт UDP-порт `51820`: ```bash # Проверить на сервере sudo ufw status # или sudo iptables -L -n | grep 51820 ```