Tom Judge wrote:
Alexandre Biancalana wrote:
Tom Judge wrote:
Alexandre Biancalana wrote:
Tom Judge wrote:
Alexandre Biancalana wrote:
Tom Judge wrote:
Alexandre Biancalana wrote:
Tom Judge wrote:
Alexandre Biancalana wrote:
Hi List,


I´m doing a firewall setup using 6-STABLE + PF with two internet links but I can't do the route-to rule function as I need.


         (default gw)    ______
 Link A <-----------> |int A  |
                                 |           |
 Link B <-----------> |int B  |
                                 |______|
                             FreeBSD FW

A simple thing that I need to do is test the two Internet links to know if they are up or not. To do this I could ping or connect tcp ports on some external ips thought each link, using nc and hping I tried do this generate connections/packets from each network interface connected to each link but the packets always go out by the interface indicated by machines default route.

I tried to add this rules in pf to force packets out by the right interface based in your source address, but this does not work, and the packets generated with ip of int B are going out by int A.

pass out log on $int_a route-to ( $int_b $int_b_gw ) from $int_b to any pass out log on $int_b route-to ( $int_a $int_a_gw ) from $int_a to any


<SNIP/>

I understand that, I just don't see much difference in your rules and my rules example... the both examples should work... but here none off then work.....

Adding a static destination route to an external host via gw_b and ping with int_a address, the packet exit by int_b with int_a source address... the same behavior...

I tried your way:

pass out log on $int_a route-to ( $int_b $int_b_gw ) from $int_b to ! int_b:network pass out log on $int_b route-to ( $int_a $int_a_gw ) from $int_a to ! int_a:network


# pfctl -vv -sr
@28 pass out log on int_a route-to (int_b int_b_gw) inet from int_b_ip to ! int_b:network [ Evaluations: 88 Packets: 0 Bytes: 0 States: 0 ] @29 pass out log on int_b route-to (int_a int_a_gw) inet from int_a to ! int_a:network [ Evaluations: 80 Packets: 0 Bytes: 0 States: 0 ]

Any more hints ?!

Han Hwei Woo wrote:
> Just to be certain, are you aware that for PF, the last matching rule is
> applied? Also, you can use the command:
> # pfctl -vv -sr
> to examine how your rules are being matched.

Try the following which forces the first rule the packet matches (marked with quick) to be the final rule used to process the packet:

pass out quick log on $int_a route-to ( $int_b $int_b_gw ) from $int_b to ! int_b:network pass out quick log on $int_b route-to ( $int_a $int_a_gw ) from $int_a to ! int_a:network

I added an keep state at end of each rule and now all works ! I will do more tests and report any problem...

Thanks in advance !!!

Alexandre
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to