Score:1

Ipsec VPN เป็น AWS: ไม่สามารถ ping AWS ภายในช่องสัญญาณได้

ธง in

สรุป: ฉันคิดว่าฉันขาดบางเส้นทางบนเซิร์ฟเวอร์ Ubuntu ของฉันที่เชื่อมต่อกับ AWS VPN ด้วย Strongswan Ipsec มีความคิดไหมว่าฉันต้องการเส้นทางใดบนเซิร์ฟเวอร์ของฉัน

ฉันกำลังพยายามตั้งค่า BGP ที่กำหนดเส้นทาง VPN จากเซิร์ฟเวอร์ไปยัง AWS ฉันได้ใช้งาน VPN ที่กำหนดเส้นทางแบบคงที่ ดังนั้นฉันจึงรู้ว่าฝั่ง AWS และ ipsec ของฉันถูกต้อง อย่างไรก็ตาม BGP พิสูจน์ได้ยาก

ฉันใช้ Strongswan บน Ubuntu เป็นด้าน "ลูกค้า" ipsec tunnels ของฉันขึ้นแล้ว (ยืนยันโดย สถานะ ipsec และในคอนโซล AWS) ปัญหาดูเหมือนว่าไคลเอนต์ BGP (frr) ของฉันไม่สามารถเชื่อมต่อกับกระบวนการ BGP ใน AWS (และในทางกลับกัน)

ใช้หนึ่งในสองอุโมงค์ ไอพี มีลักษณะดังนี้:

5: tunnel1@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1419 qdisc noqueue state UNKNOWN กลุ่มเริ่มต้น qlen 1000
    ลิงค์/ipip 1.2.3.4 เพียร์ 2.3.4.5
    inet 169.254.10.146 peer 169.254.10.145/30 ขอบเขต global tunnel1
       valid_lft ตลอดไป reserved_lft ตลอดไป

อินเทอร์เฟซถูกสร้างขึ้นด้วยสคริปต์ที่เรียกโดย Strongswan ซึ่งมีลักษณะดังนี้:

ip tunnel เพิ่ม ${VTI_INTERFACE} โลคัล ${PLUTO_ME} รีโมต ${PLUTO_PEER} โหมด vti คีย์ ${PLUTO_MARK_IN_ARR[0]}
sysctl -w net.ipv4.conf.${VTI_INTERFACE}.disable_policy=1
sysctl -w net.ipv4.conf.${VTI_INTERFACE}.rp_filter=2 || sysctl -w net.ipv4.conf.${VTI_INTERFACE}.rp_filter=0
ip addr เพิ่ม ${VTI_LOCALADDR} ระยะไกล ${VTI_REMOTEADDR} dev ${VTI_INTERFACE}
ip link ตั้ง ${VTI_INTERFACE} ขึ้น mtu ${MTU}
iptables -t mangle -I FORWARD -o ${VTI_INTERFACE} -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -t mangle -I INPUT -p esp -s ${PLUTO_PEER} -d ${PLUTO_ME} -j MARK --set-xmark ${PLUTO_MARK_IN}

ฉันมีเส้นทางดังนี้:

169.254.10.144/30 dev tunnel1 ลิงก์ขอบเขตเคอร์เนลโปรโต src 169.254.10.146

ฉันสามารถ ping ปลายทางท้องถิ่น (ลูกค้า) ของฉัน (169.254.10.146) ได้ แต่ส่งคำสั่ง ping ปลายทางระยะไกลว่า:

PING 169.254.10.145 (169.254.10.145) 56(84) ไบต์ของข้อมูล
จาก 169.254.10.146 icmp_seq=1 ไม่สามารถเข้าถึงโฮสต์ปลายทางได้

แม้จะบอกว่าไม่สามารถเข้าถึงได้ แต่ฉันเห็นแพ็กเก็ตบนอินเทอร์เฟซอุโมงค์ แม้ว่าจะไม่ปรากฏว่าจริง ๆ แล้วสิ่งนี้ถูกส่งไปตามอุโมงค์ไปยัง AWS (อย่างน้อย สถิติของ AWS Cloudwatch จะไม่แสดงกิจกรรมเพิ่มเติม)

หนึ่งในขั้นตอนการดีบัก BGP คือการพยายาม 'telnet' ไปยังเพื่อนบ้าน (169.254.10.145) บนพอร์ต 179 - แต่สิ่งนี้ล้มเหลวด้วย "ไม่มีเส้นทางไปยังโฮสต์" น่าแปลกที่ฉันเห็น AWS พยายามเชื่อมต่อกับไคลเอนต์ BGP ของฉันใน tcpdump บนอินเทอร์เฟซอุโมงค์:

