On Wed, Nov 12, 2008 at 12:53 AM, Vivek Ayer <[EMAIL PROTECTED]> wrote:
> Here's my current configuration for my entire network. Two routers
> working as one using IP balancing and two web servers on the inside
> working as one using IP balancing. I'm still getting issues as to
> reaching the web servers from the outside. I just feel like it's
> gotten too complicated CARPing the systems. The server could be
> reached from the outside previously when I only had one router and
> server. The router uses carpnodes 1,2,3 and 4 while the web server
> used 5 and 6 if that makes any difference at all.

Can you reach the system at the non-CARP address? It seems to me that
what might be happening is that you are sending SSH traffic to the
CARP interface but since you are NAT-ting, the reply packets have the
source address of the Ethernet interface (ext_if) and not the CARP
interface. This will confuse your SSH client.

>
> Here's my router 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 }"
> ssh_allowed = "192.168.1.100"
> carp_mcast = "224.0.0.18"
>
> # extra tweaks
> set skip on lo
> set block-policy return
> set loginterface $ext_if
> scrub in all
>
> # nat/rdr
> nat on $ext_if from $localnet to any -> ($ext_if)
> nat on $int_if proto tcp from $localnet to $webserver port $webports -> 
> $int_if
> no nat on $int_if proto tcp from $int_if to $localnet
> 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 $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 $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
>
> # pass rules
> # block in # Default Deny
> pass out keep state
> 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
>
> # 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
> pass in on $carpdevs inet proto tcp from any to ($ext_if) \
>   port $tcp_services flags S/SA keep state # Allow SSH Access from Outside
> pass in on $carpdevs inet proto tcp from any to $webserver port $webports \
>   flags S/SA synproxy state
> pass in on $carpdevs inet proto udp from any to $nameserver port $domainport
> pass in on $carpdevs inet proto tcp from any to $nameserver port $domainport \
>   flags S/SA synproxy state
>
> pass in on $int_if from $ssh_allowed to self keep state (no-sync)
> antispoof quick for { lo $int_if }
>
>
> And here'e my web server 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="gem0" # External Interface (192.168.1.0/24)
> tcp_services = "{ ssh, www, https }"
> udp_services = "{ 123 }"
> icmp_types = "echoreq"
> carpdev = "{ carp0 }"
> syncdev = "{ re0 }"
> carp_mcast = "224.0.0.18"
>
> # extra tweaks
> set skip on lo
> set skip on gem0
> set block-policy return
> set loginterface $ext_if
> scrub in all
>
> # pass rules
> # block in
> # pass out proto tcp to any port $tcp_services
> # pass proto udp to any port $udp_services
> # pass in inet proto icmp all icmp-type $icmp_types keep state
>
> # CARP/pfsync pass rules
> pass on $carpdev 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
>
> antispoof quick for { lo }
>
> Help appreciated!
> Vivek
>
> On Mon, Oct 20, 2008 at 1:51 PM, Stuart Henderson <[EMAIL PROTECTED]> wrote:
>> On 2008/10/20 14:19, Vivek Ayer wrote:
>>> I'll give that a shot. But in the meanwhile, it appears ntpd doesn't
>>> listen on the carp interface.
>>
>> unlikely, unless you restricted in the "listen on..." line.
>>
>> $ grep ^listen /etc/ntpd.conf
>> listen on *
>> $ ifconfig carp83|grep -w inet
>>        inet 195.95.187.83 netmask 0xffffffe0 broadcast 195.95.187.95
>> $ fstat|grep 195.95.187.83:123
>> _ntp     ntpd       19169   16* internet dgram udp 195.95.187.83:123
>>
>>> Could this also be due my current pf.conf?
>>
>> most likely - the suggestion I made will show you for sure
>> (I think running tcpdump on pflog is the single most useful tool
>> to help debug problems with a PF ruleset).
>
>



-- 
http://www.felipe-alfaro.org/blog/disclaimer/

Reply via email to