firewall
12 years agoMerge branch 'master' into emergency emergency
Mark Wooding [Fri, 30 Mar 2012 16:41:50 +0000 (17:41 +0100)]
Merge branch 'master' into emergency

* master:
  fender.m4: Define an address to be a guaranteed black hole.

12 years agofender.m4: Define an address to be a guaranteed black hole.
Mark Wooding [Fri, 30 Mar 2012 16:30:42 +0000 (17:30 +0100)]
fender.m4: Define an address to be a guaranteed black hole.

12 years agoMerge remote-tracking branch 'origin' into emergency
Mark Wooding [Sat, 24 Mar 2012 17:07:36 +0000 (17:07 +0000)]
Merge remote-tracking branch 'origin' into emergency

* origin:
  local.m4: A new network for the SGO VPN.
  functions.m4, classify.m4: Handle negative address ranges.
  Make FW_NOACT work properly.

Conflicts:
local.m4

12 years agolocal.m4: A new network for the SGO VPN.
Mark Wooding [Fri, 23 Mar 2012 16:04:22 +0000 (16:04 +0000)]
local.m4: A new network for the SGO VPN.

12 years agofunctions.m4, classify.m4: Handle negative address ranges.
Mark Wooding [Fri, 23 Mar 2012 16:02:25 +0000 (16:02 +0000)]
functions.m4, classify.m4: Handle negative address ranges.

That is, a network can explicitly exclude an address range.  Ranges are
checked in order, so you carve out a hole in the middle of a range by
putting a negative range first for the hole first, and the big network
afterwards.

This involves a fairly major rearrangement of the address classification
machinery.  Again.

12 years agoMake FW_NOACT work properly.
Mark Wooding [Fri, 23 Mar 2012 16:00:52 +0000 (16:00 +0000)]
Make FW_NOACT work properly.

Some calls to iptables(8) and friends weren't through `run', so fix
these.  Also skip the initial flushing.  We probably want to skip the
final dump, but don't do that yet.

12 years agoMerge branch 'master' into emergency
Mark Wooding [Sat, 17 Mar 2012 16:04:22 +0000 (16:04 +0000)]
Merge branch 'master' into emergency

* master:
  local.m4: Declare network for anycast services.
  local.m4: Reorder forwarding networks for `default'.
  local.m4: Move `vpn' to the common networks section.

12 years agolocal.m4: Declare network for anycast services.
Mark Wooding [Sat, 17 Mar 2012 16:02:59 +0000 (16:02 +0000)]
local.m4: Declare network for anycast services.

12 years agolocal.m4: Reorder forwarding networks for `default'.
Mark Wooding [Sat, 17 Mar 2012 16:02:35 +0000 (16:02 +0000)]
local.m4: Reorder forwarding networks for `default'.

Makes it easier to read.

12 years agolocal.m4: Move `vpn' to the common networks section.
Mark Wooding [Sat, 17 Mar 2012 16:02:03 +0000 (16:02 +0000)]
local.m4: Move `vpn' to the common networks section.

It's not really geographical.

12 years agobookends.m4: Configure IPv6 router advertisement stuff.
Mark Wooding [Thu, 15 Mar 2012 02:48:33 +0000 (02:48 +0000)]
bookends.m4: Configure IPv6 router advertisement stuff.

Servers are expected to listen in on the routing protocols, so even
though they aren't actually routers, they still shouldn't listen to
the advertisements.

12 years agofunctions.m4, local.m4: Introduce more kinds of hosts.
Mark Wooding [Thu, 15 Mar 2012 02:47:52 +0000 (02:47 +0000)]
functions.m4, local.m4: Introduce more kinds of hosts.

12 years agofunctions.m4: Actually set the IPv6 options.
Mark Wooding [Thu, 15 Mar 2012 02:39:08 +0000 (02:39 +0000)]
functions.m4: Actually set the IPv6 options.

12 years agoPartially revert "vampire.m4: Open rdesktop port 3389."
Mark Wooding [Wed, 14 Mar 2012 17:59:31 +0000 (17:59 +0000)]
Partially revert "vampire.m4: Open rdesktop port 3389."

This partially reverts commit 70b00235ca5a98cc79e1265b7d099f07f8924237:
RDP is not suitable for exposure to the outside world.

