Score:0

การใช้งาน rfc3442 (เส้นทางสแตติกไร้คลาส) ในเซิร์ฟเวอร์ Freeradius DHCP

ธง us

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

แล้วต้องส่ง DHCP ตัวเลือก 121 (เส้นทางคงที่แบบไม่มีคลาส) และ ตัวเลือก DHCP 249 (เส้นทางคงที่แบบไม่มีคลาสของ Microsoft) เมื่อไคลเอ็นต์ขอที่อยู่ IP จากเซิร์ฟเวอร์ Strongswan VPN

ฉันต้องการทั้งตัวเลือก 121 และ 249 เพื่อพิจารณาชุดค่าผสมของระบบปฏิบัติการทั้งหมดที่สามารถเชื่อมต่อได้ (Windows, Linux, Android, MacOS, iPhones เป็นต้น)

ฉันไม่ประสบความสำเร็จมากนักในการใช้เซิร์ฟเวอร์ ISC DHCP กับ Strongswan เนื่องจากฉันไม่มีความสุขที่จะฟังทราฟฟิกผ่านอินเทอร์เฟซ WireGuardมันบอกว่าไม่รองรับ WireGuard หรืออินเทอร์เฟซย้อนกลับ และโดยพื้นฐานแล้วไม่สนใจคำขอ DHCP ที่มาจากเซิร์ฟเวอร์ Strongswan VPN ที่อีกด้านหนึ่งของลิงก์ wireguard

ดังนั้นฉันจึงเปลี่ยนไปใช้เซิร์ฟเวอร์ Freeradius DHCP เนื่องจาก Strongswan ใช้ Freeradius เพื่อตรวจสอบสิทธิ์ผู้ใช้อยู่แล้วเมื่อลงชื่อเข้าใช้เซิร์ฟเวอร์ Strongswan VPN

ท้ายที่สุด: มันจะยากแค่ไหน เพราะฉันเพิ่งจะเพิ่ม "ไฟล์ปรับแต่งบางไฟล์ไปยัง Freeradius" :-)

ปรากฎว่ามันยุ่งยากเล็กน้อย แต่ฉันจัดการให้ Freeradius ฟังทราฟฟิกบนลิงก์ Wireguard ของฉันโดยใช้การกำหนดค่าต่อไปนี้:

ฟัง {
        พิมพ์ = dhcp
        # เครือข่ายย่อย 192.168.200.0/24 เป็นเครือข่ายย่อย WireGuard ของฉันที่ทำหน้าที่เป็น 
        # กระดูกสันหลังของไซต์ต่อไซต์ VPN

        ipaddr = 192.168.200.4
        src_ipaddr = 192.168.200.4
        พอร์ต = 67
        อินเตอร์เฟส = wg0
        ออกอากาศ = ไม่
}

ในไฟล์ strongswan.conf ฉันมีดังต่อไปนี้:

