ماشین حساب بلوک CIDR پیشرفته با فرمت های ورودی گسترده در Go

مدیریت کارآمد محدوده آدرس IP در مهندسی شبکه، زیرساخت ابری و امنیت سایبری بسیار مهم است. بلوکهای CIDR (مسیریابی بین دامنهای بدون کلاس) روشی فشرده برای نمایش محدوده آدرس IP ارائه میکنند، اما مدیریت دستی آنها میتواند دشوار باشد. CIDR-Converter را وارد کنید، یک ابزار مبتنی بر Go که برای ساده کردن این فرآیند و در عین حال پشتیبانی از فرمت های ورودی توسعه یافته طراحی شده است.
مخزن من را در اینجا بررسی کنید:
یک ابزار خط فرمان که در Go نوشته شده است که محدوده آدرس IP را در قالبهای مختلف پردازش، تأیید و ادغام میکند. این ابزار از نشانه گذاری CIDR، نمادنویسی واژگان و فرمت های ورودی/خروجی متعدد پشتیبانی می کند.
ویژگی ها
پردازش ورودی
- فرمت های ورودی چندگانه پشتیبانی می شود:
- نماد CIDR (به عنوان مثال، “192.168.1.0/24”)
- نماد حروف عام (به عنوان مثال، “192.168.1.*”)
- فایلهای CSV حاوی بلوکهای CIDR
- فایل های JSON حاوی بلوک های CIDR
- حالت تعاملی stdin برای ورودی دستی
عملیات CIDR
- محدوده IP و بلوک های CIDR را تأیید می کند
- نمادهای عام را به فرمت CIDR تبدیل می کند
- بلوک های CIDR همپوشانی را ادغام می کند
- بلوک های CIDR را برای سازماندهی بهینه مرتب می کند
مدیریت خروجی
- نتایج ادغام شده را به صورت خودکار در فایل JSON ذخیره می کند
- خروجی JSON با چاپ زیبا
- مدیریت و گزارش جامع خطا
نصب و راه اندازی
مطمئن شوید که Go را روی سیستم خود نصب کرده اید، سپس:
git clone [repository-url]
cd [repository-name]
go build
استفاده
این ابزار از سه حالت ورودی پشتیبانی می کند:
1. حالت ورودی استاندارد
./cidr-processor
# Enter CIDR blocks interactively, one per line:
192.168.1.0/24
10.0.0.*
# Press Ctrl+D (Linux/Mac) or Ctrl+Z (Windows) to
…
من همچنین در حال برنامه ریزی برای ایجاد یک برنامه وب با ویژگی های اضافی، برای افزایش عملکرد و دامنه برنامه هستم!
این پروژه از مخزن cidr-convert Andy Walker الهام گرفته شده است.
ویژگی های کلیدی
1. فرمت های ورودی انعطاف پذیر
- از نماد سنتی CIDR پشتیبانی می کند (به عنوان مثال، 192.168.0.0/24)
- نمادهای عام را تجزیه می کند (به عنوان مثال، 192.168..)
- رشته های باینری را به بلوک های CIDR تبدیل می کند (به عنوان مثال، 1100000010101000000000000000000000/24)
- CIDR ها را از فایل های CSV و JSON می خواند
2. ادغام هوشمند
- CIDR های همپوشانی را در یک مجموعه حداقلی ادغام می کند و افزونگی را کاهش می دهد
- در صورت امکان، زیرشبکههای کوچکتر را به زیرشبکههای بزرگتر تجمیع میکند
3. پشتیبانی فایل I/O
- ورودی فایل ها یا ورودی استاندارد را تجزیه می کند
- CIDR های ادغام شده را برای اشتراک گذاری و ذخیره سازی آسان در یک فایل JSON ذخیره می کند
مشکل حل می شود
مدیریت فهرستهای بزرگ CIDR میتواند خستهکننده باشد، بهویژه زمانی که با محدودههای همپوشانی یا مجاور سروکار داریم. تجمیع دستی این محدوده ها مستعد خطا و زمان بر است. این ابزار فرآیند را خودکار می کند، از تجمع بهینه اطمینان حاصل می کند و خطر سوء مدیریت را کاهش می دهد.
چگونه کار می کند
عملکردهای اصلی
1. CIDR تجزیه و اعتبارسنجی
تابع parseCIDR تضمین می کند که ورودی با نماد CIDR معتبر مطابقت دارد.
2. Wildcard و Binary Parsing
- حروف عامیانه (به عنوان مثال، 192.168..) با تجزیه و تحلیل طول ماسک به CIDR تبدیل می شوند
- رشته های باینری (به عنوان مثال، 110000001010100000000000000000000/24) به آدرس های IP ترجمه می شوند
3. ادغام CIDR
- تابع mergeCIDRs با ادغام محدوده های همپوشانی، افزونگی را حذف می کند
- تابع aggregateCIDRs زیرشبکه های کوچکتر را در بلوک های بزرگتر و دربرگیرنده ترکیب می کند
4. تجزیه فایل
CIDRها را از قالبهای CSV و JSON با استفاده از توابع parseCSV و parseJSON میخواند.
5. خروجی
CIDR های ادغام شده برای استفاده آسان توسط سایر ابزارها یا تیم ها در یک فایل JSON ذخیره می شوند.
مثال استفاده
اجرای خط فرمان
ابزار را مستقیماً از ترمینال اجرا کنید و نوع ورودی را مشخص کنید:
# Standard input
$ go run main.go
Enter CIDR blocks, one per line. Press Ctrl+D (Linux/Mac) or Ctrl+Z (Windows) to end input:
192.168.0.0/24
192.168.1.0/24
# CSV Input
$ go run main.go input.csv
# JSON Input
$ go run main.go input.json
خروجی نمونه
با توجه به ورودی:
192.168.0.0/24
192.168.1.0/24
ابزار یک بلوک جمع شده را خروجی می دهد:
[
"192.168.0.0/23"
]
در merged_cidrs.json ذخیره شد.
مرور کد
تجزیه نمادهای عام
حروف عامیانه مانند 192.168.. به CIDR تبدیل می شوند:
func parseWildcard(input string) ([]*net.IPNet, error) {
wildcardRegex := regexp.MustCompile(`^((?:\d{1,3}|\*)\.){3}(?:\d{1,3}|\*)$`)
...
}
تابع طول پیشوند مناسب را محاسبه می کند و یک بلوک CIDR می سازد.
ادغام و تجمیع
تابع mergeCIDRs افزونگی را حذف می کند:
func mergeCIDRs(cidrs []*net.IPNet) []*net.IPNet {
sort.Slice(cidrs, func(i, j int) bool {
return bytes.Compare(cidrs[i].IP, cidrs[j].IP) < 0
})
...
}
تجمیع به شرح زیر است:
func aggregateCIDRs(cidrs []*net.IPNet) []*net.IPNet {
...
}
این مرحله محدوده های مجاور را در بلوک های بزرگتر ترکیب می کند.
تجزیه فایل
فایلهای ورودی CSV و JSON با parseCSV و parseJSON تجزیه میشوند و امکان یکپارچهسازی یکپارچه با گردشهای کاری موجود را فراهم میکنند:
func parseCSV(filename string) ([]*net.IPNet, error) {
...
}
چرا برو؟
کتابخانه استاندارد قوی Go، شامل بستههایی مانند net، regexp، و encoding/json، آن را به انتخابی عالی برای ساخت ابزارهای مرتبط با شبکه تبدیل میکند. مدل همزمانی قوی آن عملکرد بالا را حتی با مجموعه داده های بزرگ تضمین می کند.
پیشرفت های آینده
1. پشتیبانی از IPv6
- گسترش عملکرد برای رسیدگی به محدوده IPv6
2. فرمت های ورودی پویا
- پشتیبانی از YAML و XML را اضافه کنید
3. رابط وب
- یک برنامه وب سبک وزن برای مدیریت تعاملی CIDR بسازید
نتیجه گیری
ماشین حساب بلوک CIDR پیشرفته مدیریت CIDR را با فرمت های ورودی گسترده، ادغام هوشمند و پشتیبانی قوی از فایل ها ساده می کند. تطبیق پذیری آن آن را به ابزاری ارزشمند برای مهندسان شبکه، معماران ابر و متخصصان امنیت سایبری تبدیل می کند. این ابزار با الهام از تبدیل سیدر اندی واکر، بر ایدههای اساسی برای ارائه راهحل جامعتر ساخته شده است. آن را امتحان کنید و امروز گردش کار CIDR خود را ساده کنید!