12 years agoMerge branch 'master' into emergency
Mark Wooding [Mon, 12 Mar 2012 00:16:27 +0000 (00:16 +0000)]
Merge branch 'master' into emergency

* master:
  Overhaul address classification for link-local and non-unicast addresses.
  functions.m4: Publish the per-class forwarding bitmasks.
  functions.m4: The mark-{from,to}-* rules no longer own the packet marks.
  classify.m4: Use canonical forms for IPv6 addresses.
  local.m4: Actually use the IPv6 fragmentation forbidding filter.
  Extend proper ICMP handling to IPv6.
  bookends.m4: Optimize checking for forwarding IPv6 link-local multicast.
  vampire.m4: Extend services to untrusted hosts over IPv6.
  Introduce variable for expected input chains.

12 years agoOverhaul address classification for link-local and non-unicast addresses.
Mark Wooding [Sun, 11 Mar 2012 23:58:09 +0000 (23:58 +0000)]
Overhaul address classification for link-local and non-unicast addresses.

The previous attempts just weren't working.  Intead, assign them their
own classes, and work things using the forwarding masks.  There's a
minor wrinkle, that we must handle forwarded packets differently from
inbound ones if they involve link-local addresses, but this is handled
with a fixup in the mangle INPUT chain.

The other significant change here is that the mangle table is now
responsible for selecting packets with bogus destination addresses for
rejection -- though it can't do the rejection itself because of a
kernel restriction.

12 years agofunctions.m4: Publish the per-class forwarding bitmasks.
Mark Wooding [Mon, 12 Mar 2012 00:02:05 +0000 (00:02 +0000)]
functions.m4: Publish the per-class forwarding bitmasks.

Just a matter of renaming the variables which hold them.

12 years agofunctions.m4: The mark-{from,to}-* rules no longer own the packet marks.
Mark Wooding [Sun, 11 Mar 2012 19:51:57 +0000 (19:51 +0000)]
functions.m4: The mark-{from,to}-* rules no longer own the packet marks.

These rules now have to be more careful about exactly which parts of
the mark field they clobber.

12 years agoclassify.m4: Use canonical forms for IPv6 addresses.
Mark Wooding [Sun, 11 Mar 2012 16:35:37 +0000 (16:35 +0000)]
classify.m4: Use canonical forms for IPv6 addresses.

12 years agolocal.m4: Actually use the IPv6 fragmentation forbidding filter.
Mark Wooding [Sun, 11 Mar 2012 16:34:38 +0000 (16:34 +0000)]
local.m4: Actually use the IPv6 fragmentation forbidding filter.

12 years agoExtend proper ICMP handling to IPv6.
Mark Wooding [Sun, 11 Mar 2012 16:33:25 +0000 (16:33 +0000)]
Extend proper ICMP handling to IPv6.

