# شروع کار با خودکارسازی شبکه

> مسیری راهنما از «Zaryn برای شبکه‌ام چه می‌کند؟» تا تغییرهایی امن و خودکار سنجیده: جمع‌آوری‌کنندهٔ فقط‌خواندنی، پشتیبان کانفیگ و انحراف، نقشهٔ زنده، چرا A به B نمی‌رسد، دوقلوی دیجیتالی که تغییر را اول می‌آزماید، rolloutهایی که خودشان برمی‌گردند، و دسترسی به دستگاه بی گذرواژهٔ مشترک. اول تصویر، هر گام با توضیح.

Source: https://zaryn.xyz/docs/fa/get-started-network

از نخستین نگاه فقط‌خواندنی به دستگاه‌هایتان تا تغییرهایی که خودشان را می‌سنجند و برمی‌گردانند، فصل به فصل. طراحی شبکه به صورت کد مسیر جداگانه‌ای است: [شروع کار با مخزن‌های طراحی شبکه](/docs/fa/get-started-network-design).

## ۱. Zaryn برای یک شبکه چه می‌کند

```diagram
type: cards
---
🗂 | پشتیبان کانفیگ و انحراف | هر کانفیگ به صورت نسخه‌ها نگه داشته می‌شود؛ هر چه از کانفیگ تأییدشده دور شود، خط به خط علامت می‌خورد | accent
🗺 | نقشهٔ زنده | کشیده‌شده از آنچه دستگاه‌ها دربارهٔ همسایه‌هایشان می‌گویند، با نقطه‌های شکست یگانه |
🧮 | طرح آدرس‌ها | هر زیرشبکه و آدرس، و تعارض‌ها: یک IP روی دو اینترفیس، دو MAC، ماسک‌های ناهمخوان |
🔎 | چرا A به B نمی‌رسد | گام به گام از میان مسیرها، ACLها و فایروال‌ها، با قانونی که بسته را دور می‌اندازد | good
🔮 | دوقلوی دیجیتال | یک تغییر چه چیزی را می‌شکند، پیش از آنکه به دستگاهی برسد | good
🔁 | rollout امن | تغییرهایی که جمع‌آوری‌کننده انجام می‌دهد، زنده می‌سنجد و اگر شبکه نپذیرد برمی‌گرداند | warn
```

**سایت** جایی با دستگاه‌های شبکه است: یک دفتر، یک مرکز داده، یک POP. Zaryn هر سایت را زنده نشان می‌دهد و تاریخچه‌اش را نگه می‌دارد.

## ۲. چطور کار می‌کند

```diagram
type: graph
title: یک جمع‌آوری‌کننده در سایت، Zaryn در ابر
alt: جمع‌آوری‌کننده با فرمان‌های فقط‌خواندنی از راه SSH به دستگاه‌ها وارد می‌شود و آنچه چاپ می‌کنند را با HTTPS خروجی به Zaryn می‌فرستد؛ شما سایت را روی Zaryn می‌بینید
legend: ghost=SSH، فرمان‌های فقط‌خواندنی; path=HTTPS خروجی
height: 44
---
box سایت شما | 2 2 62 40 | good
node r1 | روتر هسته | 12 10 | router | | `show`، `display`، `print`، `/export`: فرمان‌هایی ساخته‌شده درون zev
node sw | سوئیچ‌ها | 12 22 | switch |
node fw | فایروال | 12 34 | firewall |
node col | جمع‌آوری‌کنندهٔ zev | 46 22 | collector | accent | هر ماشین لینوکسی در سایت. گذرواژه‌ها را نگه می‌دارد؛ فقط اتصال خروجی می‌سازد
node z | Zaryn | 82 10 | cloud | | نقشه، پشتیبان، انحراف، مسیرها، دوقلو، تاریخچه
node you | شما | 82 34 | user | good |
link r1 col | | ghost
link sw col | | ghost
link fw col | | ghost
link col z | HTTPS خروجی | path
link z you | | path2
```

**جمع‌آوری‌کننده** همان zev است که روی ماشینی در سایت اجرا می‌شود. با SSH به دستگاه‌هایتان وارد می‌شود و فقط **فرمان‌های فقط‌خواندنی** ساخته‌شده درون zev را اجرا می‌کند، پس هیچ چیزی که Zaryn بفرستد نمی‌تواند وادارش کند دستگاهی را عوض کند. گذرواژه‌ها روی جمع‌آوری‌کننده می‌مانند و فقط **به بیرون** وصل می‌شود: هیچ پورتی را باز نمی‌کنید.

## ۳. چه چیزهایی را می‌خواند و چه چیزی رایگان است

```diagram
type: cards
---
🟦 | Cisco IOS و IOS-XE | روترها و سوئیچ‌ها، ACLها، OSPF و BGP |
🟥 | Huawei VRP | روترها و سوئیچ‌ها |
🟧 | MikroTik RouterOS | از جمله قانون‌های فایروال و کشف همسایهٔ خودش |
🐧 | FRRouting، VyOS | روترهای لینوکسی |
🆓 | رایگان: تا ۱۰ دستگاه | همهٔ بررسی‌ها، دوقلو و rollout تا ۱۰ دستگاه | good
✦ | پریمیوم: تا ۱٬۰۰۰ | موج‌ها، canary، پنجره‌های نگهداری، تمرین‌های خرابی | accent
```

## ۴. یک سایت بسازید و جمع‌آوری‌کننده را راه بیندازید

```diagram
type: flow
title: ده دقیقه تا یک جمع‌آوری‌کنندهٔ فعال
---
ساختن سایت | zaryn.xyz/sites ← سایت تازه، مثلاً `hq` | | 🏢
~ Collector and settings
پیوستن | `zev site join zsite_…` روی ماشین جمع‌آوری‌کننده | accent | 🔑
~ sudo zev site install
در حال کار | یک سرویس: هر ۳۰ ثانیه سر می‌زند، هر ۱۵ دقیقه می‌خواند | good | ▶
```

```bash
zev site join zsite_… --server https://api.zaryn.xyz
sudo zev site install
```

اول روی جمع‌آوری‌کننده [zev را نصب کنید](/docs/fa/installation). سرویس فایل‌هایش را در `/var/lib/zev/site` نگه می‌دارد.

## ۵. ورودها، آزموده پیش از استفاده

```bash
zev site cred add core-admin --user netops            # asks for the password
zev site cred add old-ios --user admin --enable       # Cisco: also the enable secret
zev site test 10.0.0.1 --cred core-admin
```

```text
✓ CORE-SW1  Cisco IOS / IOS-XE 15.2(2)E7  WS-C2960X-48FPD-L  (1840 ms)
  interfaces  52 (31 up)
  neighbors   4
  config      612 lines, 7 secrets replaced before upload
```

هر ورود یک **اعتبارنامهٔ** نام‌دار روی جمع‌آوری‌کننده است. `zev site test` بی‌درنگ یک دستگاه را می‌خواند و نشان می‌دهد Zaryn چه خواهد دید، بی آنکه چیزی بفرستد. رازهای درون کانفیگ‌ها پیش از بیرون رفتن از جمع‌آوری‌کننده جایگزین می‌شوند.

## ۶. دستگاه‌هایتان را اضافه کنید

```diagram
type: flow
title: دو راه پر کردن سایت
or: یا
---
با آدرس | در زبانهٔ Devices: آدرس، سازنده (یا بگذارید zev تشخیص دهد)، اعتبارنامه | accent | ➕
? پیدایشان کنید | بازه‌هایی مثل `10.0.0.0/24` بیفزایید؛ همسایه‌هایی که دستگاه‌ها گزارش می‌کنند هم پیدا می‌شوند
~ ظرف یک دقیقه
خوانده‌شده | کانفیگ، اینترفیس‌ها، مسیرها، همسایه‌ها، آدرس‌ها | good | ✓
```