12:49:45.860899 IP 169.254.10.145.43731 > 169.254.10.146.179: ค่าสถานะ [S], seq 857645259, ชนะ 26880, ตัวเลือก [mss 1375,sackOK,TS val 3261400514 ecr 0,nop length,wscale 7],
12: 49: 45.860931 IP 169.254.10.146.179> 169.254.10.145.43731: ธง [S. ], SEQ 2284055933, ACK 857645260, Win 64249 ], ความยาว 0

ดูเหมือนว่าเซิร์ฟเวอร์ของฉันกำลังส่งคืนแพ็กเก็ต ACK แต่การเชื่อมต่อไม่เคยเกิดขึ้น ถ้าฉันหยุดบริการ BGP เราจะเริ่มส่งการตอบกลับ RST:

12:52:02.055473 IP 169.254.10.145.43679 > 169.254.10.146.179: ค่าสถานะ [S], seq 2280717367, ชนะ 26880, ตัวเลือก [mss 1375,sackOK,TS val 3261536708 ecr 0,nop length,wscale 7], 0
12:52:02.055498 IP 169.254.10.146.179 > 169.254.10.145.43679: ค่าสถานะ [R.], seq 0, ack 1, ชนะ 0, ความยาว 0

จากนี้ฉันเดาว่าแพ็กเก็ต ACK ของเคอร์เนลและแพ็กเก็ต ping ของฉันกำลังไปที่อินเทอร์เฟซช่องสัญญาณ แต่ไม่ได้เข้าสู่ ipsec หรือไปที่ AWS

ดูเหมือนว่าฉันต้องการเพิ่มเส้นทางเพิ่มเติม แต่ฉันคิดไม่ออกว่าต้องใช้อะไรบ้าง รู้สึกเหมือนมีทุกอย่างเข้าที่แล้ว ฉันได้ดูตัวอย่างและคำแนะนำมากมายนับไม่ถ้วน แต่มีเพียงไม่กี่รายการที่แสดงสิ่งที่ฉันไม่มี และแม้แต่น้อยยืนยันว่าฉันต้องการเส้นทางที่ฉันคิดว่าฉันต้องการ หรือเส้นทางใดที่จำเป็นสำหรับ BGP ในการทำงาน ความช่วยเหลือใด ๆ ที่ชื่นชมมาก

Score:0
ธง in

ปรากฎว่าโซลูชันเป็นนโยบาย xfrm เพิ่มเติม แนวคิดเบื้องหลังคือในขณะที่แพ็กเก็ตเข้าสู่อินเทอร์เฟซ ipsec จะไม่ "ตักตวง" ทราฟฟิก ในการแก้ปัญหา ดูเหมือนว่าเราจำเป็นต้องทำเครื่องหมายแพ็คเก็ต (ในลักษณะเดียวกับที่เราทำในการกำหนดค่า ipsec และ iptables) และเพื่อ "เปิดใช้งาน" xfrm โดยเฉพาะตามนโยบาย ในกรณีของฉัน นี่คือ:

นโยบาย ip xfrm เพิ่ม dst 169.254.10.144/30 src 169.254.10.144/30 dir ออก tmpl src 1.2.3.4 dst 2.3.4.5 โปรโต esp spi 0xc0f93fba reqid 1 โหมดช่องทำเครื่องหมาย 0x64

สิ่งนี้ทำให้นโยบายมีลักษณะดังนี้:

src 169.254.10.144/30 dst 169.254.10.144/30
    กำจัดลำดับความสำคัญ 0
    ทำเครื่องหมาย 0x64/0xffffffff
    tmpl src 1.2.3.4 dst 2.3.4.5
        proto esp spi 0xc0f93fba reqid 1 โหมดอุโมงค์

สิ่งนี้มีเวทมนตร์บางอย่างซึ่งดูเหมือนว่าเราต้องได้รับจากนโยบายที่มีอยู่ สิ่งแรกคือ "หมายเลข spi" สิ่งนี้ได้รับการตั้งค่าโดย Strongswan และไม่ใช่ ฉันคิดว่าคาดเดาไม่ได้ และไม่พร้อมใช้งานในสภาพแวดล้อมที่ส่งต่อไปยัง ipsec-vti.sh. คุณต้องทำ grep และ awk เพื่อดึงออกมาแทน นโยบาย ip xfrm เอาต์พุต ในทำนองเดียวกัน คำขอ - ชุดนี้มี 1 สำหรับอินเทอร์เฟซแรกและ 2 สำหรับอินเทอร์เฟซที่สองที่สร้างขึ้น น่าเศร้าที่ tunnel1 ไม่ใช่ตัวแรกเสมอไป ดังนั้นคุณจะต้องดึงตัวเลขนั้นออกมาด้วย

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา