###
### The mangle chains are arranged as follows.
###
-### The INPUT and FORWARD hooks simply invokes in-classify and out-classify
+### The INPUT and FORWARD hooks simply invoke in-classify and out-classify
### chains as subroutines. These will tail-call appropriate classification
### chains.
###
### goes to bad-source-address, which logs a message and drops the packet.
### The default interface is special. If no explicit matches are found, it
### dispatches to in-default which forbids a few obviously evil things and
-### finally dispatches to mark-from-untrusted.
+### finally dispatches to mark-from-DEFAULT (usually `untrusted').
###
### The out-classify is simpler because it doesn't care about the interface.
### It simply checks each network range in turn, dispatching to mark-to-CLASS
-### on a match or mark-to-DEFAULT (probably untrusted) if there is no match.
+### on a match or mark-to-DEFAULT (probably `untrusted') if there is no
+### match.
clearchain mangle:in-classify mangle:in-default mangle:out-classify
clearchain mangle:local-source
## over the loopback interface, I shouldn't see a packet from me over any
## other interface. Except that I will if I sent a broadcast or multicast.
## Allow the broadcasts, and remember not to trust them. There are no
-## broadcast addresses in IPv6 (only link-local multicast)m so we don't have
+## broadcast addresses in IPv6 (only link-local multicast) so we don't have
## to worry about that.
run iptables -t mangle -A local-source -j RETURN \
-m addrtype --dst-type BROADCAST
done
## Fill in the black holes in the network. Some of these might actually be
-## known networks, so don't fill those in again.
+## known networks, so don't fill those in again. See RFC5735 and RFC4291,
+## and their successors.
for addr in \
10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 \
127.0.0.0/8 \
done
for addr in \
fc00::/7 \
+ ::0:0/96 ::ffff:0:0/96 \
2001:db8::/32
do
case $alladdrs in *!$addr!*) continue ;; esac