1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
# Лог диагностики: исходящий порт 22 заблокирован
> Отчёт о том, почему `git push` не работает ни с VPN, ни без него.
> Чувствительные данные (ключи, preshared-key) удалены.
## Вывод
- **Без VPN:** российский провайдер режет исходящий порт 22 → `Network is unreachable`.
- **С VPN (WireGuard):** сам провайдер VPN-сервиса **в целом запрещает исходящий порт 22**
(порт 22 к `github.com`, `gitlab.com` и `git.sr.ht` — timeout, при этом порт 443 открыт ко всем).
Итог: git по SSH (использует порт 22) не может соединиться ни в одном состоянии.
---
## 1. Конфигурация интерфейса WireGuard (без секретов)
Из `/etc/wireguard/wg.conf`:
```ini
[Interface]
PrivateKey = [Скрыто]
Address = 10.233.10.237/32
DNS = 1.1.1.1, 8.8.4.4
MTU = 1380
[Peer]
PublicKey = +ickp+Ceu/QcMW7pTA1is4ZcUSzglHuyuBRq0QeQ5D0=
PresharedKey = [Скрыто]
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
Endpoint = nl01w-dp.kcufwfgnkr.net:62233
```
`AllowedIPs = 0.0.0.0/0` → туннель должен заворачивать весь трафик (все маршруты в таблице 52219).
---
## 2. Состояние туннеля
Интерфейс `wg` поднят, адрес и DNS настроены, маршрут по умолчанию через туннель существует:
```text
$ ip -brief addr
enp42s0 UP 192.168.1.40/24 fd55:69a6:a86:0:.../64 ...
throne-tun DOWN ...
wg UP 10.233.10.237/32
# специфичная для wg-QUICK таблица маршрутов:
$ ip route show table 52219
default dev wg proto static scope link metric 50
# DNS на туннеле:
$ resolvectl status wg
Link 18 (wg) Current DNS Server: 1.1.1.1 DNS Servers: 1.1.1.1 8.8.4.4 Default Route: yes
```
IP-адрес в туннеле: `10.233.10.237/32`.
---
## 3. Туннель работает (проверка `ping` через VPN)
```text
$ ping -c 2 1.1.1.1
2 пакета передано, 2 получено, 0% потерь
rtt min/avg/max/mdev = 114/115/118 ms ← задержка самого VPN
```
---
## 4. Порт 443 открыт (HTTPS работает)
```text
$ ssh -vv -p 443 git@git.sr.ht (только проверка соединения)
Connecting to git.sr.ht [46.23.81.155] port 443
banner: HTTP/1.1 400 Bad Request / Server: nginx
→ порт 443 доступен (это обычный HTTPS/nginx, никакого SSH-сервиса на 443 у git.sr.ht нет)
```
---
## 5. Порт 22 заблокирова
### 5.1 Без VPN — `Network is unreachable`
```text
$ ssh -p 22 git@git.sr.ht
ssh: connect to host git.sr.ht port 22: Network is unreachable
```
### 5.2 С VPN — таймаут на исходящем 22
```text
$ /dev/tcp/46.23.81.155/22 → FAIL (connection timed out)
$ ssh -4 -p 22 git@46.23.81.155 → Connection timed out
$ /dev/tcp/140.82.121.4/22 (github.com:22) → FAILED
$ /dev/tcp/172.65.251.78/22 (gitlab.com:22) → FAILED
```
Порт 22 таймаутится ко **всем** хостам через туннель, а порт 443 — открыт:
```text
$ /dev/tcp/172.65.251.78/443 (gitlab.com:443) → OPEN
```
### 5.3 DNS (спойлер: отвечал IPv6 без маршрута)
```text
$ getent hosts git.sr.ht
2a03:6000:1813:1337::155 (IPv6 — без глобального маршрута)
46.23.81.155 (IPv4 — нужный адрес)
```
---
## 6. Итоговая таблица
| Состояние | git.sr.ht:22 | git.sr.ht:443 | Вердикт |
|-----------|--------------|---------------|---------|
| Без VPN | недоступен (ISP) | — | порт 22 режется провайдером |
| С VPN | таймаут (VPN) | открыт | VPN-сервис запрещает исходящий 22 |
**Причина:** VPN-сервис на стороне выхода `nl01w-dp.kcufwfgnkr.net`
запрещает исходящие соединения по порту 22. Поэтому git-по-SSH не работает.
|