هر چه پیدا شود زیر **Found on the network** منتظر می‌ماند تا با یک کلیک اضافه یا نادیده‌اش بگیرید.

## ۷. پشتیبان و انحراف

```diagram
type: diff
title: دستگاهی که از کانفیگ تأییدشده‌اش دور شده
file: core-sw1 · running vs approved
---
@@ interface GigabitEthernet0/1
  interface GigabitEthernet0/1
   description to-servers
-  switchport trunk allowed vlan 10,20
+  switchport trunk allowed vlan 10,20,99
> کسی VLAN 99 را به یک trunk افزوده. عمدی بوده؟ Approve this config. نبوده؟ دقیقاً همین را برگردانید.
+  spanning-tree portfast trunk
```

نخستین کانفیگی که جمع‌آوری‌کننده می‌خواند **تأییدشده** می‌شود. هر تغییر بعدی نسخه‌ای تازه است؛ کانفیگ در حال اجرایی که با تأییدشده فرق کند **منحرف** است و تفاوتش خط به خط نشان داده می‌شود. خط‌هایی که خودشان عوض می‌شوند (زمان‌ها، دورهٔ ساعت NTP) نادیده گرفته می‌شوند، پس کانفیگی که عوض نشده هرگز عوض‌شده به نظر نمی‌رسد. ۵۰۰ نسخهٔ آخر هر دستگاه نگه داشته می‌شود.

## ۸. نقشه

```diagram
type: graph
title: کشیده‌شده از آنچه دستگاه‌ها می‌گویند
alt: نقشهٔ زندهٔ یک روتر هسته، دو سوئیچ توزیع و سوئیچ‌های دسترسی، با یک نقطهٔ شکست یگانهٔ علامت‌خورده
legend: down=اگر از کار بیفتد
start: نقشه
height: 46
---
node core | core | 50 8 | router | accent
node d1 | dist1 | 28 24 | switch
node d2 | dist2 | 72 24 | switch | warn | نقطهٔ شکست یگانه: acc3 فقط به آن وصل است
node a1 | acc1 | 12 40 | switch
node a2 | acc2 | 40 40 | switch
node a3 | acc3 | 72 40 | switch
link core d1
link core d2
link d1 a1
link d1 a2
link d2 a2
link d2 a3
step dist2 از کار می‌افتد | acc2 هنوز dist1 را دارد. acc3 جدا می‌شود: Zaryn پیش از رخ دادن، dist2 را نقطهٔ شکست یگانه علامت می‌زند.
node d2 | bad
link core d2 | down
link d2 a2 | down
link d2 a3 | down
node a3 | bad
```

نقشه از خود دستگاه‌ها می‌آید: CDP، LLDP، کشف همسایهٔ MikroTik، همسایه‌های OSPF و BGP، و زیرشبکه‌های مشترک. دستگاه‌ها و پیوندهایی که از دست رفتنشان دیگران را جدا می‌کند علامت می‌خورند.

## ۹. طرح آدرس‌ها

```diagram
type: cards
title: آنچه زبانهٔ Addresses می‌گیرد
---
⚠ | یک آدرس، دو اینترفیس | همان IP دو بار پیکربندی شده: یکی‌شان می‌بازد | bad
👥 | یک آدرس، دو MAC | دو ماشین برای یک IP جواب می‌دهند | bad
📏 | ماسک‌های ناهمخوان | یک زیرشبکه با ‎/24 اینجا و ‎/25 آنجا | warn
📊 | چقدر پر | هر زیرشبکه، آدرس‌هایش و چقدر جا مانده | good
```

## ۱۰. چه چیزی کی عوض شد

```diagram
type: cards
---
📝 | تغییر کانفیگ | هر تغییر در کانفیگ در حال اجرا، با دیفش | accent
🔌 | اینترفیس‌ها | بالا، پایین، نوسان |
🤝 | همسایه‌ها | پیدا و ناپیدا شدن |
📵 | دسترس‌پذیری | دستگاهی که جمع‌آوری‌کننده دیگر به آن نمی‌رسد | warn
```

