mirror of https://github.com/telemt/telemt.git
42 lines
1.5 KiB
Markdown
42 lines
1.5 KiB
Markdown
# Middle-End Proxy
|
||
|
||
## KDF Addressing — FAQ по реализации
|
||
|
||
### Требует ли C-референсная реализация KDF внешний IP и порт?
|
||
|
||
**Да**
|
||
|
||
В C-референсе **в KDF участвуют и IP-адрес, и порт** — с обеих сторон соединения.
|
||
|
||
В `aes_create_keys()` в строку KDF входят:
|
||
|
||
- `server_ip + client_port`
|
||
- `client_ip + server_port`
|
||
- далее secret / nonces
|
||
|
||
Для IPv6:
|
||
|
||
- IPv4-поля заполняются нулями
|
||
- добавляются IPv6-адреса
|
||
|
||
Однако **порты client_port и server_port всё равно участвуют в KDF**.
|
||
|
||
> Если внешний IP или порт (например, из-за NAT, SOCKS или прокси) не совпадает с ожидаемым другой стороной — ключи расходятся и handshake ломается.
|
||
|
||
---
|
||
|
||
### Можно ли исключить порт из KDF (например, установив порт = 0)?
|
||
|
||
**Нет.**
|
||
|
||
В C-референсе **нет механики отключения порта**.
|
||
|
||
- `client_port` и `server_port` явно включены в KDF
|
||
- Передаются реальные порты сокета:
|
||
- `c->our_port`
|
||
- `c->remote_port`
|
||
|
||
Если порт равен `0`, он всё равно попадёт в KDF как `0`.
|
||
|
||
Отдельной логики «игнорировать порт» не предусмотрено.
|