Hello misc, Im doing my final approach to put a production system with carp+pfsync+relayd on production.
The point is that im facing some trouble setting more than one ip alias address with different vhid and different passwd. So, this is the scenario. Im trying to relayd more or less 15 sites so i have conceptual doubts. 1) is it nesessary to create one carp interface for each one of my internals VIP address 2) my understanding is that i have to work with pf on my carp interfaces. I have tried to put two different VIP's on my carp, but whitout lucky. Here is the homework. [root@server ~]# uname -a OpenBSD server.internaldomain.com 5.4 GENERIC#37 amd64 [root@server ~]# [root@server ~]# cat /etc/hostname.em0 inet 172.19.224.180 255.255.255.0 [root@server ~]# cat /etc/hostname.em1 inet 172.19.226.231 255.255.255.0 172.19.226.255 [root@server ~]# cat /etc/hostname.carp0 # inet alias 172.19.224.16 255.255.255.255 172.19.224.255 vhid 1 advskew 10 carpdev em0 pass Ahsooqu3 inet alias 172.19.224.131 255.255.255.0 172.19.224.255 vhid 2 advskew 10 carpdev em0 pass Meixo9oe # inet alias 172.19.224.41 255.255.255.255 172.19.224.255 vhid 3 advskew 10 carpdev em0 pass av5eG9Gi # inet alias 172.19.224.40 255.255.255.255 172.19.224.255 vhid 4 advskew 10 carpdev em0 pass Rei6thai # inet alias 172.19.224.181 255.255.255.0 172.19.224.255 vhid 5 advskew 10 carpdev em0 pass Toobohz3 # inet alias 172.19.224.182 255.255.255.255 172.19.224.255 vhid 6 adskew 10 carpdev em0 pass Quahng6U [root@server ~]# cat /etc/hostname.pfsync0 up syncdev em1 [root@server ~]# cat /etc/pf.conf ext_if="carp0" set fingerprints "/etc/pf.os" set optimization aggressive set limit states 90000 set limit src-nodes 65000 table <bad_ip> persist table <internat_net> persist file "/etc/internal_net" table <admitted_net> persist file "/etc/admitted.txt" # vip1_address = "172.19.224.181" # vip2_address = "172.19.224.16" vip3_address = "172.19.224.131" # vip4_address = "172.19.224.41" # vip5_address = "172.19.224.40" # Dejo de procesar cuando se trata de las redes internas pass in quick from <internat_net> to any # Dejo pasar las ips desde las redes permitidas # pass in quick from <admitted_net> to $vip1_address pass in quick from <admitted_net> to $vip3_address # Genero el block block in quick from <bad_ip> block in log quick on $ext_if proto tcp from any os "NMAP" to any label ExtNMAPScan # Proteccion contra nmap y herramientas similares # block in quick on $ext_if proto tcp flags FUP/WEUAPRSF block in quick on $ext_if proto tcp flags WEUAPRSF/WEUAPRSF block in quick on $ext_if proto tcp flags SRAFU/WEUAPRSF block in quick on $ext_if proto tcp flags /WEUAPRSF block in quick on $ext_if proto tcp flags SR/SR block in quick on $ext_if proto tcp flags SF/SF block in quick from urpf-failed # Aplico reglas de DoS y Syn Flood en site1 # pass in log on $mob_if proto tcp to $vip1_address port www keep state (sloppy, max 10000, max-src-nodes 5000, max-src-conn 100, max-src-conn-rate 95/2, adaptive .start 6000, adaptive.end 12000, tcp.first 15, tcp.opening 5, tcp.established 3600, tcp.closing 5, tcp.finwait 15, tcp.closed 15, tcp.tsdiff 5) # Aplico reglas de DoS y Syn Flood en site2 # pass in on $ext_if proto tcp to $vip2_address port www keep state (sloppy, max 10000, max-src-nodes 5000, max-src-conn 150, max-src-conn-rate 150/3) # Aplico reglas para site3 pass in on $ext_if proto tcp to $vip3_address port www keep state (sloppy, max 10000, max-src-nodes 5000, max-src-conn 150, max-src-conn-rate 100/3) # Aplico reglas de DoS y Syn Flood en site4 # pass in on $ext_if proto tcp to $vip4_address port www keep state (sloppy, max 10000, max-src-nodes 5000, max-src-conn 150, max-src-conn-rate 100/3) # Aplico reglas de DoS y Syn Flood en site5 # pass in on $ext_if proto tcp to $vip5_address port www keep state (sloppy, max 10000, max-src-nodes 5000, max-src-conn 150, max-src-conn-rate 100/3) # Anchor Para relayd anchor "relayd/*" [root@server ~]# cat /etc/relayd.conf # Archivo de configuracion de balanceo ## Opciones globales interval 5 timeout 500 prefork 15 log all ## Direcciones de las vip # address1="172.19.224.16" # address2="172.19.224.181" address3="172.19.224.131" # address4="172.19.224.41" # address5="172.19.224.40" ## Direcciones de los servidores wsapp1="172.19.224.200" wsapp2="172.19.224.201" webcache01="172.19.224.70" webcache02="172.19.224.71" webcache03="172.19.224.72" webcache04="172.19.224.73" ## Definicion de Tablas table <mobileweb> { $wsapp1 $wsapp2 } table <webcaches> { $webcache01 $webcache02 $webcache03 $webcache04 } table <webcaches1> { $webcache01 } ## Definicion de protocolos (Filtros) http protocol "httpSite1" { header change "Connection" to "close" header append "$REMOTE_ADDR" to "X-Forwarded-For" cookie hash "sessid" } http protocol "httpSite2" { header change "Connection" to "close" header append "$REMOTE_ADDR" to "X-Forwarded-For" cookie hash "sessid" } http protocol "httpSite3" { header change "Connection" to "close" header append "$REMOTE_ADDR" to "X-Forwarded-For" } http protocol "httpSite4" { header append "$REMOTE_ADDR" to "X-Forwarded-For" } http protocol "httpSite5" { header append "$REMOTE_ADDR" to "X-Forwarded-For" } ## Definicion de los relays #relay site1 { # listen on $address2 port 80 # protocol "httpSite1" # forward to <mobileweb> port 80 mode roundrobin check http "/relaycheck/index.php" code 200 #} relay site2 { listen on $address3 port 80 protocol "httpSite2" forward to <webcaches> port 80 mode roundrobin check http "/monitoreo/relayd.txt" code 200 } #relay site3 { # listen on $address1 port 80 # protocol "httpSite3" # forward to <webcaches> port 80 mode roundrobin check http "/monitoreo/relayd.txt" code 200 #} #relay site4 { # listen on $address4 port 80 # protocol "httpSite4" # forward to <webcaches> port 80 mode roundrobin check http "/monitoreo/relayd.txt" code 200 #} #relay site5 { # listen on $address5 port 80 # protocol "httpSite5" # forward to <webcaches> port 80 mode roundrobin check http "/monitoreo/relayd.txt" code 200 #} [root@server ~]# dmesg OpenBSD 5.4 (GENERIC) #37: Tue Jul 30 15:24:05 MDT 2013 dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC real mem = 2130694144 (2031MB) avail mem = 2066341888 (1970MB) mainbus0 at root bios0 at mainbus0: SMBIOS rev. 2.4 @ 0x7ffffea0 (11 entries) bios0: vendor Seabios version "0.5.1" date 01/01/2007 bios0: Red Hat KVM acpi0 at bios0: rev 0 acpi0: sleep states S5 acpi0: tables DSDT FACP SSDT APIC acpi0: wakeup devices acpitimer0 at acpi0: 3579545 Hz, 24 bits acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat acpiprt0 at acpi0: bus 0 (PCI0) acpicpu0 at acpi0 mpbios0 at bios0: Intel MP Specification 1.4 cpu0 at mainbus0: apid 0 (boot processor) cpu0: Opteron or Athlon 64, 2659.01 MHz cpu0: FPU,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,PGE,CMOV,PAT,MMX,FXSR,SSE,SSE2,SSE3,POPCNT cpu0: smt 0, core 0, package 0 cpu0: apic clock running at 1000MHz cpu at mainbus0: not configured mpbios0: bus 0 is type PCI mpbios0: bus 1 is type ISA ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 11, 24 pins ioapic0: misconfigured as apic 0, remapped to apid 2 pci0 at mainbus0 bus 0 pchb0 at pci0 dev 0 function 0 "Intel 82441FX" rev 0x02 pcib0 at pci0 dev 1 function 0 "Intel 82371SB ISA" rev 0x00 pciide0 at pci0 dev 1 function 1 "Intel 82371SB IDE" rev 0x00: DMA, channel 0 wired to compatibility, channel 1 wired to compatibility wd0 at pciide0 channel 0 drive 0: <QEMU HARDDISK> wd0: 16-sector PIO, LBA48, 5000MB, 10240000 sectors wd0(pciide0:0:0): using PIO mode 0, DMA mode 2 atapiscsi0 at pciide0 channel 1 drive 0 scsibus0 at atapiscsi0: 2 targets cd0 at scsibus0 targ 0 lun 0: <QEMU, QEMU DVD-ROM, 0.12> ATAPI 5/cdrom removable cd0(pciide0:1:0): using PIO mode 0 uhci0 at pci0 dev 1 function 2 "Intel 82371SB USB" rev 0x01: apic 2 int 11 piixpm0 at pci0 dev 1 function 3 "Intel 82371AB Power" rev 0x03: apic 2 int 9 iic0 at piixpm0 iic0: addr 0x4c 48=00 words 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000 06=0000 07=0000 iic0: addr 0x4e 48=00 words 00=0000 01=0000 02=0000 03=0000 04=0000 05=0000 06=0000 07=0000 vga1 at pci0 dev 2 function 0 "Cirrus Logic CL-GD5446" rev 0x00 wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation) wsdisplay0: screen 1-5 added (80x25, vt100 emulation) em0 at pci0 dev 3 function 0 "Intel 82540EM" rev 0x03: apic 2 int 11, address 52:54:00:4a:77:22 virtio0 at pci0 dev 4 function 0 "Qumranet Virtio Memory" rev 0x00: Virtio Memory Balloon Device viomb0 at virtio0 virtio0: apic 2 int 11 em1 at pci0 dev 5 function 0 "Intel 82540EM" rev 0x03: apic 2 int 10, address 52:54:00:1e:57:27 isa0 at pcib0 isadma0 at isa0 com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo com0: probed fifo depth: 0 bytes pckbc0 at isa0 port 0x60/5 pckbd0 at pckbc0 (kbd slot) pckbc0: using irq 1 for kbd slot wskbd0 at pckbd0: console keyboard, using wsdisplay0 pms0 at pckbc0 (aux slot) pckbc0: using irq 12 for aux slot wsmouse0 at pms0 mux 0 pcppi0 at isa0 port 0x61 spkr0 at pcppi0 fdc0 at isa0 port 0x3f0/6 irq 6 drq 2 fd0 at fdc0 drive 0: density unknown fd1 at fdc0 drive 1: density unknown usb0 at uhci0: USB revision 1.0 uhub0 at usb0 "Intel UHCI root hub" rev 1.00/1.00 addr 1 nvram: invalid checksum vscsi0 at root scsibus1 at vscsi0: 256 targets softraid0 at root scsibus2 at softraid0: 256 targets root on wd0a (bf96a0273abe52bf.a) swap on wd0b dump on wd0b WARNING: / was not properly unmounted clock: unknown CMOS layout carp: pfsync0 demoted group carp by 32 to 160 (pfsync init) carp: pfsync0 demoted group pfsync by 32 to 32 (pfsync init) carp: pfsync0 demoted group carp by 1 to 161 (pfsync bulk start) carp: pfsync0 demoted group pfsync by 1 to 33 (pfsync bulk start) carp: pfsync0 demoted group carp by -1 to 32 (pfsync bulk fail) carp: pfsync0 demoted group pfsync by -1 to 32 (pfsync bulk fail) carp: pfsync0 demoted group carp by -32 to 0 (pfsync init) carp: pfsync0 demoted group pfsync by -32 to 0 (pfsync init) pfsync: failed to receive bulk update carp0: state transition: BACKUP -> MASTER carp0: state transition: BACKUP -> MASTER nd6_na_input: duplicate IP6 address fe80:0005::0200:5eff:fe00:0102 carp0: state transition: BACKUP -> MASTER nd6_na_input: duplicate IP6 address fe80:0005::0200:5eff:fe00:0102 Two more things 1) Sorry for my english, is not my mothers tongue 2) Thank you for doing this great operantig system Saludos / Regards Leonardo Santagostini