Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 Oct 2019 14:15:39 -0700
From:      Julian Elischer <julian@freebsd.org>
To:        Matthew Grooms <mgrooms@shrew.net>, freebsd-net@freebsd.org
Subject:   Re: CARP and NAT question
Message-ID:  <643e0dc3-b28a-9d43-5bbc-797c22670224@freebsd.org>
In-Reply-To: <a4fa906a-4a9f-3267-3cb0-70a1692b73f2@shrew.net>
References:  <20191008134851.GP2691@home.lan> <a0a3a5c2-1300-b90b-3114-ae80adcf7f4d@shrew.net> <20191008155813.GS2691@home.lan> <b182358f-8ec0-4a71-b201-1736282d847d@freebsd.org> <20191009093454.GU2691@home.lan> <2591c7ce-887e-0e38-bb69-01c1e0ba5bd4@freebsd.org> <a4fa906a-4a9f-3267-3cb0-70a1692b73f2@shrew.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On 10/9/19 12:57 PM, Matthew Grooms wrote:
> On 10/9/2019 2:50 PM, Julian Elischer wrote:
>> On 10/9/19 2:34 AM, Julien Cigar wrote:
>>> On Tue, Oct 08, 2019 at 01:05:37PM -0700, Julian Elischer wrote:
>>>> On 10/8/19 8:58 AM, Julien Cigar wrote:
>>>>> On Tue, Oct 08, 2019 at 10:20:34AM -0500, Matthew Grooms wrote:
>>>>>> Hi Julien,
>>>>> Hi Matthew,
>>>>>
>>>>>> It's not clear why you are trying to assign multiple carp IP 
>>>>>> address to
>>>>>> two different interfaces from within the same IP subnet. Are 
>>>>>> you trying
>>>>>> to fail over a 2nd carp address or are you trying to improve
>>>>>> throughput/redundancy? If you just want to fail over a 2nd carp 
>>>>>> address,
>>>>>> assign a 2nd alias to your first interface. If your trying to 
>>>>>> improve
>>>>>> throughput/redundancy, assign both interfaces to a lagg and 
>>>>>> build your
>>>>>> carp interfaces on top of that instead.
>>>>>>
>>>>> Currently outbound traffic from $net1 and $net2 (two private 
>>>>> networks)
>>>>> pass through the same network interface (igb0) (as you can see 
>>>>> in (1)
>>>>> in my previous post) on the router. I'd like to prevent that
>>>>> $net2 saturates the interface and slow down traffic from $net1 
>>>>> (which is
>>>>> more important). I could lagg and build CARP on top of that but it
>>>>> wouldn't prevent $net2 to saturate the interface (unless I'm 
>>>>> plugin ALTQ
>>>>> of course, which I'd like to avoid).
>>>>>
>>>>>> -Matthew
>>>>>>
>>>>>> On 10/8/2019 8:48 AM, Julien Cigar wrote:
>>>>>>> Hello,
>>>>>>>
>>>>>>> I'd like to NAT outbound traffic from two different private 
>>>>>>> networks
>>>>>>> through two different interfaces, with CARP on top. I have 4 
>>>>>>> public IPS
>>>>>>> available (193.x.x.89, 193.x.x.90, 193.x.x.91, 193.x.x.92).
>>>>>>>
>>>>>>> I have two redundant router/firewall running FreeBSD 12 with 
>>>>>>> CARP and
>>>>>>> PF with the following: (1) which works well, but all traffic
>>>>>>> goes through the same interface.
>>>>>>>
>>>>>>> So I'd like to switch to something like (2), which will not 
>>>>>>> work (lines
>>>>>>> 5 and 13 are not valid) and I'm wondering if I could use 
>>>>>>> something like
>>>>>>> (3) ..?
>>>>>>>
>>>>>>> Thank you!
>>>>>>> Julien
>>>>>>>
>>>>>>> (1) 
>>>>>>> https://gist.github.com/silenius/4f6173a9b6690292c2174ab3bb89d292
>>>>>>> (2) 
>>>>>>> https://gist.github.com/silenius/da9be7e74e9861fa55f927d194e3e410
>>>>>>> (3) 
>>>>>>> https://gist.github.com/silenius/b237565b0d181248ff80ea296e5537db
>>>>>>>
>>>>>> _______________________________________________
>>>>>> freebsd-net@freebsd.org mailing list
>>>>>> https://lists.freebsd.org/mailman/listinfo/freebsd-net
>>>>>> To unsubscribe, send any mail to 
>>>>>> "freebsd-net-unsubscribe@freebsd.org"
>>>> can you draw it?
>>> yes, see https://ibb.co/mv5RPM9
>>
>> so, you have several ways of doing this:
>>
>> one is to assign a different routing table to each class of traffic.
>>
>> Each table hasĀ  a different default route, sending data out to a 
>> different external interface.
>>
>> Each interface out is NAT'd so that the return packets will come 
>> back the same way.
>>
> How do you classify the traffic based on the source address when 
> using multiple route tables?

use ipfw to set the fib number based on some bits in the address of 
the internal machine.

e.g. ipfw setfib 1 tcp from (some internal pattern) to (the outside) 
in recv (internal interface) keep_state

There are several ways to do this.. this is just one... The above will 
assign a dynamic rule for all packets between theĀ  two machines and 
the table in question will be always used. for that tupple.


>
>> But you only have a single pipe to the internet, So one wonders how 
>> that helps with redundancy?
>>
> I asked a similar question. He believe he mentioned that he was 
> trying to get around the 1Gbit limit of each interface. WRT 
> redundancy, he probably means the use of a backup firewall, carp and 
> probably pfsync.
>
> -Matthew
>
> _______________________________________________
> freebsd-net@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org"
>
>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?643e0dc3-b28a-9d43-5bbc-797c22670224>