Take the opportunity to use the `icmpv6' protocol name throughout.
Fortunately, in a few places where we use `ip46tables', it's actually
possible to use plain `-p icmp'.

12 years agobookends.m4: Optimize checking for forwarding IPv6 link-local multicast.
Mark Wooding [Sun, 11 Mar 2012 16:30:08 +0000 (16:30 +0000)]
bookends.m4: Optimize checking for forwarding IPv6 link-local multicast.

Apply a coarse filter to detect all multicast, and dispatch to a
finer-grained one to detect link-local multicast addresses.  This
would be much easier if the flags and scope fields were the other way
around.

Also fix it to use the correct address range.

12 years agovampire.m4: Extend services to untrusted hosts over IPv6.
Mark Wooding [Sun, 11 Mar 2012 16:19:17 +0000 (16:19 +0000)]
vampire.m4: Extend services to untrusted hosts over IPv6.

12 years agoIntroduce variable for expected input chains.
Mark Wooding [Sun, 11 Mar 2012 16:18:12 +0000 (16:18 +0000)]
Introduce variable for expected input chains.

Saves lots of messing with $forward.

12 years agoMerge branch 'master' into emergency
Mark Wooding [Sun, 11 Mar 2012 05:23:50 +0000 (05:23 +0000)]
Merge branch 'master' into emergency

* master:
  local.m4: Fix the `safe' network prefix length.
  local.m4: Define the IPv6 network structure.
  local.m4: Add routes to/from the `safe' network.
  local.m4: The VPN will be available through the colo.
  functions.m4: Correct defaulting of IPv6 host addresses.

Conflicts:
local.m4

12 years agolocal.m4: Fix the `safe' network prefix length.
Mark Wooding [Sun, 11 Mar 2012 05:12:37 +0000 (05:12 +0000)]
local.m4: Fix the `safe' network prefix length.

12 years agolocal.m4: Define the IPv6 network structure.
Mark Wooding [Sun, 11 Mar 2012 05:10:12 +0000 (05:10 +0000)]
local.m4: Define the IPv6 network structure.

12 years agolocal.m4: Add routes to/from the `safe' network.
Mark Wooding [Sun, 11 Mar 2012 05:09:34 +0000 (05:09 +0000)]
local.m4: Add routes to/from the `safe' network.

12 years agolocal.m4: The VPN will be available through the colo.
Mark Wooding [Sun, 11 Mar 2012 05:05:29 +0000 (05:05 +0000)]
local.m4: The VPN will be available through the colo.

12 years agofunctions.m4: Correct defaulting of IPv6 host addresses.
Mark Wooding [Sun, 11 Mar 2012 05:03:21 +0000 (05:03 +0000)]
functions.m4: Correct defaulting of IPv6 host addresses.

12 years agoMerge branch 'master' into emergency
Mark Wooding [Thu, 8 Mar 2012 18:57:42 +0000 (18:57 +0000)]
Merge branch 'master' into emergency

* master:
  classify.m4: Reject the RFC5737 documentation-only addresses.

12 years agoclassify.m4: Reject the RFC5737 documentation-only addresses.
Mark Wooding [Thu, 8 Mar 2012 18:56:48 +0000 (18:56 +0000)]
classify.m4: Reject the RFC5737 documentation-only addresses.

12 years agolocal.m4: The default net reaches vampire's `t6-he' interface.
Mark Wooding [Thu, 8 Mar 2012 18:51:10 +0000 (18:51 +0000)]
local.m4: The default net reaches vampire's `t6-he' interface.

Of course this means that we must mention which other interfaces can
also carry default addresses.

12 years agovampire.m4: Open a 6-in-4 tunnel through to Hurricane Electric.
Mark Wooding [Wed, 7 Mar 2012 21:23:03 +0000 (21:23 +0000)]
vampire.m4: Open a 6-in-4 tunnel through to Hurricane Electric.

Another job that radius should be doing.

12 years agoMerge branch 'master' into emergency
Mark Wooding [Wed, 7 Mar 2012 03:06:39 +0000 (03:06 +0000)]
Merge branch 'master' into emergency

* master:
  Move per-host filtering to diversion 86 as promised.
  local.m4: Add `unsafe' to ibanez `br-dmz' interface.

12 years agoMove per-host filtering to diversion 86 as promised.
Mark Wooding [Wed, 7 Mar 2012 03:06:01 +0000 (03:06 +0000)]
Move per-host filtering to diversion 86 as promised.

For some reason, most of them were on 84, and fender was on 82.

12 years agolocal.m4: Add `unsafe' to ibanez `br-dmz' interface.
Mark Wooding [Wed, 7 Mar 2012 03:04:00 +0000 (03:04 +0000)]
local.m4: Add `unsafe' to ibanez `br-dmz' interface.

Accidentally omitted from the earlier change.

12 years agoMerge branch 'master' into emergency
Mark Wooding [Wed, 7 Mar 2012 02:52:52 +0000 (02:52 +0000)]
Merge branch 'master' into emergency

* master:
  functions: Move NTP server list out of line.
  local.m4: Allow dmz/jump packets on unsafe/colo networks and vice versa.

12 years agofunctions: Move NTP server list out of line.
Mark Wooding [Wed, 7 Mar 2012 02:52:25 +0000 (02:52 +0000)]
functions: Move NTP server list out of line.