فهرست **Changes** سایت خط زمانی شبکه است: نخستین جایی که پس از «دیروز کار می‌کرد» باید نگاه کرد.

## ۱۱. چرا A به B نمی‌رسد؟

```diagram
type: flow
title: Path Explain، گام به گام
---
پرسش | از، به، پروتکل و پورت، مثلاً لپ‌تاپ ← سرور، TCP 80 | | ❓
~ دنبال‌شده از میان هر دستگاه
گام‌ها | مسیر هر گام و هر قانون ACL یا فایروالی که به آن برمی‌خورد | accent | 🚶
~ پاسخ
چرا | «sw1 آن را دور می‌اندازد: SERVERS-OUT قانون ۴۰ deny ip any any» | bad | ✕
```

```text
Blocked by a filter
sw1 drops it (outbound on GigabitEthernet0/2): SERVERS-OUT, rule 40 deny ip any any log
```

در زبانهٔ **Paths** پاسخ یکی از این‌هاست: دسترس‌پذیر در هر دو سو، مسدود با یک فیلتر، بی‌مسیر، حلقهٔ مسیریابی، اینترفیسی پایین، پاسخی که برنمی‌گردد، بیرون رفتن از سایت، یا «نمی‌توان گفت» همراه با آنچه کم است. قانون یا مسیری را که تصمیم می‌گیرد نقل می‌کند و مسیرهای هم‌هزینه یکی‌یکی دنبال می‌شوند. [با جزئیات](/docs/fa/network-paths).

## ۱۲. آنچه مهم است را بپایید

```diagram
type: flow
title: یک پروب، و آنچه هنگام شکستش رخ می‌دهد
---
پروب | پینگ، یک پورت TCP، یک نشانی HTTP(S) یا یک نام DNS، هر ۳۰ ثانیه تا یک ساعت | | 📡
~ دو شکست پشت سر هم
ناموفق | در Health و Changes نشان داده می‌شود | warn | ⚠
~ خودکار
توضیح‌داده‌شده | Zaryn از جمع‌آوری‌کننده تا هدف Path Explain اجرا می‌کند | good | 🔎
```

«Refused» (میزبان جواب داد، چیزی گوش نمی‌دهد) از «no answer» (در راه دور ریخته شد) جدا می‌شود و هر پروب یک هفته نتیجه نگه می‌دارد.

## ۱۳. یک تغییر را روی دوقلو بیازمایید

```diagram
type: flow
title: ببینید چه می‌کند، پیش از آنکه بکند
---
ویرایش | کانفیگ کنونی دستگاه در ویرایشگر؛ چند دستگاه اگر تغییر چندتا را بپوشاند | accent | ✎
~ See what it would do
پیش‌بینی | هر جفت زیرشبکه، پروب‌ها و مسیرهای پاییده، روی شبکه آن‌طور که هست و خواهد بود | | 🔮
~ پاسخ
تفاوت‌ها | آنچه از کار می‌افتد اول، به رنگ قرمز، با قانون یا مسیری که فرق را می‌سازد | warn | ⚖
```

یک سایت را باز کنید، سپس **Try a change**. هیچ چیزی به دستگاه‌ها فرستاده نمی‌شود: دوقلو از آنچه آن‌ها آخرین بار گفتند کار می‌کند. از اسکریپت یا CI: `zev site diff acme/hq r1=r1.cfg`. [دوقلوی دیجیتال](/docs/fa/network-twin).

## ۱۴. اعمالش کنید، با امکان برگشت

