diff --git a/Shorewall/Perl/Shorewall/Chains.pm b/Shorewall/Perl/Shorewall/Chains.pm index e1c16f779..f8508ca59 100644 --- a/Shorewall/Perl/Shorewall/Chains.pm +++ b/Shorewall/Perl/Shorewall/Chains.pm @@ -1986,6 +1986,10 @@ sub zone_forward_chain($) { # sub use_forward_chain($$) { my ( $interface, $chainref ) = @_; + my @loopback_zones = loopback_zones; + + return 0 if $interface eq loopback_interface && ! @loopback_zones; + my $interfaceref = find_interface($interface); my $nets = $interfaceref->{nets}; diff --git a/Shorewall/Perl/Shorewall/Misc.pm b/Shorewall/Perl/Shorewall/Misc.pm index d03f09c79..e6b88ed58 100644 --- a/Shorewall/Perl/Shorewall/Misc.pm +++ b/Shorewall/Perl/Shorewall/Misc.pm @@ -1475,10 +1475,8 @@ sub handle_loopback_traffic() { # if ( $unmanaged = $loref && $loref->{options}{unmanaged} ) { if ( have_capability 'IFACE_MATCH' ) { - add_ijump( $filter_table->{INPUT}, j => 'ACCEPT', iface => '--dev-in --loopback' ); add_ijump( $filter_table->{OUTPUT}, j => 'ACCEPT', iface => '--dev-out --loopback' ); } else { - add_ijump( $filter_table->{INPUT}, j => 'ACCEPT', i => loopback_interface ); add_ijump( $filter_table->{OUTPUT}, j => 'ACCEPT', o => loopback_interface ); } } else { diff --git a/Shorewall/Perl/Shorewall/Zones.pm b/Shorewall/Perl/Shorewall/Zones.pm index 85d7235f6..c0a10e66f 100644 --- a/Shorewall/Perl/Shorewall/Zones.pm +++ b/Shorewall/Perl/Shorewall/Zones.pm @@ -1488,7 +1488,7 @@ sub validate_interfaces_file( $ ) { number => $nextinum++, root => 'lo', broadcasts => undef, - options => { unmanaged => 1, loopback => 1 , ignore => 1 }, + options => { loopback => 1 , ignore => 1 }, zone => '', physical => 'lo' }; push @interfaces, $loopback_interface = 'lo';