Restrict NAT delivery to its group and configured provider

This commit is contained in:
evgeny committed 2026-10-21 21:58:10 +02:00
1 parent 909005c1a4
commit bfa23afae9
3 files changed
+32

No files matched your search

+8
View File
@@ -111,6 +111,14 @@ static void nat_transport_etcp_recv_cb(struct ETCP_CONN* conn, struct ll_entry*
uint64_t src_node_id;
memcpy(&src_node_id, entry->dgram + ROUTER_SVC_SRC_OFF, 8);
uint64_t group_id;
memcpy(&group_id, entry->dgram + ROUTER_SVC_GROUP_OFF, 8);
if (group_id != TOPO_GROUP_UTUN || (tr->nat_via_node_id && src_node_id != tr->nat_via_node_id)) {
DEBUG_WARN(DEBUG_CATEGORY_NAT, "NAT receive rejected: group=%016llx source=%016llx configured_provider=%016llx",
(unsigned long long)group_id, (unsigned long long)src_node_id, (unsigned long long)tr->nat_via_node_id);
queue_dgram_free(entry); queue_entry_free(entry);
return;
}
uint8_t* ip_data = entry->dgram + ROUTER_SVC_PAYLOAD_OFF;
size_t ip_len = entry->len - ROUTER_SVC_PAYLOAD_OFF;
+1
View File
@@ -1,5 +1,6 @@
/* IPv4 NAT через отдельный TUN и сервис ETCP_RT_ID_NAT в UTUN-router.
* nat_via_node_id задаёт удалённого провайдера; при 0 узел сам выполняет eim_nat для клиентов.
* Приём ограничен группой UTUN; клиент принимает ответы только от настроенного провайдера.
* init создаёт TUN/обработчики по nat_enabled; destroy снимает их и освобождает ресурсы.
* Контекст принадлежит UTUN_INSTANCE; очереди и callbacks работают в uasync. */
#ifndef NAT_TRANSPORT_H