Score:0

วิธีเจรจาขนส่ง-udp-esp-natt SA กับเซิร์ฟเวอร์ strongswan

ธง cn

ฉันได้เขียนไคลเอนต์ IKE เพื่อเจรจา IPsec SA กับเซิร์ฟเวอร์ IKE บางตัว เช่น แรคคูนและสตรองสวอน

เมื่อการเจรจาเสร็จสิ้น ฉันส่งแพ็กเก็ต IPsec (แพ็กเก็ต udp-esp) จากเครื่องไคลเอ็นต์ เครื่องเซิร์ฟเวอร์ strongswan ได้รับแพ็กเก็ตแต่ไม่ได้จัดการ

ฉากเครือข่ายการขนส่ง-udp-natt ของฉัน: เครื่อง A (centos7) เครื่อง B (win7) เครื่อง Vmware ในเครื่อง B (centos7) 172.23.25.10 172.23.25.99 192.168.163.1 192.168.163.130 ไคลเอนต์ IKE เซิร์ฟเวอร์ IKE ไคลเอนต์ udp เซิร์ฟเวอร์ udp

เมื่อการเจรจาเสร็จสิ้น ข้อมูล SA จะแตกต่างกันระหว่างไคลเอนต์และเซิร์ฟเวอร์ Strongswan ในเครื่อง A sa คือ:

172.23.25.10[4500] 172.23.25.99[4500] 
        โหมด esp-udp=transport spi=3409495451(0xcb38c59b) reqid=0(0x00000000)
        E: aes-cbc bacca0d7 19fa120b 25202473 99704304 0e826139 f898be77 01b28606 b09ea092
        ตอบ: hmac-sha256 b4ded3b3 58214e27 c63d0f91 e4e66912 add797a0 67755537 9003b5b0 0c04338b
        seq=0x00000000 replay=0 flag=0x00000000 state=mature 
        สร้าง: 10 ธันวาคม 15:35:59 2021 ปัจจุบัน: 10 ธันวาคม 15:36:19 2021
        ความแตกต่าง: 20(s) แข็ง: 120(s) อ่อน: 96(s)
        ล่าสุด: 10 ธันวาคม 15:36:01 2021 ยาก: 120(s) อ่อน: 96(s)
        ปัจจุบัน: 55 (ไบต์) ฮาร์ด: 0 (ไบต์) อ่อน: 0 (ไบต์)
        จัดสรร: 5 ยาก: 120 อ่อน: 96
        sadb_seq=1 pid=349 refcnt=0
172.23.25.99[4500] 172.23.25.10[4500] 
        โหมด esp-udp=transport spi=244675610(0x0e95741a) reqid=0(0x00000000)
        E: aes-cbc eb74d7ad 50dd0adf 2e93a40a aada69f6 cb4d2d26 73b76d3b 1ac8c4c1 8534c6cc
        A: hmac-sha256 5029b994 d005f5b6 8b39172a 0b86dc7c 00551e2a 1ef57a13 603e2ee6 bac29afa
        seq=0x00000000 replay=0 flag=0x00000000 state=mature 
        สร้าง: 10 ธันวาคม 15:35:59 2021 ปัจจุบัน: 10 ธันวาคม 15:36:19 2021
        ความแตกต่าง: 20(s) แข็ง: 120(s) อ่อน: 96(s)
        ครั้งสุดท้าย: ยาก: 120 (s) อ่อน: 96 (s)
        ปัจจุบัน: 0 (ไบต์) ฮาร์ด: 0 (ไบต์) อ่อน: 0 (ไบต์)
        จัดสรร: 0 ยาก: 120 อ่อน: 96
        sadb_seq=0 pid=349 refcnt=0

ในเครื่อง Vmware SA ที่เพิ่มโดย strongswan คือ:

192.168.163.130 172.23.25.10 
        โหมด esp=transport spi=244675610(0x0e95741a) reqid=1(0x00000001)
        E: aes-cbc eb74d7ad 50dd0adf 2e93a40a aada69f6 cb4d2d26 73b76d3b 1ac8c4c1 8534c6cc
        A: hmac-sha256 5029b994 d005f5b6 8b39172a 0b86dc7c 00551e2a 1ef57a13 603e2ee6 bac29afa
        seq=0x00000000 replay=0 flag=0x00000000 state=mature 
        สร้าง: 10 ธันวาคม 02:35:29 2021 ปัจจุบัน: 10 ธันวาคม 02:35:45 2021
        ความแตกต่าง: 16(s) แข็ง: 0(s) อ่อน: 0(s)
        สุดท้าย: ยาก: 0 (s) อ่อน: 0 (s)
        ปัจจุบัน: 0 (ไบต์) ฮาร์ด: 0 (ไบต์) อ่อน: 0 (ไบต์)
        จัดสรร: 0 แข็ง: 0 อ่อน: 0
        sadb_seq=1 pid=10114 refcnt=0
