Different providers for different nat clients
Daniel Hartmeier
daniel at benzedrine.cx
Tue Aug 13 12:46:48 UTC 2013
On Tue, Aug 13, 2013 at 04:11:37PM +0400, artem at artem.ru wrote:
> There is a router with 3 interfaces:
>
> IF1: PROVIDER A
> IF2: PROVIDER B
> IF3: LAN
>
> Clients served via NAT. There are about 15 clients.
>
> Now, what i need to do:
>
> By default all traffic from all clients goes to PROVIDER A via IF1.
> But, if total incoming traffic for any particular client becomes
> over X Mb then that client
> and only that client must be switch for PROVIDER B. The switch must
> be automatic and must
> not use any software on the client side.
> While i know how to count traffic i don't understand how to route
> external traffic to/from
> nat clients on particular external interface.
>
> Any idea how it is done?
This is called source-based routing, and at least pf and ipfw support
it. Using pf it could look like
table <overquota>
nat on IF1 from !IF1 -> IF1
nat on IF2 from !IF2 -> IF2
pass in on IF3 route-to (IF2 GW2) from <overquota>
with the default route going through IF1 to GW1.
To add a client to the table, use
pfctl -t overquota -Ta 192.168.2.3
Subsequent new connections will go out through the second provider.
Existing prior connections will continue to to through the first
provider, unless you explicitly remove the sessions, as in
pfctl -k 192.168.2.3
Daniel
More information about the freebsd-net
mailing list