ข้ามไปยังเนื้อหา

การกำหนดค่า BIG-IP

  • (ตัวอย่าง Route Domain 0)

คำสั่งทั้งหมดด้านล่างรันใน tmsh บน BIG-IP ปรับชื่อออบเจ็กต์ และ IP ตามความเหมาะสม

สำหรับการกำหนดค่า GRE tunnel ทั่วไปบน BIG-IP โปรดดู Configuring a GRE Tunnel Using BIG-IP สำหรับการตั้งค่าการกำหนดค่า routed เริ่มต้นกับ Cloud โปรดดู K000147949

tmsh
[root@bigip:Active]# tmsh
root@(bigip)(cfg-sync Standalone)(Active)(/Common)(tmos)#

GRE endpoints

นี่คือ IP บน BIG-IP แต่ละยูนิตที่ใช้เป็น GRE tunnel endpoints โดยทั่วไปอยู่บน external VLAN แต่ละยูนิตมี non-floating outer self IP ของตัวเอง (traffic-group-local-only):

BIG-IP-A:

tmsh
create net self xc-ddos-v4-self-a \
vlan external \
traffic-group traffic-group-local-only \
allow-service add { icmp:any gre:any } \
address xBIGIP_A_OUTER_V4x/24
create net self xc-ddos-v6-self-a \
vlan external \
traffic-group traffic-group-local-only \
allow-service add { icmp:any gre:any } \
address xBIGIP_A_OUTER_V6x/64

BIG-IP-B:

tmsh
create net self xc-ddos-v4-self-b \
vlan external \
traffic-group traffic-group-local-only \
allow-service add { icmp:any gre:any } \
address xBIGIP_B_OUTER_V4x/24
create net self xc-ddos-v6-self-b \
vlan external \
traffic-group traffic-group-local-only \
allow-service add { icmp:any gre:any } \
address xBIGIP_B_OUTER_V6x/64

แต่ละ tunnel ชี้จาก BIG-IP ยูนิตไปยัง Cloud scrubbing center endpoint สร้าง สอง tunnels ต่อยูนิต (หนึ่ง tunnel ไปยัง แต่ละ scrubbing center ตามตำแหน่งทางภูมิศาสตร์) รวมเป็น สี่ logical tunnels ทั้งหมดใน HA pair:

Tunnel C1-T1 — BIG-IP-A ไปยัง xCENTER_1x:

tmsh
create net tunnels tunnel xc-ddos-c1t1-v4 \
local-address xBIGIP_A_OUTER_V4x \
profile gre \
remote-address xXC_C1_OUTER_V4x
create net tunnels tunnel xc-ddos-c1t1-v6 \
local-address xBIGIP_A_OUTER_V6x \
profile gre \
remote-address xXC_C1_OUTER_V6x

Tunnel C2-T1 — BIG-IP-A ไปยัง xCENTER_2x:

tmsh
create net tunnels tunnel xc-ddos-c2t1-v4 \
local-address xBIGIP_A_OUTER_V4x \
profile gre \
remote-address xXC_C2_OUTER_V4x
create net tunnels tunnel xc-ddos-c2t1-v6 \
local-address xBIGIP_A_OUTER_V6x \
profile gre \
remote-address xXC_C2_OUTER_V6x

Tunnel C1-T2 — BIG-IP-B ไปยัง xCENTER_1x:

tmsh
create net tunnels tunnel xc-ddos-c1t2-v4 \
local-address xBIGIP_B_OUTER_V4x \
profile gre \
remote-address xXC_C1_OUTER_V4x
create net tunnels tunnel xc-ddos-c1t2-v6 \
local-address xBIGIP_B_OUTER_V6x \
profile gre \
remote-address xXC_C1_OUTER_V6x

Tunnel C2-T2 — BIG-IP-B ไปยัง xCENTER_2x:

tmsh
create net tunnels tunnel xc-ddos-c2t2-v4 \
local-address xBIGIP_B_OUTER_V4x \
profile gre \
remote-address xXC_C2_OUTER_V4x
create net tunnels tunnel xc-ddos-c2t2-v6 \
local-address xBIGIP_B_OUTER_V6x \
profile gre \
remote-address xXC_C2_OUTER_V6x

ชื่อ tunnel (xc-ddos-c1t1-v4 ฯลฯ) เป็นเพียงตัวอย่าง สามารถใช้ ข้อกำหนดการตั้งชื่อของคุณเองได้

