Restrict NAT delivery to its group and configured provider
This commit is contained in:
1 parent
909005c1a4
commit
bfa23afae9
3 files changed
+32
No files matched your search
@@ -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,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
|
||||
|
||||
Reference in new issue
Block a user