Rod Whitworth wrote:
...
> Let's look at this a little more analytically:
> My firewall is a Soekris 4801 with sis0, sis1 and sis2.
> sis0 is the 0utside (ADSL)
> sis1 is the 1nside (LAN)
> sis2 is the 2erver LAN

heh.  I gotta remember that naming/numbering convention, I like it!

> If 0 fails the other two "move up" the table. Risk = zero.
> If 1 fails the users holler "No service!" and the servers won't be
> compromised because they will now be connected to sis2 promoted to be
> sis1 and their default route won't be available and incoming traffic
> can't get to them either.
> 
> Now, what was the problem again? With all the interfaces below the
> failure moving up the table there will be address mismatches = no
> traffic.
> 
> I see no reason to panic. Maybe I'm too tired after being up really
> late replacing a faulty modem and I forgot to turn off NAT in the new
> one so my sleepy eyes missed the fact that I needed to test more than
> browsing from the LAN to make sure my servers were reachable. 8-((
> 
> 8>< snip rest of story.

Yeah, maybe I'm missing something too, but I'm not really thinking
of a situation where this would really be a "risk" of anything other
than downtime.  And if chunks of your firewall aren't working,
that's downtime.

Usually, if you plug the wrong things into the wrong port, it just
doesn't work.  Different ports are usually on different subnets.

If you really have a situation where this is a real risk and not just
a silly panic over nothing, a solution is simple:

* your /etc/pf.conf file just contains a block in all, and a "pass
  out all from just the firewall to the outside networks.

* in rc.local, you stick a script which tests things however you
  want them to be.  Maybe you count the NICs, maybe you compare
  their MAC addresses to what you expect them to be, etc.
  Whatever makes you happy or is appropriate for your configuration.

* IF you are happy, you do a "pfctl -f /etc/prodpf.conf" or
  similar, and put your production rules in there.  Maybe even only
  activate forwarding if the test passes.  IF the system is missing
  pieces, maybe you load up an "ssh in only" ruleset so someone can
  get to the box to look at what went wrong, but the firewall stays
  otherwise inert.  Document the heck out of it, including in
  pf.conf saying, "real production rules are over THERE..."

Note that this requires modifying no system files, so your upgrade
process remains simple.

I think that would be a lot saner for what seems to be a very special
case than any of the "let's follow Linux or Solaris's lead" crap.
I've used those, I'm completely unimpressed.  The primary reason they
suck is complexity; the people who claim they understand Linux and
Solaris don't seem to be able to explain why they do what they do or
fix it when they do it wrong, forget mere mortals.  They just work
around oddities.  OpenBSD's rules for NIC naming are quite simple.
There are cases where they will annoy the heck out of you, but it is
easy to see WHY they are doing funny things, and easy to fix when
they do.


When my firewall blows out when I'm on vacation, I want to be able to
tell someone over the phone, "unplug the production machine, keeping
careful track of what cable comes out of which port, plug them into
the same port on the spare machine.  Pull the disk out of the
old machine, plug it into the spare machine.  Turn it on, see you when
I get back".  Start strapping ports to physical addresses, you create
a management nightmare, and something that probably only you will
ever be able to maintain.  Not good.

Nick.

Reply via email to