การ encapsulation แบบ GRE เพิ่ม overhead (24 bytes สำหรับ IPv4 outer, 44 bytes สำหรับ IPv6 outer) หากไม่กำหนด MTU อย่างชัดเจน แพ็กเก็ตที่มีขนาดใกล้ 1500 bytes จะถูก fragment หรือถูกทิ้ง ตั้งค่า MTU ของ tunnel เพื่อรองรับ overhead ของการ encapsulation:

tmsh
modify net tunnels tunnel xc-ddos-c1t1-v4 mtu 1476
modify net tunnels tunnel xc-ddos-c1t1-v6 mtu 1456
modify net tunnels tunnel xc-ddos-c1t2-v4 mtu 1476
modify net tunnels tunnel xc-ddos-c1t2-v6 mtu 1456
modify net tunnels tunnel xc-ddos-c2t1-v4 mtu 1476
modify net tunnels tunnel xc-ddos-c2t1-v6 mtu 1456
modify net tunnels tunnel xc-ddos-c2t2-v4 mtu 1476
modify net tunnels tunnel xc-ddos-c2t2-v6 mtu 1456

GRE (IP protocol 47) ไม่มีการยืนยันตัวตน ผู้ที่รู้คู่ outer IP สามารถแทรกทราฟฟิกเข้าไปใน tunnel ได้ ใช้ ACL บน upstream router หรือ firewall เพื่อจำกัด inbound GRE ให้รับเฉพาะจาก source IP ของ Cloud scrubbing center ที่คาดหวังเท่านั้น:

Cisco IOS
! Example upstream router ACL (Cisco IOS style)
ip access-list extended ALLOW-XC-GRE
permit gre host xXC_C1_OUTER_V4x host xBIGIP_A_OUTER_V4x
permit gre host xXC_C2_OUTER_V4x host xBIGIP_A_OUTER_V4x
permit gre host xXC_C1_OUTER_V4x host xBIGIP_B_OUTER_V4x
permit gre host xXC_C2_OUTER_V4x host xBIGIP_B_OUTER_V4x
deny gre any host xBIGIP_A_OUTER_V4x log
deny gre any host xBIGIP_B_OUTER_V4x log

กำหนด IP address ภายใน (ภายใน GRE tunnel) ที่จะสร้าง BGP session กับ Cloud ใน allow-service ต้อง รวม tcp:179 (BGP) เพื่อให้ peering session สามารถสร้างการเชื่อมต่อได้ การเพิ่ม icmp:any บน inner self IP ช่วยให้ PMTUD และการทดสอบการเข้าถึง ผ่าน tunnel ทำงานได้:

Tunnel C1-T1 — BIG-IP-A ไปยัง xCENTER_1x:

tmsh
create net self xc-ddos-c1t1-inner-v4 \
vlan xc-ddos-c1t1-v4 \
traffic-group traffic-group-local-only \
allow-service add { tcp:179 icmp:any } \
address xBIGIP_C1_T1_INNER_V4x/30
create net self xc-ddos-c1t1-inner-v6 \
vlan xc-ddos-c1t1-v6 \
traffic-group traffic-group-local-only \
allow-service add { tcp:179 icmp:any } \
address xBIGIP_C1_T1_INNER_V6x/64

Tunnel C2-T1 — BIG-IP-A ไปยัง xCENTER_2x:

tmsh
create net self xc-ddos-c2t1-inner-v4 \
vlan xc-ddos-c2t1-v4 \
traffic-group traffic-group-local-only \
allow-service add { tcp:179 icmp:any } \
address xBIGIP_C2_T1_INNER_V4x/30
create net self xc-ddos-c2t1-inner-v6 \
vlan xc-ddos-c2t1-v6 \
traffic-group traffic-group-local-only \
allow-service add { tcp:179 icmp:any } \
address xBIGIP_C2_T1_INNER_V6x/64

Tunnel C1-T2 — BIG-IP-B ไปยัง xCENTER_1x:

tmsh
create net self xc-ddos-c1t2-inner-v4 \
vlan xc-ddos-c1t2-v4 \
traffic-group traffic-group-local-only \
allow-service add { tcp:179 icmp:any } \
address xBIGIP_C1_T2_INNER_V4x/30
create net self xc-ddos-c1t2-inner-v6 \
vlan xc-ddos-c1t2-v6 \
traffic-group traffic-group-local-only \
allow-service add { tcp:179 icmp:any } \
address xBIGIP_C1_T2_INNER_V6x/64

