[TriLUG] BSD/Linux firewall with multiple ISP and failover?

Aaron S. Joyner aaron at joyner.ws
Mon Jan 30 10:24:41 EST 2006


Jon Carnes wrote:

>On Sat, 2006-01-28 at 17:04, Aaron S. Joyner wrote:
>
>  
>
>>You want something that allows you to have multiple paths to the 
>>internet, and should one of those paths die, you want to switch to using 
>>the alternate path.  This is actually a very easy thing to do, and only 
>>requires a second ethernet interface in the firewall in question (note 
>>the word interface, not network card, as technically this could be done 
>>with a managed switch, vlans, and some craziness if you want to keep 
>>your existing hardware platform)
>>
>>... detail snipped...
>>
>>Come back and post again if you can't get it working correctly.  :)
>>
>>Good luck Greg,
>>Aaron S. Joyner
>>    
>>
>
>Hmmm, interesting but a bit complex. I prefer to simply have the
>secondary take over the IP address of the primary - when the primary
>goes down.
>
>... detail snipped...
>
>===
>I like this because the Fail-over server does all the checking. It uses a secondary network (192.168.10.0) that is shared with the Primary Firewall. All testing is done across the secondary network. This lets you manipulate the primary network (192.168.1.0) and move the gateway for that network anytime you want, while still letting you test to see if the Primary Firewall comes back up.
>
>It's elegant and it works great.
>Good Luck - Jon Carnes
>  
>
I don't disagree that your solution is elegant and effective, Jon.  It 
just solves a different problem.  :)  You're solving the problem of 
firewall redundancy, and getting multiple internet paths as a sort of 
bonus.  In the scenario you describe, consider what happens if the 
internet connection of the first server fails, but the internal 
interface of the server is quite happy and responding to pings.  This 
isn't at all uncommon, for example when the ISP has issues, you have a 
DSL modem die, there's a line cut outside your buliding and DSL or Cable 
sync goes away, etc, etc.  The failover test will not detect a failover, 
and internet service for the internal network goes away, even though 
there is a usable internet connection connected to the 'failover' 
server.  You could expand on your failover script by setting up a few 
static routes on the failover server to route through the 192.168.10.1 
IP address and ensure you can actually ping those remote IPs through the 
first server, which would give you a better understanding of if the 
actual "internet" connection is working.  You'd also want to ensure that 
the 'failover' ISP is working before you try and switch, or you'll end 
up in a scenario where things constantly switch back and forth to no 
effect, because neither ISP is functional.  At this point, you will have 
implemented the solution I suggested, minus a tiny bit of complexity 
with iproute rules, because you used two seperate routing tables on two 
seperate pieces of hardware, instead of two routing tables on one piece 
of server.  It also naturally requires throwing more hardware at the 
problem, when in Greg's original case it sounds like he wants to keep 
hardware to a minimum (fanless box, etc).  I don't disagree that he 
should consider the box as likely a point of failure as the internet 
connection, though, so going in the over-all direction you describe is 
still not a bad idea.

Aaron S. Joyner




More information about the TriLUG mailing list