AWS Site-to-Site VPN: ภายนอก ภายใน และคำนำหน้า LAN
สามบทบาทของที่อยู่สับสนบน AWS VPN เดียว: เพื่อนภายนอก ลิงก์ /30 ภายใน และคำนำหน้า LAN ที่ได้รับการป้องกัน อ่านได้จากการกำหนดค่าที่ดาวน์โหลดมา
ข้อผิดพลาดส่วนใหญ่ของ AWS Site-to-Site VPN เป็นข้อผิดพลาดเรื่องที่อยู่ และเกิดขึ้นก่อนที่แพ็กเก็ตใดจะขยับ ที่อยู่ภายนอกของอุโมงค์ไปถึงเพื่อน IPsec ที่อยู่ภายในสร้างลิงก์การกำหนดเส้นทางระหว่างกัน และคำนำหน้าที่ได้รับการป้องกันคือสิ่งที่ลิงก์นั้นมีไว้เพื่อ คัดลอกบทบาทหนึ่งไปอีกบทบาทหนึ่ง อุโมงค์จะขึ้นแต่ไม่มีอะไรถูกกำหนดเส้นทาง ลำดับอ่าน-ตรวจสอบ-กำหนดค่าที่ผมใช้บนเกตเวย์ลูกค้า BGP คือดังนี้ ค่าต่างๆ มาจากการกำหนดค่าอุปกรณ์ที่ดาวน์โหลดมา ไม่ใช่จากความจำ
สามบทบาทของที่อยู่ หนึ่งอุโมงค์
ที่อยู่ภายนอกเป็นสาธารณะและเป็นของเพื่อน IPsec: หนึ่งต่ออุโมงค์ฝั่ง AWS และตัวตนที่เข้าถึงได้ของเกตเวย์ลูกค้าฝั่งคุณ ปรับให้เข้ากับการจัดวาง NAT ที่คุณมีจริง ที่อยู่ภายในเป็นส่วนตัวและเป็นของลิงก์เชิงตรรกะ ซึ่ง AWS เอกสารไว้ว่าเป็น /30 ที่ดึงมาจาก 169.254.0.0/16 คำนำหน้าที่ได้รับการป้องกัน คือเครือข่าย VPC ภายในองค์กร หรือทรานซิตที่คุณกำหนดเส้นทางและประกาศผ่านลิงก์นั้น
การกำหนดคำนำหน้า LAN เป็นที่อยู่ของอินเทอร์เฟซอุโมงค์คือรูปแบบคลาสสิกของข้อผิดพลาดนี้ อินเทอร์เฟซดูเหมือนกำหนดค่าแล้ว LAN ไม่ถูกประกาศ และฝั่งตรงข้ามไม่มีเส้นทางไปยังมัน อุโมงค์อาจผ่าน ping ภายในของตัวเองได้ด้วยซ้ำ ขณะที่ชื่อแอปพลิเคชันทุกตัวหมดเวลา เอกสารอ้างอิงตัวเลือกอุโมงค์ ระบุข้อจำกัดของ CIDR ภายใน รวมถึงช่วงที่อยู่ที่ต้องมาจาก
อ่านค่าจากการกำหนดค่าที่ดาวน์โหลดมา
ดาวน์โหลดการกำหนดค่าสำหรับรุ่นอุปกรณ์เฉพาะของคุณจากหน้าการเชื่อมต่อ แล้วถือว่าตารางที่อยู่ของมันเป็นแหล่งความจริง คอนโซลแสดงค่าเดียวกันต่ออุโมงค์: IP ภายนอก CIDR ภายใน และที่อยู่เพื่อน BGP ฝั่ง AWS อุโมงค์ทั้งสองเป็นออบเจ็กต์แยกกัน โดยมีปลายทางภายนอกแยกกันและ /30 ภายในแยกกัน แม้ทั้งคู่จะบรรทุกเครือข่ายที่ได้รับการป้องกันชุดเดียวกัน
aws ec2 describe-vpn-connections --vpn-connection-ids vpn-0123456789abcdef0 \
--query 'VpnConnections[0].Options.TunnelOptions[].[OutsideIpAddress,TunnelInsideCidr]'
aws ec2 describe-customer-gateways --customer-gateway-ids cgw-0123456789abcdef0 \
--query 'CustomerGateways[0].[IpAddress,BgpAsn]'ถ้าไฟล์ที่ดาวน์โหลดกับคอนโซลสดไม่ตรงกัน ไฟล์นั้นล้าสมัย ดาวน์โหลดใหม่แทนการแก้ที่อยู่ด้วยมือ เพราะความไม่ตรงกันระหว่างคู่ภายในกับเพื่อนบ้านที่กำหนดค่าไว้ของเพื่อนคือความล้มเหลว BGP แบบเงียบ
สร้างลิงก์ด้วยที่อยู่ที่ถูกต้อง
บนเกตเวย์ Linux อุโมงค์เป็นอินเทอร์เฟซ VTI หรือ XFRM และ /30 ภายในวางบนอินเทอร์เฟซนั้น สองอุโมงค์หมายถึงสองอินเทอร์เฟซและเพื่อนบ้าน BGP สองราย หนึ่งรายต่อปลายทาง AWS ธรรมเนียมที่ AWS พิมพ์ในการกำหนดค่าอุปกรณ์ที่ดาวน์โหลดมาวางเกตเวย์ส่วนตัวเสมือนบนที่อยู่แรกของทุก /30 ภายใน และวางเกตเวย์ลูกค้าของคุณบนที่อยู่ที่สอง คุณจึงใช้ที่อยู่ที่สูงกว่าและเพียร์กับที่อยู่ที่ต่ำกว่า ไม่มีอะไรตรงนี้ต้องใช้ที่อยู่ LAN
ip tunnel add tun0 mode vti local 203.0.113.10 remote 18.230.1.1 key 42
ip addr add 169.254.10.2/30 dev tun0
ip link set tun0 up mtu 1400
ip tunnel add tun1 mode vti local 203.0.113.10 remote 18.230.2.1 key 43
ip addr add 169.254.10.6/30 dev tun1
ip link set tun1 up mtu 1400ถ้าไฟล์สำหรับรุ่นอุปกรณ์ของคุณพิมพ์คู่กลับกัน ให้ใช้ตัวเลขของมันและยึดกฎไว้: ที่อยู่บนอินเทอร์เฟซเป็นของคุณ ที่อยู่เพื่อนเป็นของ AWS การทำกลับกันจะได้อุโมงค์ที่ไม่ถึง Established เพราะเพื่อนบ้านที่คุณกำหนดค่าไว้คือที่อยู่ที่อินเทอร์เฟซของคุณเองถืออยู่แล้ว
รักษา mark และคีย์ VTI ให้สอดคล้องกับสิ่งที่ดีมอน IKE ใช้ผูก SA ลูกกับอินเทอร์เฟซ มิฉะนั้นทราฟฟิกจะมาถึงอุโมงค์โดยไม่มีอินเทอร์เฟซให้ลงจอด ตรวจสอบ MTU เทียบกับเส้นทางและเทียบกับการตั้งค่าของดีมอน IKE เอง แทนที่จะคัดลอกตัวเลขจากไซต์อื่น
ตรวจสอบ BGP ก่อนตรวจสอบเส้นทาง
การที่ IPsec ขึ้นพิสูจน์ว่าเพื่อนตกลงกันเรื่องสมาคมความปลอดภัยเท่านั้น ไม่มากกว่านั้น เซสชัน BGP คือการเจรจาแยกต่างหากบนลิงก์ภายใน ดังนั้นอ่านสถานะเพื่อนบ้านและตัวนับคำนำหน้า แล้วเปรียบเทียบกับสิ่งที่คุณตั้งใจจะประกาศ
ip -s addr show dev tun0
vtysh -c 'show bgp summary'
vtysh -c 'show bgp neighbors 169.254.10.1'
vtysh -c 'show ip bgp neighbors 169.254.10.1 advertised-routes'สถานะ Established กับคำนำหน้าที่ได้รับเป็นศูนย์คือปัญหาเชิงนโยบายหรือการประกาศ ไม่ใช่ปัญหาอุโมงค์ ทำการตรวจสอบทั้งหมดซ้ำบนอุโมงค์ที่สอง อุโมงค์แรกที่ทำงานได้บอกคุณว่าที่อยู่เป็นไปได้ ไม่ได้บอกว่าอุโมงค์ที่สองถูกกำหนดค่าไว้เลย
ติดตามแพ็กเก็ตที่ถูกกำหนดเส้นทาง แล้วหยุด
เมื่อเซสชันบรรทุกคำนำหน้าแล้ว ให้ทดสอบเส้นทางทั้งสองทิศทางจากเกตเวย์: ที่อยู่ต้นทาง ฮอปถัดไป และนโยบายความปลอดภัยที่อนุญาตทราฟฟิก เซสชัน BGP อาจขึ้นอยู่ขณะที่คำนำหน้าเฉพาะที่แอปพลิเคชันของคุณต้องการถูกกรอง ถูกสรุป หรือชี้ไปยังอินเทอร์เฟซที่ผิด
Reachability Analyzer คือเครื่องมือฝั่ง AWS ที่รับต้นทาง ปลายทาง และเส้นทาง แล้วรายงานว่าองค์ประกอบใดในการกำหนดค่าที่รองรับได้ปิดกั้นมัน ใช้มันทดสอบเส้นทางจาก VPC ไปยังที่อยู่เกตเวย์ลูกค้าของคุณ ไม่ใช่จากโฮสต์แอปพลิเคชัน มันวิเคราะห์การกำหนดค่าและไม่ส่งแพ็กเก็ตผ่านไฟร์วอลล์ภายในองค์กร ดังนั้นแยกคำตัดสินของมันออกจากตัวนับอินเทอร์เฟซและการดักจับแพ็กเก็ตของคุณเอง
บันทึกคู่ภายนอก /30 ภายใน และคำนำหน้าที่ประกาศสำหรับแต่ละอุโมงค์ไว้ในตารางเดียว ตารางนั้นคือสิ่งที่ทำให้การเปลี่ยนแปลงครั้งต่อไปตรวจทานได้