Tunnel C2-T2 — BIG-IP-B ไปยัง xCENTER_2x:

tmsh
create net self xc-ddos-c2t2-inner-v4 \
vlan xc-ddos-c2t2-v4 \
traffic-group traffic-group-local-only \
allow-service add { tcp:179 icmp:any } \
address xBIGIP_C2_T2_INNER_V4x/30
create net self xc-ddos-c2t2-inner-v6 \
vlan xc-ddos-c2t2-v6 \
traffic-group traffic-group-local-only \
allow-service add { tcp:179 icmp:any } \
address xBIGIP_C2_T2_INNER_V6x/64

ใช้ imish เพื่อกำหนดค่า BGP สำหรับ Route Domain 0

  1. เข้าสู่ imish สำหรับ RD 0:

    bash
    tmsh run /util imish -r 0
  2. เข้าสู่ privileged และ config mode:

    imish
    localhost.localdomain[0]> enable
    localhost.localdomain[0]# configure terminal
  3. ตัวอย่างการกำหนดค่า BGP:

BIG-IP-A (router-id xBIGIP_A_OUTER_V4x, neighbors C1-T1 + C2-T1):

imish
router bgp xCUSTOMER_ASNx
no synchronization
bgp log-neighbor-changes
no auto-summary
bgp router-id xBIGIP_A_OUTER_V4x
bgp graceful-restart restart-time 120
redistribute kernel route-map route-to-cloud-ipv4
neighbor cloud peer-group
neighbor cloud remote-as xF5_XC_ASNx
neighbor cloud description cloud-peer-group
neighbor cloud password xBGP_PASSWORDx
neighbor cloud timers 10 30
neighbor cloud soft-reconfiguration inbound
neighbor cloud version 4
neighbor cloud capability graceful-restart
neighbor cloud send-community
neighbor cloud ttl-security hops 1
neighbor cloud maximum-prefix 10 warning-only
neighbor cloud prefix-list deny-all in
neighbor cloud prefix-list route-to-cloud-ipv4 out
neighbor xXC_C1_T1_INNER_V4x peer-group cloud
neighbor xXC_C1_T1_INNER_V4x description cloud-c1-t1-v4
neighbor xXC_C2_T1_INNER_V4x peer-group cloud
neighbor xXC_C2_T1_INNER_V4x description cloud-c2-t1-v4
address-family ipv6
redistribute kernel route-map route-to-cloud-ipv6
neighbor cloud activate
neighbor cloud soft-reconfiguration inbound
neighbor cloud capability graceful-restart
neighbor cloud prefix-list deny-all6 in
neighbor cloud prefix-list route-to-cloud-ipv6 out
neighbor xXC_C1_T1_INNER_V6x peer-group cloud
neighbor xXC_C1_T1_INNER_V6x description cloud-c1-t1-v6
neighbor xXC_C2_T1_INNER_V6x peer-group cloud
neighbor xXC_C2_T1_INNER_V6x description cloud-c2-t1-v6
exit-address-family
ip prefix-list deny-all deny 0.0.0.0/0 le 32
ip prefix-list route-to-cloud-ipv4 permit xPROTECTED_PREFIX_V4x
ipv6 prefix-list deny-all6 deny ::/0 le 128
ipv6 prefix-list route-to-cloud-ipv6 permit xPROTECTED_PREFIX_V6x
ip route xPROTECTED_NET_V4x xPROTECTED_MASK_V4x null0 201
ipv6 route xPROTECTED_PREFIX_V6x null0 201
route-map route-to-cloud-ipv4 permit 10
match ip address prefix-list route-to-cloud-ipv4
set origin igp
route-map route-to-cloud-ipv6 permit 10
match ipv6 address prefix-list route-to-cloud-ipv6
set origin igp

BIG-IP-B (router-id xBIGIP_B_OUTER_V4x, neighbors C1-T2 + C2-T2):

imish
router bgp xCUSTOMER_ASNx
no synchronization
bgp log-neighbor-changes
no auto-summary
bgp router-id xBIGIP_B_OUTER_V4x
bgp graceful-restart restart-time 120
redistribute kernel route-map route-to-cloud-ipv4
neighbor cloud peer-group
neighbor cloud remote-as xF5_XC_ASNx
neighbor cloud description cloud-peer-group
neighbor cloud password xBGP_PASSWORDx
neighbor cloud timers 10 30
neighbor cloud soft-reconfiguration inbound
neighbor cloud version 4
neighbor cloud capability graceful-restart
neighbor cloud send-community
neighbor cloud ttl-security hops 1
neighbor cloud maximum-prefix 10 warning-only
neighbor cloud prefix-list deny-all in
neighbor cloud prefix-list route-to-cloud-ipv4 out
neighbor xXC_C1_T2_INNER_V4x peer-group cloud
neighbor xXC_C1_T2_INNER_V4x description cloud-c1-t2-v4
neighbor xXC_C2_T2_INNER_V4x peer-group cloud
neighbor xXC_C2_T2_INNER_V4x description cloud-c2-t2-v4
address-family ipv6
redistribute kernel route-map route-to-cloud-ipv6
neighbor cloud activate
neighbor cloud soft-reconfiguration inbound
neighbor cloud capability graceful-restart
neighbor cloud prefix-list deny-all6 in
neighbor cloud prefix-list route-to-cloud-ipv6 out
neighbor xXC_C1_T2_INNER_V6x peer-group cloud
neighbor xXC_C1_T2_INNER_V6x description cloud-c1-t2-v6
neighbor xXC_C2_T2_INNER_V6x peer-group cloud
neighbor xXC_C2_T2_INNER_V6x description cloud-c2-t2-v6
exit-address-family
ip prefix-list deny-all deny 0.0.0.0/0 le 32
ip prefix-list route-to-cloud-ipv4 permit xPROTECTED_PREFIX_V4x
ipv6 prefix-list deny-all6 deny ::/0 le 128
ipv6 prefix-list route-to-cloud-ipv6 permit xPROTECTED_PREFIX_V6x
ip route xPROTECTED_NET_V4x xPROTECTED_MASK_V4x null0 201
ipv6 route xPROTECTED_PREFIX_V6x null0 201
route-map route-to-cloud-ipv4 permit 10
match ip address prefix-list route-to-cloud-ipv4
set origin igp
route-map route-to-cloud-ipv6 permit 10
match ipv6 address prefix-list route-to-cloud-ipv6
set origin igp

อธิบายการตั้งค่า BGP ที่สำคัญ:

  • timers 10 30 — Keepalive ทุก 10 วินาที, hold time 30 วินาที ค่าเริ่มต้น (60 / 180) ช้าเกินไปสำหรับการ failover ในการบรรเทา DDoS ประสานค่า timer กับ SOC เพื่อให้ตรงกันทั้งสองฝั่ง
  • ttl-security hops 1 — เปิดใช้งาน GTSM (RFC 5082) เนื่องจาก BGP session เป็นแบบ single-hop ผ่าน GRE tunnel การตั้งค่านี้ป้องกันการ spoofing BGP จากระยะไกลโดย กำหนดให้ TTL = 255 บนแพ็กเก็ต BGP ขาเข้า
  • maximum-prefix 10 warning-only — มาตรการป้องกันแบบ defence-in-depth แม้ว่า inbound prefix-list จะปฏิเสธ route ทั้งหมด แต่ค่านี้จะ สร้างคำเตือนหาก peer ส่ง prefix มาโดยไม่คาดคิด
  • redistribute kernel — แทรก null0 static routes เข้าสู่ BGP ผ่าน route-map ทางเลือกอื่นคือใช้คำสั่ง network อย่างชัดเจน (เช่น network xPROTECTED_PREFIX_V4x) ซึ่งมีความแม่นยำกว่า เนื่องจากโฆษณาเฉพาะ prefix ที่ระบุโดยไม่คำนึงถึง kernel routes อื่นๆ ทั้งสองวิธีใช้งานได้ ตัวอย่างนี้แสดง redistribute kernel พร้อม route-map ที่เข้มงวดเพื่อความยืดหยุ่น

null0 static routes ที่มี administrative distance สูงกว่า (201) ช่วยให้แน่ใจว่า prefix มีอยู่ใน kernel routing table เพื่อให้สามารถ redistribute ไปยัง Cloud ผ่าน BGP ได้โดยไม่กระทบกับ routing ปกติภายใต้สภาวะที่ไม่ถูกโจมตี หาก protected prefix มีอยู่ใน routing table จากแหล่งอื่นที่มี administrative distance ต่ำกว่า null0 route จะไม่ active และการ redistribution อาจล้มเหลว — ตรวจสอบด้วย show ip route หลัง การกำหนดค่า