Makes the `inbound' chain slightly more efficient in the common case.

12 years agolocal.m4: Allow dmz/jump packets on unsafe/colo networks and vice versa.
Mark Wooding [Tue, 6 Mar 2012 23:26:10 +0000 (23:26 +0000)]
local.m4: Allow dmz/jump packets on unsafe/colo networks and vice versa.

The routing asymmetry is too grim otherwise.  Consider:

  * ibanez and vampire are both on dmz and unsafe;

  * vampire is a router on dmz, unsafe, and vpn, while ibanez is not a
    router;

  * crybaby is on vpn;

  * crybaby attempts to connect to ibanez.dmz.

Now ibanez will respond with its dmz address as the source, and
crybaby's vpn address as the destination.  Based on the destination, it
will choose to route the packet over the unsafe network.  We must
therefore let vampire know that this is a possibility.

Similarly, ibanez must be prepared to allow packets from unsafe
on its dmz interface because it's not a router: hence, to reach their
destination, they'll have to be pushed over dmz by a router.

It's therefore inevitable that we must abandon separation between these
two networks (or start fiddling with policy routing, which just seems
like more pain than it's worth).

12 years agoMerge branch 'master' into emergency
Mark Wooding [Tue, 6 Mar 2012 10:43:58 +0000 (10:43 +0000)]
Merge branch 'master' into emergency

* master:
  radius.m4: Forbid traffic directly to the NAT address.
  radius.m4: Use the correct interface name for NAT.
  local.m4: Fix IGMP acceptance (debris from old interface declarations).

12 years agoradius.m4: Forbid traffic directly to the NAT address.
Mark Wooding [Tue, 6 Mar 2012 10:42:58 +0000 (10:42 +0000)]
radius.m4: Forbid traffic directly to the NAT address.

It should only be for forwarded traffic.

12 years agoradius.m4: Use the correct interface name for NAT.
Mark Wooding [Tue, 6 Mar 2012 10:41:59 +0000 (10:41 +0000)]
radius.m4: Use the correct interface name for NAT.

This is the last of the network declaration switchover debris.

12 years agolocal.m4: Fix IGMP acceptance (debris from old interface declarations).
Mark Wooding [Tue, 6 Mar 2012 10:38:07 +0000 (10:38 +0000)]
local.m4: Fix IGMP acceptance (debris from old interface declarations).

The rules which allowed incoming IGMP were written in terms of (a) the
old $if_... variables which have now disappeared, and (b) an explicit
list of the `trusted' networks.  Fix this to use the new system: walk
the list of networks, examine their classes, and determine the
interfaces.

12 years agovampire.m4: Forbid incoming traffic directly on the NAT address.
Mark Wooding [Tue, 6 Mar 2012 10:36:47 +0000 (10:36 +0000)]
vampire.m4: Forbid incoming traffic directly on the NAT address.

It's meant only for forwarding.

12 years agoMerge branch 'master' into emergency
Mark Wooding [Tue, 6 Mar 2012 00:01:11 +0000 (00:01 +0000)]
Merge branch 'master' into emergency

* master:
  functions.m4: Write the netclass ids to the trace output.
  bookends.m4: If debugging, dump the final tables.
  Determine forwarding and reverse-path filtering from host definitions.
  Overhaul address classification.
  local.m4: Promote the NTP server configuration to a proper variable.
  Renumber the diversions.
  fixup! WIP on emergency: 7a108d1 Makefile: New target for tracking diversions.
  Makefile: New target for tracking diversions.
  Makefile, base.m4: Inject the target hostname into the generated script.

Semantic conflict: The variable `if_dmz' is no longer set, so just
hardwire the interface name.

12 years agofunctions.m4: Write the netclass ids to the trace output.
Mark Wooding [Mon, 5 Mar 2012 23:51:44 +0000 (23:51 +0000)]
functions.m4: Write the netclass ids to the trace output.

12 years agobookends.m4: If debugging, dump the final tables.
Mark Wooding [Mon, 5 Mar 2012 23:51:00 +0000 (23:51 +0000)]
bookends.m4: If debugging, dump the final tables.

This makes it rather easier to see what's gone wrong when the update
times out.

12 years agoDetermine forwarding and reverse-path filtering from host definitions.
Mark Wooding [Mon, 5 Mar 2012 23:39:23 +0000 (23:39 +0000)]
Determine forwarding and reverse-path filtering from host definitions.

There's an explicit declaration for routers.  Reverse-path filtering is
just turned off: the routing asymmetries break things too badly on
multi-homed hosts, and it's useless for single-homed hosts.

12 years agoOverhaul address classification.
Mark Wooding [Mon, 5 Mar 2012 23:16:25 +0000 (23:16 +0000)]
Overhaul address classification.

The current system isn't scaling.  Adding new networks in particular is
very difficult, and requires subtle changes to all of the host
definitions -- which is also rather tedious.

This new version overhauls the way that the classification chains are
constructed.  The important part is that they're now derived from a
single description of the entire network.  (This isn't necessary: the
network and hosts could be scattered arbitrarily, but it makes
management easier for me.)

The critical bit is the algorithm in `net_interfaces' which computes
which networks' source addresses can arrive at a particular interface.
This algorithm isn't especially clever (what with being written in
Bourne shell and all) but seems to do the job fairly well, and it has
enough knobs to tweak that getting the right answer isn't too hard.