172.23.25.10 192.168.163.130 
        โหมด esp=transport spi=3409495451(0xcb38c59b) reqid=1(0x00000001)
        E: aes-cbc bacca0d7 19fa120b 25202473 99704304 0e826139 f898be77 01b28606 b09ea092
        ตอบ: hmac-sha256 b4ded3b3 58214e27 c63d0f91 e4e66912 add797a0 67755537 9003b5b0 0c04338b
        seq=0x00000000 replay=32 flag=0x00000000 state=mature 
        สร้าง: 10 ธันวาคม 02:35:29 2021 ปัจจุบัน: 10 ธันวาคม 02:35:45 2021
        ความแตกต่าง: 16(s) แข็ง: 0(s) อ่อน: 0(s)
        สุดท้าย: ยาก: 0 (s) อ่อน: 0 (s)
        ปัจจุบัน: 0 (ไบต์) ฮาร์ด: 0 (ไบต์) อ่อน: 0 (ไบต์)
        จัดสรร: 0 แข็ง: 0 อ่อน: 0
        sadb_seq=0 pid=10114 refcnt=0

ฉันสงสัยว่า SA ในเครื่อง Vmware ไม่มีพอร์ต**[4500]** และ esp-udp ข้อมูล. เพราะเวลาผมใช้แรคคูน เครื่อง Vmware สามารถจัดการ udp packet จากเครื่อง A ได้ SAs ที่เพิ่มโดยแรคคูนมีลักษณะดังนี้:

192.168.163.130[4500] 172.23.25.10[4500] 
        โหมด esp-udp=transport spi=217431274(0x0cf5bcea) reqid=0(0x00000000)
        E: des-cbc 7744c128 a553d81a
        ตอบ: hmac-md5 af32028d 098ebf1b e0be8a42 84122992
        seq=0x00000000 replay=4 flag=0x00000000 state=mature 
        สร้าง: 10 ธันวาคม 02:23:59 2021 ปัจจุบัน: 10 ธันวาคม 02:24:18 2021
        ความแตกต่าง: 19(s) แข็ง: 120(s) อ่อน: 96(s)
        สุดท้าย: ยาก: 0 (s) อ่อน: 0 (s)
        ปัจจุบัน: 0 (ไบต์) ฮาร์ด: 0 (ไบต์) อ่อน: 0 (ไบต์)
        จัดสรร: 0 แข็ง: 0 อ่อน: 0
        sadb_seq=1 pid=9396 refcnt=0
172.23.25.10[4500] 192.168.163.130[4500] 
        โหมด esp-udp=transport spi=62789244(0x03be167c) reqid=0(0x00000000)
        E: des-cbc b2a72540 98f4bfb2
        ตอบ: hmac-md5 c745f6b7 f79f5c52 e9f3cafc 38a717d3
        seq=0x00000000 replay=4 flag=0x00000000 state=mature 
        สร้าง: 10 ธันวาคม 02:23:59 2021 ปัจจุบัน: 10 ธันวาคม 02:24:18 2021
        ความแตกต่าง: 19(s) แข็ง: 120(s) อ่อน: 96(s)
        ล่าสุด: 10 ธ.ค. 02:24:01 น. 2021 ยาก: 0(วินาที) นุ่มนวล: 0(วินาที)
        ปัจจุบัน: 33 (ไบต์) ฮาร์ด: 0 (ไบต์) อ่อน: 0 (ไบต์)
        จัดสรร: 3 ยาก: 0 อ่อน: 0
        sadb_seq=0 pid=9396 refcnt=0

ฉันได้ลองแก้ไขการกำหนดค่าแล้ว แต่สร้าง SA เหล่านี้ไม่สำเร็จ นี่คือการกำหนดค่าของฉัน: ipsec.conf:

คอน %default
    ikelifetime=6ม
    คีย์ไลฟ์=5ม
    รีคีย์มาร์จิ้น=3ม
    การป้อนคีย์ = 1
    การแลกเปลี่ยนคีย์=ikev1
    ike=aes256-sha256-modp1024
    esp=aes256-sha256-modp1024
    authby=ปสก
    พิมพ์=ขนส่ง
    อัตโนมัติ=เส้นทาง
    ก้าวร้าว = ไม่
    การกระจายตัว = ไม่
    คีย์ใหม่ = ไม่
    ฟอร์ซเอนแคป=ใช่

