diff --git a/Shorewall/Perl/Shorewall/Raw.pm b/Shorewall/Perl/Shorewall/Raw.pm index ae1c02781..ddc19cfef 100644 --- a/Shorewall/Perl/Shorewall/Raw.pm +++ b/Shorewall/Perl/Shorewall/Raw.pm @@ -54,7 +54,9 @@ sub process_conntrack_rule( $$$$$$$$$ ) { my $zone; my $restriction = PREROUTE_RESTRICT; - unless ( $chainref ) { + if ( $chainref ) { + $restriction = OUTPUT_RESTRICT if $chainref->{name} eq 'OUTPUT'; + } else { # # Entry in the conntrack file # @@ -248,10 +250,10 @@ sub setup_conntrack() { $empty = 0; - if ( $source eq 'all' ) { - for my $zone (all_zones) { - process_conntrack_rule( undef, undef, $action, $zone, $dest, $proto, $ports, $sports, $user ); - } + if ( $source =~ /^all(-)?(:(.+))?$/ ) { + fatal_error 'USER/GROUP is not allowed unless the SOURCE zone is $FW or a Vserver zone' if $user ne '-'; + process_conntrack_rule( $raw_table->{OUTPUT}, undef, $action, $3 || '-', $dest, $proto, $ports, $sports, $user ) unless $1; + process_conntrack_rule( $raw_table->{PREROUTING}, undef, $action, $3 || '-', $dest, $proto, $ports, $sports, $user ); } else { process_conntrack_rule( undef, undef, $action, $source, $dest, $proto, $ports, $sports, $user ); } diff --git a/Shorewall/manpages/shorewall-conntrack.xml b/Shorewall/manpages/shorewall-conntrack.xml index c9fe273d7..5496269c6 100644 --- a/Shorewall/manpages/shorewall-conntrack.xml +++ b/Shorewall/manpages/shorewall-conntrack.xml @@ -151,10 +151,10 @@ - + - + @@ -250,6 +250,10 @@ Beginning with Shorewall 4.5.7, can be used as the zone name to mean all zones. + + Beginning with Shorewall 4.5.10, can be + used as the zone name to mean all + off-firewall zones. diff --git a/Shorewall6/manpages/shorewall6-conntrack.xml b/Shorewall6/manpages/shorewall6-conntrack.xml index b2087c337..0348d3b85 100644 --- a/Shorewall6/manpages/shorewall6-conntrack.xml +++ b/Shorewall6/manpages/shorewall6-conntrack.xml @@ -145,6 +145,10 @@ Beginning with Shorewall 4.5.7, can be used as the zone name to mean all zones. + + Beginning with Shorewall 4.5.10, can be + used as the zone name to mean all + off-firewall zones.