Skip to content
  • Jo-Philipp Wich's avatar
    helpers: implement explicit CT helper assignment support · f50a5248
    Jo-Philipp Wich authored
    
    
    Implement support for explicit per-zone conntrack helper assignment in
    the raw table in order to compensate for the now disabled automatic
    helper assignment in recent Linux kernels.
    
    This commit adds, along with the required infrastructure, a new per-
    zone uci option "helper" which can be used to tie one or more CT helpers
    to a given zone.
    
    For example the following configuration:
    
        config zone
          option name lan
          option network lan
          list helper ftp
          list helper sip
    
    ... will assign the FTP and SIP conntrack helpers as specified in
    /usr/share/fw3/helpers.conf to traffic originating from the LAN zone.
    
    Additionally, a new boolean option "auto_helper" has been defined for
    both "config defaults" and "config zone" sections, with the former
    option overruling the latter.
    
    When the default true "option auto_helper" is set, all available helpers
    are automatically attached to each non-masq zone (i.e. "lan" by default).
    
    When one or more "list helper" options are specified, the zone has
    masquerading enabled or "auto_helper" is set to false, then the automatic
    helper attachment is disabled for the corresponding zone.
    
    Furthermore, this commit introduces support for a new 'HELPER' target in
    "config rule" sections, along with "option helper" to match helper traffic
    and "option set_helper" to assign CT helpers to a stream.
    
    Finally, "config redirect" sections support "option helper" too now,
    which causes fw3 to emit helper setting rules for forwarded DNAT traffic.
    
    When "option helper" is not defined for a redirect and when the global
    option "auto_helper" is not disabled, fw3 will pick a suitable helper
    based on the destination protocol and port and assign it to DNATed traffic.
    
    Signed-off-by: default avatarJo-Philipp Wich <jo@mein.io>
    f50a5248