Files

185 lines
6.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Ошибка 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]:
<urlopen error _ssl.c:983: The handshake operation timed out>
ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml]:
<urlopen error _ssl.c:983: The handshake operation timed out>
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]:
<urlopen error _ssl.c:983: The handshake operation timed out> (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]:
<urlopen error _ssl.c:983: The handshake operation timed out> (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]:
<urlopen error _ssl.c:983: The handshake operation timed out> (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]:
<urlopen error _ssl.c:983: The handshake operation timed out> (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 = <IP_СЕРВЕРА>: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
```