Skip to content

Commit

Permalink
Added NAT info in clickhouse (#8384)
Browse files Browse the repository at this point in the history
  • Loading branch information
MatteoBiscosi committed May 10, 2024
1 parent f8354ec commit d795bf3
Show file tree
Hide file tree
Showing 23 changed files with 413 additions and 58 deletions.
8 changes: 8 additions & 0 deletions http_src/vue/page-flow-historical.vue
Original file line number Diff line number Diff line change
Expand Up @@ -502,6 +502,14 @@ const map_table_def_columns = async (columns) => {
"srv_nw_latency": (srv_nw_latency, row) => f_print_latency("srv_nw_latency", srv_nw_latency, row),
"major_connection_state": (major_connection_state, row) => f_print_state("major_connection_state", major_connection_state , row),
"minor_connection_state": (minor_connection_state, row) => f_print_state("minor_connection_state", minor_connection_state , row),
"pre_nat_ipv4_src_addr": (value, row) => { return DataTableRenders.filterize('pre_nat_ipv4_src_addr', value.value, value.label) },
"pre_nat_src_port": (value, row) => { return DataTableRenders.filterize('pre_nat_src_port', value.value, value.label) },
"pre_nat_ipv4_dst_addr": (value, row) => { return DataTableRenders.filterize('pre_nat_ipv4_dst_addr', value.value, value.label) },
"pre_nat_dst_port": (value, row) => { return DataTableRenders.filterize('pre_nat_dst_port', value.value, value.label) },
"post_nat_ipv4_src_addr": (value, row) => { return DataTableRenders.filterize('post_nat_ipv4_src_addr', value.value, value.label) },
"post_nat_src_port": (value, row) => { return DataTableRenders.filterize('post_nat_src_port', value.value, value.label) },
"post_nat_ipv4_dst_addr": (value, row) => { return DataTableRenders.filterize('post_nat_ipv4_dst_addr', value.value, value.label) },
"post_nat_dst_port": (value, row) => { return DataTableRenders.filterize('post_nat_dst_port', value.value, value.label) },
"info": (info, row) => {
if (info == null) { return ""; }
return `<a class='tag-filter' data-tag-key='info' data-tag-value='${info.title}' title='${info.title}' href='javascript:void(0)'>${info.label}</a>`;
Expand Down
16 changes: 16 additions & 0 deletions httpdocs/misc/db_schema_clickhouse.sql
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,22 @@ ALTER TABLE flows ADD COLUMN IF NOT EXISTS `ALERT_CATEGORY` UInt8;
ALTER TABLE flows ADD COLUMN IF NOT EXISTS `MINOR_CONNECTION_STATE` UInt8;
@
ALTER TABLE flows ADD COLUMN IF NOT EXISTS `MAJOR_CONNECTION_STATE` UInt8;
@
ALTER TABLE flows ADD COLUMN IF NOT EXISTS `PRE_NAT_IPV4_SRC_ADDR` UInt32;
@
ALTER TABLE flows ADD COLUMN IF NOT EXISTS `PRE_NAT_SRC_PORT` UInt32;
@
ALTER TABLE flows ADD COLUMN IF NOT EXISTS `PRE_NAT_IPV4_DST_ADDR` UInt32;
@
ALTER TABLE flows ADD COLUMN IF NOT EXISTS `PRE_NAT_DST_PORT` UInt32;
@
ALTER TABLE flows ADD COLUMN IF NOT EXISTS `POST_NAT_IPV4_SRC_ADDR` UInt32;
@
ALTER TABLE flows ADD COLUMN IF NOT EXISTS `POST_NAT_SRC_PORT` UInt32;
@
ALTER TABLE flows ADD COLUMN IF NOT EXISTS `POST_NAT_IPV4_DST_ADDR` UInt32;
@
ALTER TABLE flows ADD COLUMN IF NOT EXISTS `POST_NAT_DST_PORT` UInt32;

@

Expand Down
72 changes: 72 additions & 0 deletions httpdocs/tables_config/flow_historical.json
Original file line number Diff line number Diff line change
Expand Up @@ -442,6 +442,78 @@
"class": [
"no-wrap"
]
},
{
"title_i18n": "db_search.tags.pre_nat_ipv4_src_addr",
"data_field": "pre_nat_ipv4_src_addr",
"min-width": "150px",
"sortable": true,
"class": [
"no-wrap"
]
},
{
"title_i18n": "db_search.tags.pre_nat_src_port",
"data_field": "pre_nat_src_port",
"min-width": "100px",
"sortable": true,
"class": [
"no-wrap"
]
},
{
"title_i18n": "db_search.tags.pre_nat_ipv4_dst_addr",
"data_field": "pre_nat_ipv4_dst_addr",
"min-width": "150px",
"sortable": true,
"class": [
"no-wrap"
]
},
{
"title_i18n": "db_search.tags.pre_nat_dst_port",
"data_field": "pre_nat_dst_port",
"min-width": "100px",
"sortable": true,
"class": [
"no-wrap"
]
},
{
"title_i18n": "db_search.tags.post_nat_ipv4_src_addr",
"data_field": "post_nat_ipv4_src_addr",
"min-width": "150px",
"sortable": true,
"class": [
"no-wrap"
]
},
{
"title_i18n": "db_search.tags.post_nat_src_port",
"data_field": "post_nat_src_port",
"min-width": "100px",
"sortable": true,
"class": [
"no-wrap"
]
},
{
"title_i18n": "db_search.tags.post_nat_ipv4_dst_addr",
"data_field": "post_nat_ipv4_dst_addr",
"min-width": "150px",
"sortable": true,
"class": [
"no-wrap"
]
},
{
"title_i18n": "db_search.tags.post_nat_dst_port",
"data_field": "post_nat_dst_port",
"min-width": "100px",
"sortable": true,
"class": [
"no-wrap"
]
}
]
}
23 changes: 23 additions & 0 deletions include/Flow.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,16 @@ class Flow : public GenericHashEntry {
int32_t iface_index; /* Interface index on which this flow has been first observed */
Host *cli_host, *srv_host;
IpAddress *cli_ip_addr, *srv_ip_addr;
/* IPv4 only, so a int32 bit is only needed */
u_int32_t src_ip_addr_pre_nat, dst_ip_addr_pre_nat,
src_ip_addr_post_nat, dst_ip_addr_post_nat;
ICMPinfo *icmp_info;
ndpi_confidence_t ndpi_confidence;
u_int32_t privateFlowId; /* Used to store specific flow info such as DNS TransactionId or SIP CallId */
u_int8_t cli2srv_tos, srv2cli_tos; /* RFC 2474, 3168 */
u_int16_t cli_port, srv_port;
u_int16_t src_port_pre_nat, dst_port_pre_nat,
src_port_post_nat, dst_port_post_nat;
u_int16_t vlanId;
u_int32_t vrfId;
u_int32_t srcAS, dstAS, prevAdjacentAS, nextAdjacentAS;
Expand Down Expand Up @@ -658,6 +663,16 @@ class Flow : public GenericHashEntry {
u_int out_bytes, u_int out_goodput_bytes,
u_int in_fragments, u_int out_fragments, time_t first_seen,
time_t last_seen);

void addPrePostNATIPv4(u_int32_t _src_ip_addr_pre_nat,
u_int32_t _dst_ip_addr_pre_nat,
u_int32_t _src_ip_addr_post_nat,
u_int32_t _dst_ip_addr_post_nat);

void addPrePostNATPort(u_int32_t _src_port_pre_nat,
u_int32_t _dst_port_pre_nat,
u_int32_t _src_port_post_nat,
u_int32_t _dst_port_post_nat);
void check_swap();

inline bool isThreeWayHandshakeOK() const { return (twh_ok ? true : false); };
Expand Down Expand Up @@ -1404,6 +1419,14 @@ class Flow : public GenericHashEntry {
bool isTCPFlagSet(u_int8_t flags, int flag_to_check);
MinorConnectionStates calculateConnectionState(bool is_cumulative);
MajorConnectionStates getMajorConnState();
inline u_int32_t getPreNATSrcIp() { return ntohl(src_ip_addr_pre_nat); };
inline u_int32_t getPreNATDstIp() { return ntohl(dst_ip_addr_pre_nat); };
inline u_int32_t getPostNATSrcIp() { return ntohl(src_ip_addr_post_nat); };
inline u_int32_t getPostNATDstIp() { return ntohl(dst_ip_addr_post_nat); };
inline u_int16_t getPreNATSrcPort() { return ntohs(src_port_pre_nat); };
inline u_int16_t getPreNATDstPort() { return ntohs(dst_port_pre_nat); };
inline u_int16_t getPostNATSrcPort() { return ntohs(src_port_post_nat); };
inline u_int16_t getPostNATDstPort() { return ntohs(dst_port_post_nat); };
};

#endif /* _FLOW_H_ */
20 changes: 20 additions & 0 deletions include/ParsedFlow.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,15 @@ class ParsedFlow : public ParsedFlowCore, public ParsedeBPF {
char *flow_risk_info;
char *external_alert;
char *smtp_rcp_to, *smtp_mail_from;
u_int32_t src_ip_addr_pre_nat, dst_ip_addr_pre_nat,
src_ip_addr_post_nat, dst_ip_addr_post_nat;
u_int8_t tls_unsafe_cipher, flow_verdict;
u_int16_t tls_cipher;
u_int16_t http_ret_code;
u_int16_t dns_query_type, dns_ret_code;
u_int32_t l7_error_code;
u_int16_t src_port_pre_nat, dst_port_pre_nat,
src_port_post_nat, dst_port_post_nat;
custom_app_t custom_app;
ndpi_confidence_t confidence;
ndpi_risk ndpi_flow_risk_bitmap;
Expand Down Expand Up @@ -122,6 +126,14 @@ class ParsedFlow : public ParsedFlowCore, public ParsedeBPF {
inline void setRiskName(const char *str) { if(ndpi_flow_risk_name != NULL) free(ndpi_flow_risk_name); if (str) { ndpi_flow_risk_name = strdup(str);} else ndpi_flow_risk_name = NULL; }
inline void setDHCPClientName(const char *str) { if(dhcp_client_name != NULL) free(dhcp_client_name); if(str) { dhcp_client_name = strdup(str);} else dhcp_client_name = NULL; }
inline void setSIPCallId(const char *str) { if(sip_call_id != NULL) free(sip_call_id); if(str) { sip_call_id = strdup(str);} else sip_call_id = NULL; }
inline void setPreNATSrcIp(u_int32_t v) { src_ip_addr_pre_nat = v; };
inline void setPreNATDstIp(u_int32_t v) { dst_ip_addr_pre_nat = v; };
inline void setPostNATSrcIp(u_int32_t v) { src_ip_addr_post_nat = v; };
inline void setPostNATDstIp(u_int32_t v) { dst_ip_addr_post_nat = v; };
inline void setPreNATSrcPort(u_int16_t v) { src_port_pre_nat = v; };
inline void setPreNATDstPort(u_int16_t v) { dst_port_pre_nat = v; };
inline void setPostNATSrcPort(u_int16_t v) { src_port_post_nat = v; };
inline void setPostNATDstPort(u_int16_t v) { dst_port_post_nat = v; };
/* ****** */
inline char* getL7Info(bool setToNULL = false) { char *r = l7_info; if(setToNULL) l7_info = NULL; return(r); }
inline char* getHTTPurl(bool setToNULL = false) { char *r = http_url; if(setToNULL) http_url = NULL; return(r); }
Expand All @@ -141,6 +153,14 @@ class ParsedFlow : public ParsedFlowCore, public ParsedeBPF {
inline char* getSMTPMailFrom(bool setToNull = false) { char *r = smtp_mail_from; if(setToNull) smtp_mail_from = NULL; return(r); }
inline char* getDHCPClientName(bool setToNull = false) { char *r = dhcp_client_name; if(setToNull) dhcp_client_name = NULL; return(r); }
inline char* getSIPCallId(bool setToNull = false) { char *r = sip_call_id; if(setToNull) sip_call_id = NULL; return(r); }
inline u_int32_t getPreNATSrcIp() { return src_ip_addr_pre_nat; };
inline u_int32_t getPreNATDstIp() { return dst_ip_addr_pre_nat; };
inline u_int32_t getPostNATSrcIp() { return src_ip_addr_post_nat; };
inline u_int32_t getPostNATDstIp() { return dst_ip_addr_post_nat; };
inline u_int16_t getPreNATSrcPort() { return src_port_pre_nat; };
inline u_int16_t getPreNATDstPort() { return dst_port_pre_nat; };
inline u_int16_t getPostNATSrcPort() { return src_port_post_nat; };
inline u_int16_t getPostNATDstPort() { return dst_port_post_nat; };
inline u_int8_t getTLSUnsafeCipher() { return(tls_unsafe_cipher); }
inline u_int16_t getTLSCipher() { return(tls_cipher); }
inline u_int8_t getFlowVerdict() { return(flow_verdict); }
Expand Down
12 changes: 10 additions & 2 deletions include/ntop_flow.h
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,8 @@
#define BIFLOW_DIRECTION 239
#define POST_NAT_SRC_IPV4_ADDR 225
#define POST_NAT_DST_IPV4_ADDR 226
#define POST_NAPT_SRC_TRANSPORT_PORT 227
#define POST_NAPT_DST_TRANSPORT_PORT 228
#define POST_NAT_SRC_TRANSPORT_PORT 227
#define POST_NAT_DST_TRANSPORT_PORT 228
#define OBSERVATION_POINT_TYPE 277
#define INITIATOR_PKTS 298
#define RESPONDER_PKTS 299
Expand Down Expand Up @@ -561,6 +561,14 @@
#define STATUS NTOP_BASE_ID + 534
#define MAJOR_CONNECTION_STATE NTOP_BASE_ID + 535
#define MINOR_CONNECTION_STATE NTOP_BASE_ID + 536
#define PRE_NAT_IPV4_SRC_ADDR NTOP_BASE_ID + 537
#define PRE_NAT_SRC_PORT NTOP_BASE_ID + 538
#define PRE_NAT_IPV4_DST_ADDR NTOP_BASE_ID + 539
#define PRE_NAT_DST_PORT NTOP_BASE_ID + 540
#define POST_NAT_IPV4_SRC_ADDR NTOP_BASE_ID + 541
#define POST_NAT_SRC_PORT NTOP_BASE_ID + 542
#define POST_NAT_IPV4_DST_ADDR NTOP_BASE_ID + 543
#define POST_NAT_DST_PORT NTOP_BASE_ID + 544

/* sFlow Counter Fields */
#define SFLOW_DEVICE_IP 0
Expand Down
8 changes: 4 additions & 4 deletions scripts/locales/cn.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2254,8 +2254,8 @@ local lang = {
["packets_selected"] = "选择采样的包数",
["payload_hash"] = "初始流有效载荷hash",
["pop_user"] = "POP3用户登录",
["post_napt_dst_transport_port"] = "NAPT后目的传输端口",
["post_napt_src_transport_port"] = "NAPT后源传输端口",
["post_nat_dst_transport_port"] = "NAPT后目的传输端口",
["post_nat_src_transport_port"] = "NAPT后源传输端口",
["post_nat_dst_ipv4_addr"] = "NAT后目的IPv4地址",
["post_nat_src_ipv4_addr"] = "NAT后源IPv4地址",
["protocol"] = "IP协议字节",
Expand Down Expand Up @@ -4351,7 +4351,7 @@ local lang = {
["toggle_captive_portal_title"] = "捕获门户",
["toggle_country_rrds_description"] = "切换为国家/地区创建字节时间序列。",
["toggle_country_rrds_title"] = "国家",
["toggle_dst_with_post_nat_dst_description"] = " IPv4 目标地址 (%%IPV4_DST_ADDR) 和端口 (%%L4_DST_PORT) 替换为它们的 post-nat 值 (%%POST_NAT_DST_IPV4_ADDR 和%%POST_NAPT_DST_TRANSPORT_PORT)。",
["toggle_dst_with_post_nat_dst_description"] = " IPv4 目标地址 (%%IPV4_DST_ADDR) 和端口 (%%L4_DST_PORT) 替换为它们的 post-nat 值 (%%POST_NAT_DST_IPV4_ADDR 和%%POST_NAT_DST_TRANSPORT_PORT)。",
["toggle_dst_with_post_nat_dst_title"] = "使用 Post-Nat 目标 IPv4 地址和端口",
["toggle_elasticsearch_notification_description"] = "将警告通知切换到 Elasticsearch。",
["toggle_elasticsearch_notification_title"] = "切换 Elasticsearch 通知",
Expand Down Expand Up @@ -4435,7 +4435,7 @@ local lang = {
["toggle_snmp_port_admin_status_title"] = "接口管理员状态",
["toggle_snmp_rrds_description"] = "切换为 SNMP 设备的每个端口创建字节时间序列。将为每个设备端口创建一个包含入口/出口字节的时间序列。",
["toggle_snmp_rrds_title"] = "SNMP 设备时间序列",
["toggle_src_with_post_nat_src_description"] = "将 IPv4 源地址 (%%IPV4_SRC_ADDR) 和端口 (%%L4_SRC_PORT) 替换为它们的 post-nat 值(%%POST_NAT_SRC_IPV4_ADDR 和%%POST_NAPT_SRC_TRANSPORT_PORT)。",
["toggle_src_with_post_nat_src_description"] = "将 IPv4 源地址 (%%IPV4_SRC_ADDR) 和端口 (%%L4_SRC_PORT) 替换为它们的 post-nat 值(%%POST_NAT_SRC_IPV4_ADDR 和%%POST_NAT_SRC_TRANSPORT_PORT)。",
["toggle_src_with_post_nat_src_title"] = "使用 Post-Nat 源 IPv4 地址和端口",
["toggle_system_probes_timeseries_description"] = "切换为系统探针(例如活动监控和 Redis 监控)创建时间序列。",
["toggle_system_probes_timeseries_title"] = "探针",
Expand Down
8 changes: 4 additions & 4 deletions scripts/locales/cz.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1297,8 +1297,8 @@ local lang = {
["packets_selected"] = "Počet pkts vybraných pro odběr vzorků",
["payload_hash"] = "Počáteční hash užitečného toku toku",
["pop_user"] = "Přihlášení uživatele POP3",
["post_napt_dst_transport_port"] = "Post NAPT Destination Transport Port",
["post_napt_src_transport_port"] = "Post NAPT Source Transport Port",
["post_nat_dst_transport_port"] = "Post NAPT Destination Transport Port",
["post_nat_src_transport_port"] = "Post NAPT Source Transport Port",
["post_nat_dst_ipv4_addr"] = "Post NAT Destination IPv4 Address",
["post_nat_src_ipv4_addr"] = "Post NAT Source IPv4 Address",
["protocol"] = "IP protokol bajtů",
Expand Down Expand Up @@ -2741,7 +2741,7 @@ local lang = {
["toggle_dns_alerts_title"] = "Upozornění DNS",
["toggle_dropped_flows_alerts_description"] = "Povolit informativní výstrahy generované při blocích toků kvůli nakonfigurované politice",
["toggle_dropped_flows_alerts_title"] = "Povolit upozornění na zablokované toky",
["toggle_dst_with_post_nat_dst_description"] = "Vyměňte cílové adresy IPv4 (%%IPV4_DST_ADDR) a porty (%%L4_DST_PORT) s jejich post-nat hodnotami (%%POST_NAT_DST_IPV4_ADDR and %%POST_NAPT_DST_TRANSPORT_PORT).",
["toggle_dst_with_post_nat_dst_description"] = "Vyměňte cílové adresy IPv4 (%%IPV4_DST_ADDR) a porty (%%L4_DST_PORT) s jejich post-nat hodnotami (%%POST_NAT_DST_IPV4_ADDR and %%POST_NAT_DST_TRANSPORT_PORT).",
["toggle_dst_with_post_nat_dst_title"] = "Použijte cílové IPv4 adresy a porty",
["toggle_elephant_flows_alerts_description"] = "Přepnout výstrahy generované po zjištění Elephant toků. To je užitečné pro detekci nežádoucího chování (např. Exfiltrace dat).",
["toggle_elephant_flows_alerts_title"] = "Elephant Flows Alerts",
Expand Down Expand Up @@ -2825,7 +2825,7 @@ local lang = {
["toggle_snmp_rrds_title"] = "SNMP Devices Timeseries",
["toggle_src_and_dst_using_ports_description"] = "Určete zdroj a cíl přijatých toků pomocí čísel portů. Dolní číslo portu se považuje za cílový port. Vyšší číslo portu je považováno za zdrojový port. Důvodem je, že zdroje obecně využívají pomíjivé porty pro připojení ke známým cílovým portům a pomíjivé porty jsou obecně větší než známé. Pokud je tato možnost povolena, zdroj a cíl budou zaměněny, pokud se zjistí, že cílový port je větší než zdrojový port.",
["toggle_src_and_dst_using_ports_title"] = "Pomocí čísel portů určete zdroj a cíl",
["toggle_src_with_post_nat_src_description"] = "Vyměňte zdrojové adresy IPv4 (%%IPV4_SRC_ADDR) a portů (%%L4_SRC_PORT) s jejich post-nat hodnotami (%%POST_NAT_SRC_IPV4_ADDR and %%POST_NAPT_SRC_TRANSPORT_PORT).",
["toggle_src_with_post_nat_src_description"] = "Vyměňte zdrojové adresy IPv4 (%%IPV4_SRC_ADDR) a portů (%%L4_SRC_PORT) s jejich post-nat hodnotami (%%POST_NAT_SRC_IPV4_ADDR and %%POST_NAT_SRC_TRANSPORT_PORT).",
["toggle_src_with_post_nat_src_title"] = "Použijte adresy a porty IPv4 po zdroji",
["toggle_tcp_flags_rrds_description"] = "Přepnout vytváření příznaků TCP SYN, SYN + ACK, FIN + ACK a RST pro síťová rozhraní.",
["toggle_tcp_flags_rrds_title"] = "TCP Flags",
Expand Down
8 changes: 4 additions & 4 deletions scripts/locales/de.lua
Original file line number Diff line number Diff line change
Expand Up @@ -894,8 +894,8 @@ local lang = {
["payload_hash"] = "Anfangsflow payload hash",
["script_name"] = "Benutzter Script Name von diesem (if any)",
["pop_user"] = "POP3 user login",
["post_napt_dst_transport_port"] = "Post NAPT Destination Transport Port",
["post_napt_src_transport_port"] = "Post NAPT Source Transport Port",
["post_nat_dst_transport_port"] = "Post NAPT Destination Transport Port",
["post_nat_src_transport_port"] = "Post NAPT Source Transport Port",
["post_nat_dst_ipv4_addr"] = "Post NAT Destination IPv4 Adresse",
["post_nat_src_ipv4_addr"] = "Post NAT Source IPv4 Adresse",
["protocol"] = "IP Protokoll Byte",
Expand Down Expand Up @@ -1679,7 +1679,7 @@ local lang = {
["toggle_autologout_title"] = "Auto Logout",
["toggle_captive_portal_description"] = "Aktivieren des Web captive portal um Netzwerkbenutzer zu authentifizieren.",
["toggle_captive_portal_title"] = "Captive Portal",
["toggle_dst_with_post_nat_dst_description"] = "Ersetzen Sie IPv4 Destinationsadressen (%%IPV4_DST_ADDR) und ports (%%L4_DST_PORT) mit deren post-nat values (%%POST_NAT_DST_IPV4_ADDR and %%POST_NAPT_DST_TRANSPORT_PORT).",
["toggle_dst_with_post_nat_dst_description"] = "Ersetzen Sie IPv4 Destinationsadressen (%%IPV4_DST_ADDR) und ports (%%L4_DST_PORT) mit deren post-nat values (%%POST_NAT_DST_IPV4_ADDR and %%POST_NAT_DST_TRANSPORT_PORT).",
["toggle_dst_with_post_nat_dst_title"] = "Post-Nat Destinations IPv4 Adressen und Ports benutzen",
["toggle_flow_rrds_description"] = "Ändern Sie die Erstellung von Bytes timeseries für jeden Port des reomte Geräts, wie über ZMQ empfangen (e.g. sFlow/NetFlow/SNMP).<br>Für nicht sFlow Geräte, %%INPUT_SNMP und %%OUTPUT_SNMP müssen in der nprobe Vorlage erscheinen.",
["toggle_flow_rrds_title"] = "Flow Geräte",
Expand All @@ -1705,7 +1705,7 @@ local lang = {
["toggle_slack_notification_title"] = "Aktiviere <a href=\"%{url}\">Slack</a> Benachrichtigung",
["toggle_snmp_rrds_description"] = "Schalten Sie auf Erstellung von Bytes timeseries für jeden Port der SNMP devices ein. Für jeden device port ein RRD wird kreirt mit Eingang/Ausgang Bytes.",
["toggle_snmp_rrds_title"] = "SNMP Devices Timeseries",
["toggle_src_with_post_nat_src_description"] = "Ersetzen Sie IPv4 source Adressen (%%IPV4_SRC_ADDR) und ports (%%L4_SRC_PORT) mit deren post-nat values (%%POST_NAT_SRC_IPV4_ADDR and %%POST_NAPT_SRC_TRANSPORT_PORT).",
["toggle_src_with_post_nat_src_description"] = "Ersetzen Sie IPv4 source Adressen (%%IPV4_SRC_ADDR) und ports (%%L4_SRC_PORT) mit deren post-nat values (%%POST_NAT_SRC_IPV4_ADDR and %%POST_NAT_SRC_TRANSPORT_PORT).",
["toggle_src_with_post_nat_src_title"] = "Post-Nat Source IPv4 Adressen und Ports benutzen",
["toggle_thpt_content_description"] = "Wählen Sie die throughput Einheit aus die in Datenverkehrsreports angezeigt werden soll.",
["toggle_thpt_content_title"] = "Throughput Einheit",
Expand Down

0 comments on commit d795bf3

Please sign in to comment.