summaryrefslogtreecommitdiff
path: root/nixos/vpn-port-22-log.md
blob: 14662965306a8f8d823269476d609326eb054a7e (plain)
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 не работает.