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ตอนจัดลำดับซัปเน็ต