Name

exclusion — Exclude a set of hosts from a definition in a shorewall configuration file.

Synopsis

!address-or-range[,address-or-range]...

!zone-name[,zone-name]...

Description

The first form of exclusion is used when you wish to exclude one or
more addresses from a definition. An exclamation point is followed by a
comma-separated list of addresses. The addresses may be single host
addresses (e.g., 192.168.1.4) or they may be network addresses in CIDR
format (e.g., 192.168.1.0/24). If your kernel and iptables include iprange
support, you may also specify ranges of ip addresses of the form
lowaddress-highaddress

No embedded white-space is allowed.

Exclusion can appear after a list of addresses and/or address
ranges. In that case, the final list of address is formed by taking the
first list and then removing the addresses defined in the
exclusion.

Beginning in Shorewall 4.4.13, the second form of exclusion is
allowed after all and any in the SOURCE and DEST columns of
/etc/shorewall/rules. It allows you to omit arbitrary zones from the list
generated by those key words.

Warning

If you omit a sub-zone and there is an explicit or explicit
CONTINUE policy, a connection to/from that zone can still be matched by
the rule generated for a parent zone.

For example:

/etc/shorewall/zones:

#ZONE TYPE
z1 ip
z2:z1 ip
...

/etc/shorewall/policy:

#SOURCE DEST POLICY
z1 net CONTINUE
z2 net REJECT

/etc/shorewall/rules:

#ACTION SOURCE DEST PROTO DPORT
ACCEPT all!z2 net tcp 22

In this case, SSH connections from z2 to net will
be accepted by the generated z1 to
net ACCEPT rule.

In most contexts, ipset names can be used as an
address-or-range. Beginning with Shorewall
4.4.14, ipset lists enclosed in +[...] may also be included (see shorewall-ipsets (5)). The
semantics of these lists when used in an exclusion are as follows:

!+[set1,set2,...setN]
produces a packet match if the packet does not match at least one of
the sets. In other words, it is like NOT match
set1 OR NOT match
set2 ... OR NOT match
setN.

+[!set1,!set2,...!setN]
produces a packet match if the packet does not match any of the sets.
In other words, it is like NOT match set1
AND NOT match set2 ... AND NOT match
setN.