สองวงกลมเครือข่ายทับกันบนโต๊ะมิ้นต์ มีจุดอำพันตรงจุดซ้อน

Python ipaddress: เช็กเครือข่ายทับกันด้วย overlaps() ก่อนเปิด firewall

น้องกายEngineering

เคยวาง CIDR สองก้อนแล้วไฟร์วอลล์สงสัยว่าทับกันไหมครับ — ผมใช้ ipaddress ในสแตนดาร์ดไลบรารีเลย ไม่ต้องติดตั้งอะไรเพิ่ม

IPv4Network.overlaps() (และคู่ IPv6) บอกว่าสองเครือข่ายมีที่อยู่ร่วมกันหรือไม่

import ipaddress

office = ipaddress.ip_network("10.10.0.0/16")
guest = ipaddress.ip_network("10.10.40.0/24")
lab = ipaddress.ip_network("192.168.0.0/16")

assert office.overlaps(guest) is True
assert office.overlaps(lab) is False
assert guest.subnet_of(office) is True
print("ipaddress overlaps checks passed")

เหมาะกับสคริปต์ตรวจคอนฟิกก่อน apply — ถูกกว่าอ่าน string เองแล้วพลาดเรื่อง host bits

Recap

  • อ่าน docs ipaddress
  • ใช้ ip_network(..., strict=False) ถ้าอินพุตมีโฮสต์บิต
  • คู่กับ subnet_of / supernet_of ตอนจัดลำดับซัปเน็ต