ชารอน {
  load_modular = ใช่
  ปลั๊กอิน {
    รวมถึงstrongswan.d/charon/*.conf

    dhcp {
        force_server_address = ใช่
        identity_lease = ใช่
        อินเตอร์เฟส = wg0
        โหลด = ใช่
        เซิร์ฟเวอร์ = 192.168.200.4
        use_server_port = ใช่
    }
  }
}

อย่างไรก็ตาม: ฉันได้รับเซิร์ฟเวอร์ Freeradius DHCP เพื่อแจกจ่ายที่อยู่ IP ให้กับไคลเอนต์ VPN เมื่อ Strongswan ส่ง DHCP-Discover หรือ DHCP-Request ไปยังเซิร์ฟเวอร์ Freeradius DHCP แต่อย่างใด ฉันไม่สามารถส่งเส้นทางคงที่ได้

ฉันสามารถดูในไฟล์ พจนานุกรม ซึ่งอาศัยอยู่ใน /etc/freeradius/3.0 ว่ากำลังโหลดพจนานุกรมสำหรับตัวเลือกเฉพาะของ dhcp /usr/share/freeradius/dictionary.dhcp.

ในไฟล์นั้นฉันพบข้อมูลสองรายการต่อไปนี้:

# ตัวเลือกเส้นทางคงที่แบบไม่มีคลาส
ATTRIBUTE DHCP-Classless-Static-Route 121 octets

...

ATTRIBUTE DHCP-ไซต์เฉพาะ-25 249 octets

ตาม StrongSwan วิกิพีเดีย ฉันสามารถตั้งค่าเกตเวย์ hop ถัดไปสำหรับเส้นทางคงที่ของฉัน 0.0.0.0ดังนั้นถ้าอยากจะบอกว่าซับเน็ต 192.168.200.0/24 สามารถเข้าถึงได้ผ่านลิงก์ VPN ฉันต้องเข้ารหัสเส้นทางเป็นออคเต็ตที่เขียนเป็นรหัสฐานสิบหกโดยใช้คำสั่ง: {CIDR}{Network}{Gateway}

ดังนั้น 192.168.200.0/24 ผ่าน 0.0.0.0 กลายเป็น 0x18C0A8C800000000

ดังนั้นฉันคิดว่าฉันควรแก้ไข อัปเดตการตอบกลับ ใน dhcp DHCP-ค้นพบ และ dhcp คำขอ DHCP ดังต่อไปนี้:

อัปเดตคำตอบ {
    &DHCP-โดเมนชื่อเซิร์ฟเวอร์ = 192.168.200.1
    &DHCP-ซับเน็ตมาสก์ = 255.255.255.0
    &DHCP-IP-Address-Lease-Time = 86400
    &DHCP-Classless-Static-เส้นทาง = 0x18C0A8C800000000
    &DHCP-ไซต์เฉพาะ-25 = 0x18C0A8C800000000
    &DHCP-DHCP-ตัวระบุเซิร์ฟเวอร์ = 192.168.200.4
}

อย่างไรก็ตาม ฉันไม่เห็นว่าเส้นทางถูกพุชไปยังตารางเส้นทางของฉัน เมื่อฉันพยายามเข้าสู่ระบบผ่านไคลเอนต์ Windows VPN

แล้วฉันพลาดอะไรไป?

อัปเดต

ปรากฎว่าการเข้ารหัสสำหรับตัวเลือก DHCP 249 นั้นแตกต่างจากตัวเลือก DHCP 121 เล็กน้อย

อย่างน้อยตาม หน้าเว็บ Microsoft สำหรับตัวเลือก DHCP 249.

อย่างไรก็ตาม ฉันเริ่มสับสนเล็กน้อยว่าสิ่งนี้แปลเป็นการเข้ารหัสใน Freeradius ได้อย่างไร

เท่าที่ผมบอก ผมบอกแล้วว่า header ขึ้นต้นด้วย DHCP option 249 เพราะอะไร DHCP-ไซต์เฉพาะ-25 ถูกกำหนดไว้ในพจนานุกรม

แต่เว็บเพจของ Microsoft บอกว่าไบต์แรกหลังจากนั้นคือความยาวของเส้นทางทั้งหมดใน DHCP ที่วัดเป็นไบต์ ตามด้วยการเข้ารหัสเดียวกันสำหรับเส้นทางตามที่กำหนดไว้ในตัวเลือก DHCP 121

ดังนั้นเส้นทางที่เข้ารหัส 0x18C0A8C800000000 จะต้องต่อท้ายด้วย 08เพื่อให้สอดคล้องกับ Microsoft Static Routes ตอนนี้อ่าน:

&DHCP-ไซต์เฉพาะ-25 = 0x0818C0A8C800000000

ฉันได้ทดสอบด้วยการดัดแปลงนั้น แต่ก็ยังไม่มีโชค

การปรับปรุงครั้งที่สอง

เล่นซออีกเล็กน้อยกับไฟล์คอนฟิกูเรชันสำหรับ DHCP จากนั้นตรวจสอบผ่าน tcpdump ในสิ่งที่เกิดขึ้นจริง

เมื่อใดก็ตามที่ไคลเอนต์เข้าสู่ระบบ Strongswan คำขอสำหรับที่อยู่ IP จะถูกส่งต่อไปยังเซิร์ฟเวอร์ DCHP ดังนั้นใน essense Strongswan จึงทำหน้าที่เป็นตัวแทนส่งต่อ DHCP หากฉันได้รับส่วนนั้นถูกต้อง

ใน tcpdump ฉันเห็นการแลกเปลี่ยนต่อไปนี้เกิดขึ้น:

ลูกค้าส่ง DHCP Discover เซิร์ฟเวอร์ตอบกลับด้วยข้อเสนอ DHCP ลูกค้าส่งคำขอ DHCP เซิร์ฟเวอร์ตอบกลับด้วย DHCP ACK

ประเด็นแรกของฉันจากการตรวจสอบ tcpdump คือฉันไม่ต้องคำนวณ bytelength บนเส้นทางสแตติกที่เข้ารหัสเพราะนั่นทำให้เอาต์พุตจาก tcpdump สับสน

กล่าวอีกนัยหนึ่งคือการเข้ารหัสสำหรับ DHCP ตัวเลือก 121 และ DHCP ตัวเลือก 249 เหมือนกัน.

การอ่านเพิ่มเติมแนะนำการกำหนดเส้นทางแบบคงที่เชื่อมโยงกับข้อมูล DHCP แต่ฉันไม่เคยเห็นแพ็กเก็ตนั้นใน tcpdump

ผลลัพธ์จาก tcpdump เมื่อรันด้วยการกำหนดค่าเริ่มต้นของฉัน อัปเดตการตอบกลับ ด้านบนให้เซสชันต่อไปนี้:

tcpdump: กำลังฟัง wg0, RAW ประเภทลิงก์ (Raw IP), ขนาดการจับภาพ 262144 ไบต์

10:58:17.185671 IP (tos 0x0, ttl 64, id 46089, offset 0, flag [none], proto UDP (17), ความยาว 300)
    192.168.200.1.67 > 192.168.200.4.67: [udp sum ok] BOOTP/DHCP, คำขอจาก 7a:a7:8f:1f:b7:88, ความยาว 272, xid 0x5c9716b5, ค่าสถานะ [ไม่มี] (0x0000)
          เกตเวย์-IP 192.168.200.1
          Client-Ethernet-Address 7a:a7:8f:1f:b7:88
          ส่วนขยายผู้ขาย-rfc1048
            คุกกี้วิเศษ 0x63825363
            ข้อความ DHCP ตัวเลือก 53 ความยาว 1: ค้นพบ
            ตัวเลือก Client-ID 61 ความยาว 22: ประเภทฮาร์ดแวร์ 108, 61:73:73:65:40:68:6f:6d:65:2e:6d:6f:6c:67:61:61:72:64: 2e:65:75
            ตัวเลือกคำขอพารามิเตอร์ 55 ความยาว 2:
              เซิร์ฟเวอร์ชื่อโดเมน, เซิร์ฟเวอร์ชื่อ Netbios
            END ตัวเลือก 255, ความยาว 0

10:58:17.195305 IP (tos 0x0, ttl 64, id 19475, offset 0, flag [none], proto UDP (17), ความยาว 328)
    192.168.200.4.67 > 192.168.200.1.67: [bad udp cksum 0x129d -> 0x9ffd!] BOOTP/DHCP, Reply, length 300, xid 0x5c9716b5, flags [none] (0x0000)
          IP ของคุณ 192.168.201.13
          เกตเวย์-IP 192.168.200.1
          Client-Ethernet-Address 7a:a7:8f:1f:b7:88
          ส่วนขยายผู้ขาย-rfc1048
            คุกกี้วิเศษ 0x63825363
            ข้อความ DHCP ตัวเลือก 53 ความยาว 1: ข้อเสนอ
            Subnet-Mask ตัวเลือก 1 ความยาว 4: 255.255.255.0
            โดเมนเนมเซิร์ฟเวอร์ ตัวเลือก 6 ความยาว 4: 192.168.200.1
            ตัวเลือกระยะเวลาเช่า 51 ความยาว 4: 86400
            Server-ID ตัวเลือก 54 ความยาว 4: 192.168.200.4
            Classless-Static-Route ตัวเลือก 121 ความยาว 8: (192.168.200.0/24:0.0.0.0)
            Classless-Static-Route-Microsoft Option 249 ความยาว 8: (192.168.200.0/24:0.0.0.0)
            END ตัวเลือก 255, ความยาว 0
            พันธมิตรฯ ตัวเลือก 0 ความยาว 0 เกิดขึ้น 12

10:58:17.219444 IP (tos 0x0, ttl 64, id 46098, offset 0, flag [none], proto UDP (17), ความยาว 312)
    192.168.200.1.67 > 192.168.200.4.67: [udp sum ok] BOOTP/DHCP, คำขอจาก 7a:a7:8f:1f:b7:88, ความยาว 284, xid 0x5c9716b5, ค่าสถานะ [ไม่มี] (0x0000)
          เกตเวย์-IP 192.168.200.1
          Client-Ethernet-Address 7a:a7:8f:1f:b7:88
          ส่วนขยายผู้ขาย-rfc1048
            คุกกี้วิเศษ 0x63825363
            ตัวเลือกข้อความ DHCP 53 ความยาว 1: คำขอ
            ตัวเลือก Client-ID 61 ความยาว 22: ประเภทฮาร์ดแวร์ 108, 61:73:73:65:40:68:6f:6d:65:2e:6d:6f:6c:67:61:61:72:64: 2e:65:75
            ขอ IP ตัวเลือก 50 ความยาว 4: 192.168.201.13
            Server-ID ตัวเลือก 54 ความยาว 4: 192.168.200.4
            ตัวเลือกคำขอพารามิเตอร์ 55 ความยาว 2:
              เซิร์ฟเวอร์ชื่อโดเมน, เซิร์ฟเวอร์ชื่อ Netbios
            END ตัวเลือก 255, ความยาว 0

10:58:17.228663 IP (tos 0x0, ttl 64, id 19477, offset 0, flag [none], proto UDP (17), ความยาว 328)
    192.168.200.4.67 > 192.168.200.1.67: [bad udp cksum 0x129d -> 0x9d02!] BOOTP/DHCP, Reply, length 300, xid 0x5c9716b5, flags [none] (0x0000)
          IP ของคุณ 192.168.201.8
          เกตเวย์-IP 192.168.200.1
          Client-Ethernet-Address 7a:a7:8f:1f:b7:88
          ส่วนขยายผู้ขาย-rfc1048
            คุกกี้วิเศษ 0x63825363
            ตัวเลือกข้อความ DHCP 53 ความยาว 1: ACK
            Subnet-Mask ตัวเลือก 1 ความยาว 4: 255.255.255.0
            โดเมนเนมเซิร์ฟเวอร์ ตัวเลือก 6 ความยาว 4: 192.168.200.1
            ตัวเลือกระยะเวลาเช่า 51 ความยาว 4: 86400
            Server-ID ตัวเลือก 54 ความยาว 4: 192.168.200.4
            Classless-Static-Route ตัวเลือก 121 ความยาว 8: (192.168.200.0/24:0.0.0.0)
            Classless-Static-Route-Microsoft Option 249 ความยาว 8: (192.168.200.0/24:0.0.0.0)
            END ตัวเลือก 255, ความยาว 0
            พันธมิตรฯ ตัวเลือก 0 ความยาว 0 เกิดขึ้น 12

ความจริงที่ฉันเห็น Classless-Static-Route และ Classless-Static-Route-Microsoft มีการประกาศและพวกเขาบอกว่าซับเน็ตนั้นแน่นอน 192.168.200.0/24 มีให้บริการผ่านอุโมงค์ บอกเป็นนัยว่าฉันมาถูกทางแล้ว

อย่างไรก็ตาม:

เส้นทางยังไม่ปรากฏในตารางเส้นทางของฉัน

อาจมีบางสิ่งที่เกี่ยวข้องกับบรรทัดต่อไปนี้:

192.168.200.4.67 > 192.168.200.1.67: [udp cksum ไม่ดี 0x129d -> 0x9ffd!] BOOTP/DHCP, ตอบกลับ, ความยาว 300, xid 0x5c9716b5, ค่าสถานะ [ไม่มี] (0x0000)

ใครรู้บ้างว่าอะไรเป็นอะไรต้องแก้ไข?

โพสต์คำตอบ

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