On Tue, Aug 13, 2013 at 04:11:37PM +0400, ar...@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 _______________________________________________ freebsd-net@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"