12 years agolocal.m4: Promote the NTP server configuration to a proper variable.
Mark Wooding [Mon, 5 Mar 2012 23:27:37 +0000 (23:27 +0000)]
local.m4: Promote the NTP server configuration to a proper variable.

12 years agoRenumber the diversions.
Mark Wooding [Mon, 5 Mar 2012 22:35:27 +0000 (22:35 +0000)]
Renumber the diversions.

Move the function definitions together; shift the host interface
definitions near the beginning of the file; and move the local filter
rules later to allow more room for built-in filtering.

12 years agofixup! WIP on emergency: 7a108d1 Makefile: New target for tracking diversions.
Mark Wooding [Mon, 5 Mar 2012 22:34:59 +0000 (22:34 +0000)]
fixup! WIP on emergency: 7a108d1 Makefile: New target for tracking diversions.

12 years agoMakefile: New target for tracking diversions.
Mark Wooding [Mon, 5 Mar 2012 10:40:30 +0000 (10:40 +0000)]
Makefile: New target for tracking diversions.

12 years agoMakefile, base.m4: Inject the target hostname into the generated script.
Mark Wooding [Mon, 5 Mar 2012 09:46:35 +0000 (09:46 +0000)]
Makefile, base.m4: Inject the target hostname into the generated script.

This means we can identify the target in the comment header.  It will be
even more useful later.

12 years agoMerge branch 'master' into emergency
Mark Wooding [Sun, 12 Feb 2012 01:58:03 +0000 (01:58 +0000)]
Merge branch 'master' into emergency

* master:
  numbers.m4, gibson.m4: Allow gibson to receive IPMI responses.
  bookends.m4: Open up tables we clobbered at exit.
  fender: New host, with basic firewall.

12 years agonumbers.m4, gibson.m4: Allow gibson to receive IPMI responses.
Mark Wooding [Sun, 12 Feb 2012 01:53:23 +0000 (01:53 +0000)]
numbers.m4, gibson.m4: Allow gibson to receive IPMI responses.

Useful for managing fancy server boxes.

12 years agobookends.m4: Open up tables we clobbered at exit.
Mark Wooding [Sun, 12 Feb 2012 01:52:29 +0000 (01:52 +0000)]
bookends.m4: Open up tables we clobbered at exit.

