Skip to content
Snippets Groups Projects
Verified Commit 15273a57 authored by Tomas Krizek's avatar Tomas Krizek
Browse files

renumber: warn when using unsupported network mask

parent a124c480
Branches
Tags
1 merge request!1232renumber and reroute: documentation updates
...@@ -308,7 +308,7 @@ struct kr_server_selection { ...@@ -308,7 +308,7 @@ struct kr_server_selection {
struct local_state *local_state; struct local_state *local_state;
}; };
typedef int kr_log_level_t; typedef int kr_log_level_t;
enum kr_log_group {LOG_GRP_UNKNOWN = -1, LOG_GRP_SYSTEM = 1, LOG_GRP_CACHE, LOG_GRP_IO, LOG_GRP_NETWORK, LOG_GRP_TA, LOG_GRP_TLS, LOG_GRP_GNUTLS, LOG_GRP_TLSCLIENT, LOG_GRP_XDP, LOG_GRP_ZIMPORT, LOG_GRP_ZSCANNER, LOG_GRP_DOH, LOG_GRP_DNSSEC, LOG_GRP_HINT, LOG_GRP_PLAN, LOG_GRP_ITERATOR, LOG_GRP_VALIDATOR, LOG_GRP_RESOLVER, LOG_GRP_SELECTION, LOG_GRP_ZCUT, LOG_GRP_COOKIES, LOG_GRP_STATISTICS, LOG_GRP_REBIND, LOG_GRP_WORKER, LOG_GRP_POLICY, LOG_GRP_TASENTINEL, LOG_GRP_TASIGNALING, LOG_GRP_TAUPDATE, LOG_GRP_DAF, LOG_GRP_DETECTTIMEJUMP, LOG_GRP_DETECTTIMESKEW, LOG_GRP_GRAPHITE, LOG_GRP_PREFILL, LOG_GRP_PRIMING, LOG_GRP_SRVSTALE, LOG_GRP_WATCHDOG, LOG_GRP_NSID, LOG_GRP_DNSTAP, LOG_GRP_TESTS, LOG_GRP_DOTAUTH, LOG_GRP_HTTP, LOG_GRP_CONTROL, LOG_GRP_MODULE, LOG_GRP_DEVEL, LOG_GRP_REQDBG}; enum kr_log_group {LOG_GRP_UNKNOWN = -1, LOG_GRP_SYSTEM = 1, LOG_GRP_CACHE, LOG_GRP_IO, LOG_GRP_NETWORK, LOG_GRP_TA, LOG_GRP_TLS, LOG_GRP_GNUTLS, LOG_GRP_TLSCLIENT, LOG_GRP_XDP, LOG_GRP_ZIMPORT, LOG_GRP_ZSCANNER, LOG_GRP_DOH, LOG_GRP_DNSSEC, LOG_GRP_HINT, LOG_GRP_PLAN, LOG_GRP_ITERATOR, LOG_GRP_VALIDATOR, LOG_GRP_RESOLVER, LOG_GRP_SELECTION, LOG_GRP_ZCUT, LOG_GRP_COOKIES, LOG_GRP_STATISTICS, LOG_GRP_REBIND, LOG_GRP_WORKER, LOG_GRP_POLICY, LOG_GRP_TASENTINEL, LOG_GRP_TASIGNALING, LOG_GRP_TAUPDATE, LOG_GRP_DAF, LOG_GRP_DETECTTIMEJUMP, LOG_GRP_DETECTTIMESKEW, LOG_GRP_GRAPHITE, LOG_GRP_PREFILL, LOG_GRP_PRIMING, LOG_GRP_SRVSTALE, LOG_GRP_WATCHDOG, LOG_GRP_NSID, LOG_GRP_DNSTAP, LOG_GRP_TESTS, LOG_GRP_DOTAUTH, LOG_GRP_HTTP, LOG_GRP_CONTROL, LOG_GRP_MODULE, LOG_GRP_DEVEL, LOG_GRP_RENUMBER, LOG_GRP_REQDBG};
kr_layer_t kr_layer_t_static; kr_layer_t kr_layer_t_static;
_Bool kr_dbg_assertion_abort; _Bool kr_dbg_assertion_abort;
......
...@@ -308,7 +308,7 @@ struct kr_server_selection { ...@@ -308,7 +308,7 @@ struct kr_server_selection {
struct local_state *local_state; struct local_state *local_state;
}; };
typedef int kr_log_level_t; typedef int kr_log_level_t;
enum kr_log_group {LOG_GRP_UNKNOWN = -1, LOG_GRP_SYSTEM = 1, LOG_GRP_CACHE, LOG_GRP_IO, LOG_GRP_NETWORK, LOG_GRP_TA, LOG_GRP_TLS, LOG_GRP_GNUTLS, LOG_GRP_TLSCLIENT, LOG_GRP_XDP, LOG_GRP_ZIMPORT, LOG_GRP_ZSCANNER, LOG_GRP_DOH, LOG_GRP_DNSSEC, LOG_GRP_HINT, LOG_GRP_PLAN, LOG_GRP_ITERATOR, LOG_GRP_VALIDATOR, LOG_GRP_RESOLVER, LOG_GRP_SELECTION, LOG_GRP_ZCUT, LOG_GRP_COOKIES, LOG_GRP_STATISTICS, LOG_GRP_REBIND, LOG_GRP_WORKER, LOG_GRP_POLICY, LOG_GRP_TASENTINEL, LOG_GRP_TASIGNALING, LOG_GRP_TAUPDATE, LOG_GRP_DAF, LOG_GRP_DETECTTIMEJUMP, LOG_GRP_DETECTTIMESKEW, LOG_GRP_GRAPHITE, LOG_GRP_PREFILL, LOG_GRP_PRIMING, LOG_GRP_SRVSTALE, LOG_GRP_WATCHDOG, LOG_GRP_NSID, LOG_GRP_DNSTAP, LOG_GRP_TESTS, LOG_GRP_DOTAUTH, LOG_GRP_HTTP, LOG_GRP_CONTROL, LOG_GRP_MODULE, LOG_GRP_DEVEL, LOG_GRP_REQDBG}; enum kr_log_group {LOG_GRP_UNKNOWN = -1, LOG_GRP_SYSTEM = 1, LOG_GRP_CACHE, LOG_GRP_IO, LOG_GRP_NETWORK, LOG_GRP_TA, LOG_GRP_TLS, LOG_GRP_GNUTLS, LOG_GRP_TLSCLIENT, LOG_GRP_XDP, LOG_GRP_ZIMPORT, LOG_GRP_ZSCANNER, LOG_GRP_DOH, LOG_GRP_DNSSEC, LOG_GRP_HINT, LOG_GRP_PLAN, LOG_GRP_ITERATOR, LOG_GRP_VALIDATOR, LOG_GRP_RESOLVER, LOG_GRP_SELECTION, LOG_GRP_ZCUT, LOG_GRP_COOKIES, LOG_GRP_STATISTICS, LOG_GRP_REBIND, LOG_GRP_WORKER, LOG_GRP_POLICY, LOG_GRP_TASENTINEL, LOG_GRP_TASIGNALING, LOG_GRP_TAUPDATE, LOG_GRP_DAF, LOG_GRP_DETECTTIMEJUMP, LOG_GRP_DETECTTIMESKEW, LOG_GRP_GRAPHITE, LOG_GRP_PREFILL, LOG_GRP_PRIMING, LOG_GRP_SRVSTALE, LOG_GRP_WATCHDOG, LOG_GRP_NSID, LOG_GRP_DNSTAP, LOG_GRP_TESTS, LOG_GRP_DOTAUTH, LOG_GRP_HTTP, LOG_GRP_CONTROL, LOG_GRP_MODULE, LOG_GRP_DEVEL, LOG_GRP_RENUMBER, LOG_GRP_REQDBG};
kr_layer_t kr_layer_t_static; kr_layer_t kr_layer_t_static;
_Bool kr_dbg_assertion_abort; _Bool kr_dbg_assertion_abort;
......
...@@ -78,6 +78,7 @@ const log_group_names_t log_group_names[] = { ...@@ -78,6 +78,7 @@ const log_group_names_t log_group_names[] = {
GRP_NAME_ITEM(LOG_GRP_CONTROL), GRP_NAME_ITEM(LOG_GRP_CONTROL),
GRP_NAME_ITEM(LOG_GRP_MODULE), GRP_NAME_ITEM(LOG_GRP_MODULE),
GRP_NAME_ITEM(LOG_GRP_DEVEL), GRP_NAME_ITEM(LOG_GRP_DEVEL),
GRP_NAME_ITEM(LOG_GRP_RENUMBER),
GRP_NAME_ITEM(LOG_GRP_REQDBG), GRP_NAME_ITEM(LOG_GRP_REQDBG),
{ NULL, LOG_GRP_UNKNOWN }, { NULL, LOG_GRP_UNKNOWN },
}; };
......
...@@ -78,6 +78,7 @@ enum kr_log_group { ...@@ -78,6 +78,7 @@ enum kr_log_group {
LOG_GRP_CONTROL, LOG_GRP_CONTROL,
LOG_GRP_MODULE, LOG_GRP_MODULE,
LOG_GRP_DEVEL, LOG_GRP_DEVEL,
LOG_GRP_RENUMBER,
/* ^^ Add new log groups above ^^. */ /* ^^ Add new log groups above ^^. */
LOG_GRP_REQDBG, /* Must be first non-displayed entry in enum! */ LOG_GRP_REQDBG, /* Must be first non-displayed entry in enum! */
}; };
...@@ -130,6 +131,7 @@ enum kr_log_group { ...@@ -130,6 +131,7 @@ enum kr_log_group {
#define LOG_GRP_CONTROL_TAG "contrl" /**< ``contrl``: TTY control sockets*/ #define LOG_GRP_CONTROL_TAG "contrl" /**< ``contrl``: TTY control sockets*/
#define LOG_GRP_MODULE_TAG "module" /**< ``module``: suitable for user-defined modules */ #define LOG_GRP_MODULE_TAG "module" /**< ``module``: suitable for user-defined modules */
#define LOG_GRP_DEVEL_TAG "devel" /**< ``devel``: for development purposes */ #define LOG_GRP_DEVEL_TAG "devel" /**< ``devel``: for development purposes */
#define LOG_GRP_RENUMBER_TAG "renum" /**< ``renum``: operation related to renumber */
#define LOG_GRP_REQDBG_TAG "reqdbg" /**< ``reqdbg``: debug logs enabled by policy actions */ #define LOG_GRP_REQDBG_TAG "reqdbg" /**< ``reqdbg``: debug logs enabled by policy actions */
///@} ///@}
......
...@@ -187,7 +187,13 @@ function policy.REROUTE(tbl, names) ...@@ -187,7 +187,13 @@ function policy.REROUTE(tbl, names)
local ren = require('kres_modules.renumber') local ren = require('kres_modules.renumber')
local prefixes = {} local prefixes = {}
for from, to in pairs(tbl) do for from, to in pairs(tbl) do
table.insert(prefixes, names and ren.name(from, to) or ren.prefix(from, to)) local prefix = names and ren.name(from, to) or ren.prefix(from, to)
local bitlen = prefix[2]
if bitlen ~= nil and bitlen % 8 ~= 0 then
log_warn(ffi.C.LOG_GRP_POLICY,
'REROUTE: network mask - only /8, /16, /24 etc. are supported (entire octets are rewritten)')
end
table.insert(prefixes, prefix)
end end
-- Return rule closure -- Return rule closure
return ren.rule(prefixes) return ren.rule(prefixes)
......
...@@ -10,7 +10,13 @@ e.g. you can redirect malicious addresses to a blackhole, or use private address ...@@ -10,7 +10,13 @@ e.g. you can redirect malicious addresses to a blackhole, or use private address
in local zones, that will be remapped to real addresses by the resolver. in local zones, that will be remapped to real addresses by the resolver.
.. warning:: While requests are still validated using DNSSEC, the signatures are stripped from final answer. The reason is that the address synthesis breaks signatures. You can see whether an answer was valid or not based on the AD flag. .. warning:: While requests are still validated using DNSSEC, the signatures
are stripped from final answer. The reason is that the address synthesis
breaks signatures. You can see whether an answer was valid or not based on
the AD flag.
.. warning:: The module is currently limited to rewriting complete octets of
the IP addresses, i.e. only /8, /16, /24 etc. network masks are supported.
Example configuration Example configuration
--------------------- ---------------------
......
...@@ -25,7 +25,12 @@ end ...@@ -25,7 +25,12 @@ end
-- Add subnet prefix rewrite rule -- Add subnet prefix rewrite rule
local function add_prefix(subnet, addr) local function add_prefix(subnet, addr)
table.insert(prefixes_global, matchprefix(subnet, addr)) local prefix = matchprefix(subnet, addr)
local bitlen = prefix[2]
if bitlen ~= nil and bitlen % 8 ~= 0 then
log_warn(ffi.C.LOG_GRP_RENUMBER, 'network mask: only /8, /16, /24 etc. are supported (entire octets are rewritten)')
end
table.insert(prefixes_global, prefix)
end end
-- Match IP against given subnet or record owner -- Match IP against given subnet or record owner
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment