การกำหนดค่า BIG-IP
- (ตัวอย่าง Route Domain 0)
คำสั่งทั้งหมดด้านล่างรันใน tmsh บน BIG-IP ปรับชื่อออบเจ็กต์ และ IP ตามความเหมาะสม
สำหรับการกำหนดค่า GRE tunnel ทั่วไปบน BIG-IP โปรดดู Configuring a GRE Tunnel Using BIG-IP สำหรับการตั้งค่าการกำหนดค่า routed เริ่มต้นกับ Cloud โปรดดู K000147949
[root@bigip:Active]# tmshroot@(bigip)(cfg-sync Standalone)(Active)(/Common)(tmos)#Outer Self IPs
หัวข้อที่มีชื่อว่า “Outer Self IPs”GRE endpoints
นี่คือ IP บน BIG-IP แต่ละยูนิตที่ใช้เป็น GRE tunnel
endpoints โดยทั่วไปอยู่บน external VLAN แต่ละยูนิตมี
non-floating outer self IP ของตัวเอง (traffic-group-local-only):
BIG-IP-A:
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/64BIG-IP-B:
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/64GRE tunnels
หัวข้อที่มีชื่อว่า “GRE tunnels”แต่ละ tunnel ชี้จาก BIG-IP ยูนิตไปยัง Cloud scrubbing center endpoint สร้าง สอง tunnels ต่อยูนิต (หนึ่ง tunnel ไปยัง แต่ละ scrubbing center ตามตำแหน่งทางภูมิศาสตร์) รวมเป็น สี่ logical tunnels ทั้งหมดใน HA pair:
Tunnel C1-T1 — BIG-IP-A ไปยัง xCENTER_1x:
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_V6xTunnel C2-T1 — BIG-IP-A ไปยัง xCENTER_2x:
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_V6xTunnel C1-T2 — BIG-IP-B ไปยัง xCENTER_1x:
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_V6xTunnel C2-T2 — BIG-IP-B ไปยัง xCENTER_2x:
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 ฯลฯ) เป็นเพียงตัวอย่าง สามารถใช้
ข้อกำหนดการตั้งชื่อของคุณเองได้
ตั้งค่า MTU ของ tunnel
หัวข้อที่มีชื่อว่า “ตั้งค่า MTU ของ tunnel”การ encapsulation แบบ GRE เพิ่ม overhead (24 bytes สำหรับ IPv4 outer, 44 bytes สำหรับ IPv6 outer) หากไม่กำหนด MTU อย่างชัดเจน แพ็กเก็ตที่มีขนาดใกล้ 1500 bytes จะถูก fragment หรือถูกทิ้ง ตั้งค่า MTU ของ tunnel เพื่อรองรับ overhead ของการ encapsulation:
modify net tunnels tunnel xc-ddos-c1t1-v4 mtu 1476modify net tunnels tunnel xc-ddos-c1t1-v6 mtu 1456modify net tunnels tunnel xc-ddos-c1t2-v4 mtu 1476modify net tunnels tunnel xc-ddos-c1t2-v6 mtu 1456modify net tunnels tunnel xc-ddos-c2t1-v4 mtu 1476modify net tunnels tunnel xc-ddos-c2t1-v6 mtu 1456modify net tunnels tunnel xc-ddos-c2t2-v4 mtu 1476modify net tunnels tunnel xc-ddos-c2t2-v6 mtu 1456GRE anti-spoofing (upstream ACLs)
หัวข้อที่มีชื่อว่า “GRE anti-spoofing (upstream ACLs)”GRE (IP protocol 47) ไม่มีการยืนยันตัวตน ผู้ที่รู้คู่ outer IP สามารถแทรกทราฟฟิกเข้าไปใน tunnel ได้ ใช้ ACL บน upstream router หรือ firewall เพื่อจำกัด inbound GRE ให้รับเฉพาะจาก source IP ของ Cloud scrubbing center ที่คาดหวังเท่านั้น:
! 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 logInner Self-IPs (BGP peering)
หัวข้อที่มีชื่อว่า “Inner Self-IPs (BGP peering)”กำหนด 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:
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/64Tunnel C2-T1 — BIG-IP-A ไปยัง xCENTER_2x:
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/64Tunnel C1-T2 — BIG-IP-B ไปยัง xCENTER_1x:
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/64Tunnel C2-T2 — BIG-IP-B ไปยัง xCENTER_2x:
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
-
เข้าสู่ imish สำหรับ RD 0:
bash tmsh run /util imish -r 0 -
เข้าสู่ privileged และ config mode:
imish localhost.localdomain[0]> enablelocalhost.localdomain[0]# configure terminal -
ตัวอย่างการกำหนดค่า BGP:
BIG-IP-A (router-id xBIGIP_A_OUTER_V4x, neighbors C1-T1 + C2-T1):
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 32ip prefix-list route-to-cloud-ipv4 permit xPROTECTED_PREFIX_V4x
ipv6 prefix-list deny-all6 deny ::/0 le 128ipv6 prefix-list route-to-cloud-ipv6 permit xPROTECTED_PREFIX_V6x
ip route xPROTECTED_NET_V4x xPROTECTED_MASK_V4x null0 201ipv6 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 igpBIG-IP-B (router-id xBIGIP_B_OUTER_V4x, neighbors C1-T2 + C2-T2):
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 32ip prefix-list route-to-cloud-ipv4 permit xPROTECTED_PREFIX_V4x
ipv6 prefix-list deny-all6 deny ::/0 le 128ipv6 prefix-list route-to-cloud-ipv6 permit xPROTECTED_PREFIX_V6x
ip route xPROTECTED_NET_V4x xPROTECTED_MASK_V4x null0 201ipv6 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— แทรกnull0static 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 หลัง
การกำหนดค่า