FreeBSD 13.2 เปิดตัวพร้อมรองรับ Netlink และ WireGuard

หลังจากการพัฒนาเป็นเวลา 11 เดือน FreeBSD 13.2 ก็ได้เปิดตัวแล้ว อิมเมจการติดตั้งถูกสร้างขึ้นสำหรับสถาปัตยกรรม amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 และ riscv64 นอกจากนี้ แอสเซมบลีได้รับการจัดเตรียมสำหรับระบบเสมือนจริง (QCOW2, VHD, VMDK, Raw) และสภาพแวดล้อมคลาวด์ Amazon EC2, Google Compute Engine และ Vagrant

การเปลี่ยนแปลงที่สำคัญ:

  • ความสามารถในการสร้างสแน็ปช็อตของระบบไฟล์ UFS และ FFS พร้อมการเปิดใช้งานการบันทึก (การอัปเดตแบบซอฟต์) ได้ถูกนำมาใช้แล้ว เพิ่มการสนับสนุนสำหรับการบันทึกดัมพ์ในเบื้องหลัง (การรันดัมพ์ด้วยแฟล็ก “-L”) พร้อมด้วยเนื้อหาของระบบไฟล์ UFS ที่เมาท์เมื่อเปิดใช้งานการทำเจอร์นัล หนึ่งในคุณสมบัติที่ไม่สามารถใช้งานได้เมื่อใช้การบันทึกคือการดำเนินการเบื้องหลังของการตรวจสอบความสมบูรณ์โดยใช้ยูทิลิตี fsck
  • องค์ประกอบพื้นฐานประกอบด้วยไดรเวอร์ wg ที่ทำงานในระดับเคอร์เนลพร้อมการใช้งานอินเทอร์เฟซเครือข่ายสำหรับ VPN WireGuard ในการใช้อัลกอริธึมการเข้ารหัสที่ไดรเวอร์ต้องการ API ของระบบย่อย crypto-subsystem เคอร์เนล FreeBSD ได้รับการขยาย ซึ่งมีการเพิ่มสายรัดที่อนุญาตให้ใช้อัลกอริธึมจากไลบรารี libsodium ที่ไม่ได้รับการสนับสนุนใน FreeBSD ผ่าน crypto-API มาตรฐาน . ในระหว่างกระบวนการพัฒนา การปรับให้เหมาะสมยังดำเนินการเพื่อสร้างสมดุลระหว่างการเชื่อมโยงการเข้ารหัสแพ็กเก็ตและงานถอดรหัสกับคอร์ CPU อย่างสม่ำเสมอ ซึ่งช่วยลดค่าใช้จ่ายเมื่อประมวลผลแพ็กเก็ต WireGuard

    ความพยายามครั้งสุดท้ายที่จะรวม WireGuard ใน FreeBSD เกิดขึ้นในปี 2020 แต่จบลงด้วยเรื่องอื้อฉาวซึ่งเป็นผลมาจากโค้ดที่เพิ่มไว้แล้วถูกลบออกเนื่องจากคุณภาพต่ำ งานที่ไม่ระมัดระวังกับบัฟเฟอร์ การใช้ stub แทนการตรวจสอบ การใช้งานที่ไม่สมบูรณ์ ของโปรโตคอลและการละเมิดใบอนุญาต GPL การใช้งานใหม่นี้ได้รับการจัดเตรียมร่วมกันโดยทีมพัฒนา FreeBSD และ WireGuard หลัก โดยได้รับการสนับสนุนจาก Jason A. Donenfeld ผู้เขียน VPN WireGuard และ John H. Baldwin นักพัฒนา FreeBSD ที่มีชื่อเสียง มีการตรวจสอบการเปลี่ยนแปลงอย่างเต็มรูปแบบโดยได้รับการสนับสนุนจากมูลนิธิ FreeBSD ก่อนที่จะยอมรับรหัสใหม่

  • มีการรองรับโปรโตคอลการสื่อสาร Netlink (RFC 3549) ที่ใช้ใน Linux เพื่อจัดระเบียบการโต้ตอบของเคอร์เนลกับกระบวนการในพื้นที่ผู้ใช้ โปรเจ็กต์นี้จำกัดเฉพาะการสนับสนุนตระกูล NETLINK_ROUTE สำหรับการจัดการสถานะของระบบย่อยเครือข่ายในเคอร์เนล ซึ่งอนุญาตให้ FreeBSD ใช้ยูทิลิตี้ Linux ip จากแพ็คเกจ iproute2 เพื่อจัดการอินเทอร์เฟซเครือข่าย ตั้งค่าที่อยู่ IP กำหนดค่าการกำหนดเส้นทาง และจัดการ nexthop ออบเจ็กต์ที่เก็บข้อมูลสถานะที่ใช้ในการส่งแพ็กเก็ตไปยังปลายทางที่ต้องการ
  • ไฟล์ปฏิบัติการของระบบพื้นฐานทั้งหมดบนแพลตฟอร์ม 64 บิตมีการเปิดใช้งานการสุ่มเค้าโครงพื้นที่ที่อยู่ (ASLR) ตามค่าเริ่มต้น หากต้องการปิดใช้งาน ASLR แบบเลือก คุณสามารถใช้คำสั่ง “proccontrol -m aslr -s Disable” หรือ “elfctl -e +noaslr”
  • ใน ipfw ตาราง Radix ถูกใช้เพื่อค้นหาที่อยู่ MAC ซึ่งช่วยให้คุณสามารถสร้างตารางด้วยที่อยู่ MAC และใช้เพื่อกรองการรับส่งข้อมูล ตัวอย่างเช่น: ตาราง ipfw 1 สร้างประเภท mac ตาราง ipfw 1 เพิ่ม 11:22:33:44:55:66/48 ipfw เพิ่มข้าม tablearg src-mac 'table(1)' ipfw เพิ่มปฏิเสธ src-mac 'table(1, 100 )' ipfw เพิ่มการปฏิเสธการค้นหา dst-mac 1
  • โมดูลเคอร์เนล dpdk_lpm4 และ dpdk_lpm6 ได้รับการเพิ่มแล้วและพร้อมสำหรับการโหลดผ่าน loader.conf ด้วยการใช้งานอัลกอริธึมการค้นหาเส้นทาง DIR-24-8 สำหรับ IPv4/IPv6 ซึ่งช่วยให้คุณปรับฟังก์ชั่นการกำหนดเส้นทางให้เหมาะสมสำหรับโฮสต์ที่มีตารางเส้นทางขนาดใหญ่มาก ( ในการทดสอบจะสังเกตเห็นความเร็วเพิ่มขึ้น 25 %) ในการกำหนดค่าโมดูล คุณสามารถใช้ยูทิลิตี้เส้นทางมาตรฐานได้ (เพิ่มตัวเลือก FIB_ALGO แล้ว)
  • การใช้งานระบบไฟล์ ZFS ได้รับการอัปเดตเป็น OpenZFS 2.1.9 สคริปต์เริ่มต้น zfskeys ให้การโหลดคีย์ที่จัดเก็บไว้ในระบบไฟล์ ZFS โดยอัตโนมัติ เพิ่มสคริปต์ RC ใหม่ zpoolreguid เพื่อกำหนด GUID ให้กับ zpool หนึ่งรายการขึ้นไป (เช่นมีประโยชน์สำหรับสภาพแวดล้อมการจำลองเสมือนของข้อมูลที่ใช้ร่วมกัน)
  • ไฮเปอร์ไวเซอร์ Bhyve และโมดูล vmm รองรับการแนบ CPU เสมือนมากกว่า 15 ตัวเข้ากับระบบเกสต์ (ควบคุมผ่าน sysctl hw.vmm.maxcpu) ยูทิลิตี้ bhyve ใช้การจำลองอุปกรณ์อินพุต virtio ซึ่งคุณสามารถแทนที่เหตุการณ์อินพุตคีย์บอร์ดและเมาส์ในระบบเกสต์ได้
  • ใน KTLS การใช้งานโปรโตคอล TLS ที่ทำงานที่ระดับเคอร์เนล FreeBSD ได้เพิ่มการรองรับการเร่งความเร็วด้วยฮาร์ดแวร์ของ TLS 1.3 โดยการออฟโหลดการดำเนินการบางอย่างที่เกี่ยวข้องกับการประมวลผลแพ็กเก็ตขาเข้าที่เข้ารหัสไปยังการ์ดเครือข่าย ก่อนหน้านี้ คุณลักษณะที่คล้ายกันมีให้ใช้งานสำหรับ TLS 1.1 และ TLS 1.2
  • ในสคริปต์เริ่มต้น Growfs เมื่อขยายระบบไฟล์รูท คุณสามารถเพิ่มพาร์ติชั่นสลับได้หากพาร์ติชั่นดังกล่าวหายไปในตอนแรก (เช่น มีประโยชน์เมื่อติดตั้งอิมเมจระบบสำเร็จรูปบนการ์ด SD) เพื่อควบคุมขนาดสวอป พารามิเตอร์ใหม่ growfs_swap_size ได้ถูกเพิ่มใน rc.conf
  • สคริปต์เริ่มต้นของโฮสต์ช่วยให้แน่ใจว่า UUID แบบสุ่มจะถูกสร้างขึ้นหากไฟล์ /etc/hostid หายไปและไม่สามารถรับ UUID จากฮาร์ดแวร์ได้ เพิ่มไฟล์ /etc/machine-id ด้วยการแสดงรหัสโฮสต์แบบย่อ (ไม่มียัติภังค์)
  • มีการเพิ่มตัวแปร defaultrouter_fibN และ ipv6_defaultrouter_fibN ลงใน rc.conf ซึ่งคุณสามารถเพิ่มเส้นทางเริ่มต้นไปยังตาราง FIB อื่นที่ไม่ใช่เส้นทางหลักได้
  • เพิ่มการรองรับแฮช SHA-512/224 ลงในไลบรารี libmd แล้ว
  • ไลบรารี pthread ให้การสนับสนุนซีแมนทิกส์ของฟังก์ชันที่ใช้ใน Linux
  • เพิ่มการสนับสนุนสำหรับการถอดรหัสการเรียกระบบ Linux ไปที่ kdump เพิ่มการสนับสนุนสำหรับการติดตามการเรียกระบบสไตล์ Linux ไปยัง kdump และ sysdecode
  • ขณะนี้ยูทิลิตี้ killall มีความสามารถในการส่งสัญญาณไปยังกระบวนการที่เชื่อมโยงกับเทอร์มินัลเฉพาะ (เช่น “killall -t pts/1”)
  • เพิ่มยูทิลิตี้ nproc เพื่อแสดงจำนวนบล็อกการคำนวณที่มีอยู่ในกระบวนการปัจจุบัน
  • เพิ่มการรองรับการถอดรหัสพารามิเตอร์ ACS (Access Control Services) ให้กับยูทิลิตี้ pciconf แล้ว
  • เพิ่มการตั้งค่า SPLIT_KERNEL_DEBUG ลงในเคอร์เนลแล้ว ซึ่งช่วยให้คุณสามารถบันทึกข้อมูลการดีบักสำหรับเคอร์เนลและโมดูลเคอร์เนลในไฟล์แยกกันได้
  • Linux ABI เกือบจะเสร็จสมบูรณ์แล้วด้วยการรองรับกลไก vDSO (Virtual Dynamic Shared Objects) ซึ่งมีชุดการเรียกของระบบที่จำกัดในพื้นที่ผู้ใช้โดยไม่มีการสลับบริบท Linux ABI บนระบบ ARM64 ได้รับการนำไปเปรียบเทียบกับการใช้งานสำหรับสถาปัตยกรรม AMD64
  • การสนับสนุนฮาร์ดแวร์ที่ได้รับการปรับปรุง เพิ่มการรองรับการตรวจสอบประสิทธิภาพ (hwpmc) สำหรับซีพียู Intel Alder Lake ไดรเวอร์ iwlwifi สำหรับการ์ดไร้สายของ Intel ได้รับการอัปเดตด้วยการรองรับชิปใหม่และมาตรฐาน 802.11ac เพิ่มไดรเวอร์ rtw88 สำหรับการ์ดไร้สาย Realtek พร้อมอินเทอร์เฟซ PCI ความสามารถของเลเยอร์ linuxkpi ได้รับการขยายเพื่อใช้กับไดรเวอร์ Linux ใน FreeBSD
  • ไลบรารี OpenSSL ได้รับการอัพเดตเป็นเวอร์ชัน 1.1.1t, LLVM/Сlang เป็นเวอร์ชัน 14.0.5 และเซิร์ฟเวอร์และไคลเอนต์ SSH ได้รับการอัพเดตเป็น OpenSSH 9.2p1 (เวอร์ชันก่อนหน้านี้ใช้ OpenSSH 8.8p1) อัปเดตด้วยคือเวอร์ชัน bc 6.2.4, expat 2.5.0, ไฟล์ 5.43, น้อยกว่า 608, libarchive 3.6.2, sendmail 8.17.1, sqlite 3.40.1, unbound 1.17.1, zlib 1.2.13

นอกจากนี้ ยังมีการประกาศว่า เริ่มต้นด้วยสาขา FreeBSD 14.0, ไดรเวอร์ OPIE, ce และ cp แบบใช้ครั้งเดียว, ไดรเวอร์สำหรับการ์ด ISA, ยูทิลิตี้ผสานมาสเตอร์และ minigzip, ส่วนประกอบ ATM ใน netgraph (NgATM), กระบวนการพื้นหลัง telnetd และ คลาส VINUM ใน geom

ที่มา: opennet.ru

เพิ่มความคิดเห็น