Confirmed. If I have both routers on, the http redirection on the CARP
interface doesn't work. But when I only have one on, then the
redirection works just fine. Is CARP getting confused with the
packets?

On Thu, Nov 13, 2008 at 5:51 PM, Vivek Ayer <[EMAIL PROTECTED]> wrote:
> Yay! I got ssh and http to work on the CARP interface. Thanks.
>
> However, the httpd redirect is not working just yet on the CARP
> interface for one of the computers. Does IP balancing mess up
> redirect?
>
> When I only have one router up doing the redirect, the CARP interface
> works, but when I have both routers on, the CARP interface defaults to
> the one that doesn't apparently do redirection. I'm going to
> troubleshoot and turn off the one that works and turn on the computer
> that doesn't "redirect."
>
> Any other suggestions for troubleshooting this weird setup I have? Has
> anyone ever done this before having CARP'd web servers behind CARP'd
> routers?
>
> Here's my current pf.conf:
>
> #       $OpenBSD: pf.conf,v 1.35 2008/02/29 17:04:55 reyk Exp $
> #
> # See pf.conf(5) and /usr/share/pf for syntax and examples.
> # Remember to set net.inet.ip.forwarding=1 and/or net.inet6.ip6.forwarding=1
> # in /etc/sysctl.conf if packets are to be forwarded between interfaces.
>
> # macros
> ext_if = "re0" # External Interface (169.229.158.0/24)
> int_if = "xl0" # Internal Interface (192.168.1.0/24)
> localnet = $int_if:network
> webserver = "192.168.1.50" # Redundant Sun Servers
> nameserver = "192.168.1.101" # Dell L400 Celeron
> webports = "{ http , https }"
> domainport = "{ domain }"
> tcp_services = "{ ssh }"
> icmp_types = "echoreq"
> carpdevs = "{ carp0 , carp1 }"
> syncdev = "{ re1 }"
> carp_mcast = "224.0.0.18"
>
> # extra tweaks
> set skip on lo
> set block-policy return
> set loginterface $ext_if
> scrub in all
>
> # nat
> nat on $ext_if from $localnet to any -> ($ext_if)
> no nat on $int_if proto tcp from $int_if to $localnet
> nat on $int_if proto tcp from $localnet to $webserver port $webports -> 
> $int_if
>
> # rdr for http
> rdr on $ext_if proto tcp from any to any port $webports -> $webserver
> rdr on $int_if proto tcp from $localnet to $ext_if port $webports -> 
> $webserver
> rdr on $int_if proto tcp from $localnet to $int_if port $webports -> 
> $webserver
>
> # rdr for domain (tcp)
> rdr on $ext_if proto tcp from any to any port $domainport -> $nameserver
> rdr on $int_if proto tcp from $localnet to $ext_if port $domainport ->
> $nameserver
> rdr on $int_if proto tcp from $localnet to $int_if port $domainport ->
> $nameserver
>
> # rdr for domain (udp)
> rdr on $ext_if proto udp from any to any port $domainport -> $nameserver
> rdr on $int_if proto udp from $localnet to $ext_if port $domainport ->
> $nameserver
> rdr on $int_if proto udp from $localnet to $int_if port $domainport ->
> $nameserver
>
> # pass rules
> block in # Default Deny
> pass out keep state
> antispoof quick for { lo }
> pass in inet proto icmp all icmp-type $icmp_types keep state # Let Ping In
> pass in quick on $int_if
> pass in on $ext_if inet proto tcp from any to ($ext_if) \
>   port $tcp_services flags S/SA keep state # Allow SSH Access from Outside
> pass in on $ext_if inet proto tcp from any to $webserver port $webports \
>   flags S/SA synproxy state
> pass in on $ext_if inet proto udp from any to $nameserver port $domainport
> pass in on $ext_if inet proto tcp from any to $nameserver port $domainport \
>   flags S/SA synproxy state
>
> # Basic CARP/pfsync pass rules
> pass on $carpdevs proto carp keep state
> pass quick on $ext_if proto carp \
>   from $ext_if:network to $carp_mcast keep state
> pass on $syncdev proto pfsync
>
> # Internet-Facing CARP rules
> pass in on $ext_if inet proto tcp from any to (carp0) \
>   port $tcp_services flags S/SA keep state # Allow SSH Access from Outside
> pass in on $ext_if inet proto tcp from any to (carp0) \
>   port $webports flags S/SA synproxy state
> pass in on $ext_if inet proto udp from any to (carp0) \
>   port $domainport
> pass in on $ext_if inet proto tcp from any to (carp0) \
>   port $domainport flags S/SA synproxy state
>
> # LAN-Facing CARP rules
> pass in on $int_if inet proto tcp from $localnet to (carp1) \
>   port $tcp_services flags S/SA keep state # Allow SSH Access from Inside
> pass in on $int_if inet proto tcp from $localnet to (carp1) \
>   port $webports flags S/SA synproxy state
> pass in on $int_if inet proto udp from $localnet to (carp1) \
>   port $domainport
> pass in on $int_if inet proto tcp from $localnet to (carp1) \
>   port $domainport flags S/SA synproxy state
>
> Thanks
>
> On Thu, Nov 13, 2008 at 12:27 PM, Vivek Ayer <[EMAIL PROTECTED]> wrote:
>> Oh ok. That kind of makes sense.
>>
>> Thanks
>>
>> On Thu, Nov 13, 2008 at 2:11 AM, Marco Pfatschbacher <[EMAIL PROTECTED]> 
>> wrote:
>>> On Wed, Nov 12, 2008 at 11:40:36AM -0800, Vivek Ayer wrote:
>>>> i don't think I understand. Clarify. you mean carpdev is like your
>>>> physical interface..eth0, re0, etc.?
>>>
>>> say you have a carp configured like:
>>>
>>> carp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>>>        lladdr 00:00:5e:00:01:04
>>>        carp: MASTER carpdev em0 vhid 4 advbase 1 advskew 0
>>>        groups: carp
>>>        inet 1.2.3.4 netmask 0xff000000 broadcast 1.255.255.255
>>>
>>> As you can see, carp0 is using em0 as its carpdev.
>>> A pf rule to pass ssh to the carp address would be:
>>>
>>>  pass in on em0 inet proto tcp to (carp0) port 22
>>>
>>> and NOT:
>>>
>>>  pass in on carp0 inet proto tcp to (carp0) port 22
>>>
>>> HTH,
>>>
>>>   Marco

Reply via email to