Otherwise the `raw' table gets left dropping everything.  I've no idea
why this didn't actually break everything for ages.

12 years agofender: New host, with basic firewall.
Mark Wooding [Sat, 11 Feb 2012 19:22:05 +0000 (19:22 +0000)]
fender: New host, with basic firewall.

Eventually fender will live elsewhere and have totally different
routing.  For now, though, this will do.

12 years agovampire.m4: Open rdesktop port 3389.
Mark Wooding [Wed, 28 Dec 2011 14:21:29 +0000 (14:21 +0000)]
vampire.m4: Open rdesktop port 3389.

Users may want to forward this to a Windows machine.  There is no
local RDP service.

12 years agovampire.m4: Load protocol-specific NAT helper modules.
Mark Wooding [Fri, 9 Dec 2011 23:11:50 +0000 (23:11 +0000)]
vampire.m4: Load protocol-specific NAT helper modules.

12 years agovampire.m4: Assume router and NAT duties.
Mark Wooding [Fri, 9 Dec 2011 23:11:50 +0000 (23:11 +0000)]
vampire.m4: Assume router and NAT duties.

12 years agonumbers.m4, vampire.m4: Serve TFTP to the untrusted network.
Mark Wooding [Sat, 11 Feb 2012 18:30:05 +0000 (18:30 +0000)]
numbers.m4, vampire.m4: Serve TFTP to the untrusted network.

Refactor the untrusted-services stuff to make this less grim.

12 years agonumbers.m4, gibson.m4: Allow gibson public SIP access.
Mark Wooding [Sat, 11 Feb 2012 18:26:12 +0000 (18:26 +0000)]
numbers.m4, gibson.m4: Allow gibson public SIP access.

12 years agojem.m4: Add a hook for SAUCE.
Mark Wooding [Sat, 23 Jul 2011 10:19:59 +0000 (11:19 +0100)]
jem.m4: Add a hook for SAUCE.

Use ipsets rather than SAUCE's defaults.

12 years agofunctions.m4: New function for arranging that an ipset exists.
Mark Wooding [Sat, 23 Jul 2011 11:49:59 +0000 (12:49 +0100)]
functions.m4: New function for arranging that an ipset exists.

12 years agofunctions.m4: Make clearchain tolerant of existing chains.
Mark Wooding [Sat, 23 Jul 2011 11:45:38 +0000 (12:45 +0100)]
functions.m4: Make clearchain tolerant of existing chains.

It's a handy way to make chains which are populated elsewhere, e.g., by
fail2ban.

12 years agobookends.m4: Much more intelligent initialization.
Mark Wooding [Sat, 23 Jul 2011 11:44:00 +0000 (12:44 +0100)]
bookends.m4: Much more intelligent initialization.

Rather than clobbering all of the chains, clear them out one at a time,
preserving some which are known to be maintained elsewhere.

12 years agojem.m4: Remove SMB for untrusted hosts.
Mark Wooding [Sat, 23 Jul 2011 10:19:29 +0000 (11:19 +0100)]
jem.m4: Remove SMB for untrusted hosts.

Leave that as a job for artist.

12 years agofunctions.m4: Rate-limit rejections on error chains.
Mark Wooding [Sat, 23 Jul 2011 10:18:26 +0000 (11:18 +0100)]
functions.m4: Rate-limit rejections on error chains.

This reduces our workload under attack, without severely affecting
diagnostic capability.

12 years agobookends.m4: Provide a hook chain for fail2ban.
Mark Wooding [Sun, 17 Jul 2011 12:43:16 +0000 (13:43 +0100)]
bookends.m4: Provide a hook chain for fail2ban.

Otherwise it does its filtering before we've permitted loopback, and
stuff could get very bad.

12 years agoradius.m4: Allow IPv6 tunnel from Hurricane Electric UK endpoint.
Mark Wooding [Fri, 15 Jul 2011 15:41:56 +0000 (16:41 +0100)]
radius.m4: Allow IPv6 tunnel from Hurricane Electric UK endpoint.

12 years agofunctions.m4, numbers.m4: Define protocol number for IPv6 tunnelling.
Mark Wooding [Fri, 15 Jul 2011 15:41:06 +0000 (16:41 +0100)]
functions.m4, numbers.m4: Define protocol number for IPv6 tunnelling.

12 years agobookend.m4: Finish off the IPv6 chains.
Mark Wooding [Fri, 15 Jul 2011 08:44:18 +0000 (09:44 +0100)]
bookend.m4: Finish off the IPv6 chains.

12 years agohosts: Allow incoming ident requests.
Mark Wooding [Wed, 13 Jul 2011 22:41:33 +0000 (23:41 +0100)]
hosts: Allow incoming ident requests.

12 years agoradius.m4: Take over NAT duties.
Mark Wooding [Sun, 10 Jul 2011 21:03:14 +0000 (22:03 +0100)]
radius.m4: Take over NAT duties.

As the main internal router, radius now takes responsibility for appling
SNAT to outbound connections from internal hosts.

12 years agoMajor network restructuring.
Mark Wooding [Sun, 10 Jul 2011 20:57:12 +0000 (21:57 +0100)]
Major network restructuring.

We now have a globally routable /28.  Use this as the DMZ and the
network backbone.  The main servers (ibanez, radius, roadstar, jem,
artist and vampire) are on both the DMZ and the unsafe network.
radius is now the main internal router, though vampire is still on
several networks because it provides DHCP and DNS services.

This new configuration makes essential use of the ability (added to
defiface) to accept multiple interface names by setting lists of names
into the interface variables if_FOO.

There's another aspect of the routing complexity which we must address
here: multicasts can arrive on any of several trusted networks, and we
should accept them all.  (We must cope with interface name lists in the
interface variables here, and deduplicate.)

12 years agobookends.m4, config.m4: Allow configuration of reverse-path filtering.
Mark Wooding [Sun, 10 Jul 2011 20:53:43 +0000 (21:53 +0100)]
bookends.m4, config.m4: Allow configuration of reverse-path filtering.

We'll need to turn it off in some hosts because there are routing
asymmetries.

12 years agofunctions.m4: Set IPv6 options in setopt and setdevopt.
Mark Wooding [Sun, 10 Jul 2011 20:49:44 +0000 (21:49 +0100)]
functions.m4: Set IPv6 options in setopt and setdevopt.

Also allow selection of interfaces in setdevopt.  We don't need this
yet, but it will allow selective enabling of reverse-path filtering and
similar should that turn out to be useful.

12 years agobookends.m4: Only disable filtering on bridges if we have bridges.
Mark Wooding [Sun, 10 Jul 2011 20:47:27 +0000 (21:47 +0100)]
bookends.m4: Only disable filtering on bridges if we have bridges.

Actually, we're too early in the boot process to tell whether there are
bridges; but we can try to load the applicable module and only do the
hacking if it's available.  This probably bloats some kernels a bit, but
it's not too bad.

12 years agobookends.m4: Allow responding to broadcast and multicast ping.
Mark Wooding [Sun, 10 Jul 2011 20:46:41 +0000 (21:46 +0100)]
bookends.m4: Allow responding to broadcast and multicast ping.

This way, I can see which things are responding to multicasts.

12 years agoclassify.m4, functions.m4: Multiple interfaces can have default nets.
Mark Wooding [Sun, 10 Jul 2011 20:42:38 +0000 (21:42 +0100)]
classify.m4, functions.m4: Multiple interfaces can have default nets.

Following on from the last change: if a net can be reachable through
several interfaces, then logically the default net might be reachable
through several interfaces too.  Therefore, we must be able to cope with
this situation.

12 years agofunctions.m4: Allow multiple interfaces to be defined by defiface.
Mark Wooding [Sun, 10 Jul 2011 20:35:54 +0000 (21:35 +0100)]
functions.m4: Allow multiple interfaces to be defined by defiface.

With the upcoming network reorganization, it will be possible for
particular networks to be routed over several different interfaces.  It
will make describing the individual routers easier if we can get
defiface to deal with the commonality.

12 years agofunctions.m4, local.m4: Workaround for option parser fragmentation bugs.
Mark Wooding [Sun, 10 Jul 2011 20:19:47 +0000 (21:19 +0100)]
functions.m4, local.m4: Workaround for option parser fragmentation bugs.

There are some nasty option parser bugs in iptables 1.4.11.1.  Most
obviously, it refuses to accept `! -f' even though it always used to
work.  (This is Debian #632695.)  Secondly, it sees that ip6tables has
stopped accepting `! --fragfirst'.  I'm not sure this is unintentional,
though it's certainly annoying.

Work around both of these problems by introducing additional chains.
That is, we replace

iptables -A chain -j action ! --test

by

iptables -A newchain -j RETURN --test
iptables -A newchain -j action
iptables -A chain -j newchain

which is rather unpleasant, really.

12 years agobase.m4: Fix LSB init-script ordering.
Mark Wooding [Sun, 10 Jul 2011 20:52:07 +0000 (21:52 +0100)]
base.m4: Fix LSB init-script ordering.

We were coming up too early in the boot sequence, and sysctl wasn't
working.  Fix this.

12 years agobookends, classify, local: Fixes for IP multicasting.
Mark Wooding [Sun, 19 Jun 2011 18:01:34 +0000 (19:01 +0100)]
bookends, classify, local: Fixes for IP multicasting.

  * Allow reception of multicast packets.

  * Ensure that link-local multicasts aren't forwarded.  (Though
    currently no multicasts are forwarded, this isn't necessarily always
    going to be the case).

  * Turn /off/ iptables filtering of bridged packets.  I'm currently
    taking the view that the bridges are a hack introduced because I
    can't just plug all of the guests into a physical switch.  If I need
    to do better filtering, I'll either use ebtables or do something
    more complicated later.

12 years agolocal, vampire, ibanez: Centralize definition of NTP servers.
Mark Wooding [Sun, 19 Jun 2011 17:53:22 +0000 (18:53 +0100)]
local, vampire, ibanez: Centralize definition of NTP servers.

We now have multiple independent NTP servers, so it makes sense to
have the list of upstream servers in only one place.  Make it so.

12 years agoibanez, radius: Move NTP service to ibanez.
Mark Wooding [Tue, 7 Jun 2011 12:14:53 +0000 (13:14 +0100)]
ibanez, radius: Move NTP service to ibanez.

Turns out running NTP in guests is a bad plan.

12 years agobase.m4: Include an LSB header so that insserv can order it properly.
Mark Wooding [Mon, 6 Jun 2011 23:55:16 +0000 (00:55 +0100)]
base.m4: Include an LSB header so that insserv can order it properly.

12 years agoMakefile: Better rule hacking for installation.
Mark Wooding [Mon, 6 Jun 2011 23:54:42 +0000 (00:54 +0100)]
Makefile: Better rule hacking for installation.

If I use static pattern rules, I can set them as phony.  But I must
exclude the local host rule.

12 years agoprologue.m4: Use iptables-{save,restore} for the molly-guard.
Mark Wooding [Mon, 6 Jun 2011 23:29:46 +0000 (00:29 +0100)]
prologue.m4: Use iptables-{save,restore} for the molly-guard.

This seems generally more reliable than hoping that there's a saved copy
lying around which is likely to work, and also means that we have
an escape plan for an initial installation.

12 years agoHost changeover.
Mark Wooding [Tue, 31 May 2011 21:24:42 +0000 (22:24 +0100)]
Host changeover.

Remove metalzone, which is defunct; add all of the new machines.

12 years agoconfig.m4: Stupid typo.
Mark Wooding [Tue, 31 May 2011 21:23:54 +0000 (22:23 +0100)]
config.m4: Stupid typo.

12 years agobase.m4: Fix missing comma in `setconf', which has never ever worked.
Mark Wooding [Tue, 31 May 2011 21:23:38 +0000 (22:23 +0100)]
base.m4: Fix missing comma in `setconf', which has never ever worked.

12 years agobase.m4: On second thoughts, this one is more m4 than shell.
Mark Wooding [Tue, 31 May 2011 21:23:11 +0000 (22:23 +0100)]
base.m4: On second thoughts, this one is more m4 than shell.

12 years agolocal.m4: Disable forwarding multicasts until I work out how.
Mark Wooding [Tue, 31 May 2011 20:48:20 +0000 (21:48 +0100)]
local.m4: Disable forwarding multicasts until I work out how.

12 years agoclassify.m4: Dislike multicast addresses as a source address.
Mark Wooding [Tue, 31 May 2011 20:48:01 +0000 (21:48 +0100)]
classify.m4: Dislike multicast addresses as a source address.

I think they're not permitted.  They're certainly hard to deal with if
they are.

12 years agoprologue, Makefile, local.mk: Overhaul installation.
Mark Wooding [Tue, 31 May 2011 20:47:12 +0000 (21:47 +0100)]
prologue, Makefile, local.mk: Overhaul installation.

The prologue mollyguard is abstracted and generalized a bit so that we
can install stuff remotely without too much worry.  Installation is moved
into the main Makefile (with slightly spruced-up documentation), leaving
only a few very minor tweaks in the local configuration.

12 years agoMakefie: Give the main build the silent treatment.
Mark Wooding [Tue, 31 May 2011 20:44:41 +0000 (21:44 +0100)]
Makefie: Give the main build the silent treatment.

12 years agoMakefile: Add licence block at the top.
Mark Wooding [Tue, 31 May 2011 20:42:50 +0000 (21:42 +0100)]
Makefile: Add licence block at the top.

It's going to get more complicated later.  Also provide a bit more
guidance on what can be in local.mk.