```diagram
type: sequence
title: rolloutی که خودش را می‌سنجد
lanes: شما | Zaryn | جمع‌آوری‌کننده | دستگاه‌ها
alt: شما تأیید می‌کنید؛ جمع‌آوری‌کننده تغییر را اعمال می‌کند، صبر می‌کند شبکه آرام شود، آن را با پیش‌بینی دوقلو می‌سنجد و یا نگهش می‌دارد یا برمی‌گرداند
---
شما -> Zaryn : تأیید (چهار چشم اگر سایت بخواهد)
Zaryn -> جمع‌آوری‌کننده : فرمان‌ها، و برگرداننده‌شان
جمع‌آوری‌کننده -> دستگاه‌ها : اعمال
note جمع‌آوری‌کننده : بگذار شبکه آرام شود، سپس بسنج: دسترس‌پذیر؟ همسایه‌ها ماندند؟ مسیرها همان‌طور که دوقلو گفت؟ پروب‌ها موفق؟
جمع‌آوری‌کننده -> دستگاه‌ها : پایدار است: نگه دار | good
جمع‌آوری‌کننده -> دستگاه‌ها : نیست: برگردان | bad
جمع‌آوری‌کننده --> Zaryn : چه رخ داد، گام به گام
```

جمع‌آوری‌کننده فقط وقتی می‌تواند دستگاه‌ها را عوض کند که کسی روی ماشین خودش `sudo zev site changes on` را اجرا کند. هیچ چیزی که Zaryn بگوید این را روشن نمی‌کند. روی MikroTik، FRRouting و VyOS اگر جمع‌آوری‌کننده وسط تغییر ناپدید شود، خود دستگاه هم برمی‌گرداند. [rolloutها](/docs/fa/network-rollouts).

## ۱۵. یک تغییر، همهٔ دستگاه‌ها

```diagram
type: cards
---
📚 | Runbookها | NTP، syslog، DNS، چرخاندن کامیونیتی SNMP، کاربری که رفته: یک بار برای هر سازنده نوشته می‌شود و روی هر دستگاهی که لازم دارد اجرا می‌شود | accent
🐤 | Canary (پریمیوم) | نخستین دستگاه به‌تنهایی؛ بقیه فقط اگر پایدار بماند دنبال می‌کنند |
🌊 | موج‌ها (پریمیوم) | هر بار N دستگاه، هر موج پیش از بعدی سنجیده می‌شود |
🕐 | پنجره‌های نگهداری (پریمیوم) | هیچ چیزی پیش از آن شروع نمی‌شود؛ آنچه مانده با پایانش می‌ایستد | good
```

rolloutهای رایگان تا ۱۰ دستگاه در یک موج را می‌پذیرند، با همهٔ بررسی‌ها و بازگشت خودکار.

## ۱۶. دسترسی به دستگاه بی گذرواژه

```diagram
type: flow
title: یک ترمینال، تأییدشده، ضبط‌شده، پایان‌یافته
---
درخواست | `zev site ssh acme/hq core-sw --minutes 30 --reason …` | | ✋
~ مدیر سایت تأیید می‌کند
وصل | جمع‌آوری‌کننده با گذرواژه‌ای که نگه می‌دارد وارد می‌شود؛ شما هرگز آن را نمی‌بینید | accent | 🔑
~ هر کلید ضبط می‌شود
پایان | زمان تمام شد، یا لغو شد؛ در زبانهٔ Access بازپخشش کنید | good | ⏹
```

دیگر گذرواژهٔ مدیر مشترک در جدول‌ها نیست: یک مهندس یا پیمانکار برای مدتی محدود ترمینالی می‌گیرد، تأییدشده با یک مدیر، ضبط‌شده کلید به کلید. [دسترسی به دستگاه](/docs/fa/network-access).

از یک نگاه فقط‌خواندنی تا تغییرهای امن و سنجیده آمدید. بعد: [سایت‌های شبکه](/docs/fa/network-sites)، [Path Explain](/docs/fa/network-paths)، [دوقلوی دیجیتال](/docs/fa/network-twin) و [rolloutها](/docs/fa/network-rollouts) با جزئیات، و [مخزن‌های طراحی](/docs/fa/get-started-network-design) برای شبکه به صورت کد.