คอนดักเตอร์-b
    ซ้าย=192.168.163.130
    leftsubnet=192.168.163.0/24
    ขวา=172.23.25.10
    rightsubnet=172.23.25.0/24
    อัตโนมัติ = เพิ่ม

คอนแน็ต-ที
    ซ้าย=172.23.25.99
    leftsubnet=192.168.163.0/24
    ขวา=172.23.25.10
    rightsubnet=172.23.25.0/24
    อัตโนมัติ = เพิ่ม

strongswan.conf:

ชารอน {
        load_modular = ใช่
        ปลั๊กอิน {
                รวมถึงstrongswan.d/charon/*.conf
        }
        install_routes = ไม่
        บันทึกไฟล์ {
                ชารอน {
                        เส้นทาง = /etc/strongswan/logs/strongswan.log
                        time_format = %b %e %T
                        ike_name = ใช่
                        ต่อท้าย = ใช่
                        ค่าเริ่มต้น = 2
                        flush_line = ใช่
                }
                สแตร์เดอร์ {
                        อิเกะ = 2
                        กม.ล. = 3
                }
        }
}
รวมถึง strongswan.d/*.conf

มีปัญหากับการกำหนดค่าของฉันหรือไม่? ขอบคุณ!

cn flag
ลูกค้าของคุณรองรับ NAT Traversal (RFC 3947 สำหรับ IKEv1) หรือไม่ strongSwan ใช้ UDP encap เมื่อตรวจพบ NAT เท่านั้น (`forceencaps` เพียงแค่บังคับให้ตรวจจับ NAT โดยสร้างเพย์โหลด NAT-D แบบสุ่มสำหรับที่อยู่ต้นทาง)
cn flag
ใช่ ไคลเอ็นต์ได้รับการสนับสนุนโดย NAT Traversal ตามค่าเริ่มต้น จะส่งรหัสผู้ขายของ NATT ในข้อความแรกของระยะแรกของการเจรจา
cn flag
อ่านบันทึกเพื่อดูว่าเกิดอะไรขึ้นระหว่างการเจรจาเกี่ยวกับการตรวจจับ NAT
cn flag
Strongswan พิมพ์ "3 มกราคม 21:39:27 14[IKE] แกล้งทำสถานการณ์ NAT เพื่อบังคับใช้การห่อหุ้ม UDP" เมื่อประมวลผลข้อความที่สองที่ได้รับในโหมดหลัก นี่เป็นเรื่องปกติหรือไม่?
cn flag
ใช่ นั่นเป็นเพราะ `forceencaps=yes` แต่นั่นควรทำให้ UDP-encap เปิดใช้งานบน SA เว้นแต่ผู้ริเริ่มจะไม่เสนอโหมดการขนส่งด้วย encap หรือเสนอทั้งสองและเวอร์ชันที่ไม่มี encap ก่อน (ซึ่งไม่ควรเป็นไปตาม [RFC 3947](https://datatracker.ietf.org/doc/html/rfc3947# ส่วน-5.1)).อย่างไรก็ตาม การใช้โหมดการขนส่งกับซับเน็ตจริงใน `left|rightsubnet` นั้นไม่ถูกต้อง
cn flag
จากการตอบกลับของคุณ ฉันได้ตรวจสอบคำอธิบายของ RFC3947 และการใช้งานไคลเอ็นต์อีกครั้ง ฉันพบว่าไคลเอ็นต์ไม่ได้ใช้ UDP-Encapsulated-Transport (ค่า 4) เมื่อตรวจพบ NAT-T ในเฟส 1 ระหว่างการเจรจาของเฟส 2 แต่จะใช้ Transport (ค่า 2) เสมอเพื่อให้การเจรจาเฟส 2 เสร็จสมบูรณ์ . สิ่งนี้จะทำให้ Strongswan ไม่พก NAT-T เมื่อสร้าง SA หรือไม่
cn flag
ใช่ จะไม่มี UDP-encap หากเพียร์ไม่เสนอ อาจใช้งานได้กับโหมดอุโมงค์?
cn flag
ขณะนี้ไคลเอนต์รองรับโหมดการขนส่งเท่านั้น และยังไม่รองรับโหมดทันเนล ฉันจะปรับโค้ดไคลเอ็นต์ให้เหมาะสม เมื่อตรวจพบ NAT-T ในเฟส 1 ไคลเอ็นต์จะเสนอ UDP-encap ในเฟส 2 เพื่อดูว่าสามารถแก้ปัญหาปัจจุบันได้หรือไม่ ขอขอบคุณ.
cn flag
ขอบคุณสำหรับความช่วยเหลือ ปัญหาได้รับการแก้ไขแล้ว!

โพสต์คำตอบ

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