# وقتی اینترنت کار نمی‌کند (zev doctor)

> zev doctor اینترنت این کامپیوتر را لایه به لایه، از وای‌فای تا HTTPS، بررسی می‌کند، تنها چیزی را که واقعاً خراب است نام می‌برد و درستش می‌کند. هر راه بعد از اجرا بررسی می‌شود، راهی که کمک نکرد برگردانده می‌شود، و undo بقیه را برمی‌گرداند.

Source: https://zaryn.xyz/docs/fa/doctor

«اینترنت ندارم» می‌تواند ده‌ها معنی داشته باشد: وای‌فای قطع شده، روتر اتصالش را از دست داده، DNS جواب نمی‌دهد، برنامهٔ پراکسی بسته شده ولی سیستم هنوز به آن اشاره می‌کند، صفحهٔ ورود یک هتل، ساعتی که سه روز جلو یا عقب است. هر کدام راه دیگری دارد، و راه اشتباه یک ساعت وقت هدر می‌دهد. `zev doctor` همهٔ لایه‌ها را به ترتیب بررسی می‌کند و می‌گوید **کدام** خراب است و چرا:

```bash
zev doctor            # بررسی کن و بگو چه چیزی خراب است
zev doctor --fix      # درستش کن، دوباره بررسی کن، هر راهی که کمک نکرد را برگردان
zev doctor undo       # آنچه ‎--fix تغییر داد را برگردان
```

```diagram
type: flow
title: zev doctor کجاها را نگاه می‌کند، از پایین به بالا
---
اتصال | وای‌فای وصل است یا کابل زده شده، و شبکه نشانی داده است؟ | | 📶
~
روتر | روتر جواب می‌دهد؟ | | 📡
~
اینترنت | چیزی در اینترنت، فقط با نشانی، جواب می‌دهد؟ kill switch جامانده از یک VPN اینجا پیدا می‌شود | | 🌍
~
DNS | نام‌ها درست و سریع پیدا می‌شوند؟ | accent | 🔤
~
ورود، ساعت، HTTPS | صفحهٔ ورود هتل، ساعتی که درست نیست، چیزی که اتصال‌های امن را باز می‌کند | | 🔐
~
پراکسی | سیستم برنامه‌ها را به پراکسی‌ای می‌فرستد که آنجا نیست؟ | accent | 🔀
~
IPv6، بسته‌ها، کیفیت | IPv6 خراب، بسته‌های بزرگی که گم می‌شوند، خطی کند یا ناپایدار | good | 📈
```

هر لایه فقط وقتی بررسی می‌شود که لایه‌های زیرش کار کنند. اگر روتر جواب ندهد، پرسیدن از DNS بی‌معنی است، و zev doctor هم نمی‌پرسد. اولین لایه‌ای که خراب است **علت** است، و هر چه بالای آن است نتیجه‌اش.

## چه شکلی است

یک لپ‌تاپ روی هات‌اسپات گوشی. همه‌چیز کار می‌کند، و یک چیز ارزش درست کردن دارد:

```text
Checking this computer's internet, layer by layer

  ✓ Connection wlo1, Wi-Fi HomeWiFi, -35 dBm
  ✓ Address    192.168.1.34
  ✓ Router     192.168.1.1 answers
  ✓ Internet   1.1.1.1 answers in 180 ms
  ✓ DNS        names resolve in 68 ms (127.0.0.53)
  ✓ Sign-in    no sign-in page in the way
  ✓ Clock      right (within 0 s)
  ✓ HTTPS      www.cloudflare.com opens securely
  ✓ Proxy      none set: programs connect directly
  ✓ Packets    1500 bytes get through
  ! Quality    126 ms, varies 18 ms, 0 of 8 lost
               Wi-Fi power saving is on. zev tune check measures it under load; sudo zev tune on fixes what it finds.

Worth fixing (Quality): 126 ms, varies 18 ms, 0 of 8 lost

zev doctor --fix would:
  • turn Wi-Fi power saving off, kept only if the line gets steadier  sudo zev tune on --quick --only wifi_power --no-service
```

```diagram
type: cards
title: هر خط را چطور بخوانید
---
✓ | کار می‌کند | کاری لازم نیست | good
! | ارزش درست کردن دارد | کار می‌کند، اما کندتر یا ناپایدارتر از آنچه باید. هشدار به‌تنهایی با کد ۰ خارج می‌شود | warn
✗ | خراب | اولینش علت است. کد خروج ۱ | bad
· | بررسی نشد | لایه‌ای زیر آن خراب است، یا اندازه‌گیری‌اش ممکن نبود |
```

## ‎--fix چطور کار می‌کند

```diagram
type: sequence
title: zev doctor --fix
lanes: zev doctor | این کامپیوتر
alt: zev doctor همهٔ لایه‌ها را بررسی می‌کند، برای هر مشکل راهش را با دستور zev مخصوص آن اجرا می‌کند، صبر می‌کند، دوباره همهٔ لایه‌ها را بررسی می‌کند، راه‌هایی را که لایه‌شان بهتر شد نگه می‌دارد و آن‌هایی را که چیزی را عوض نکردند برمی‌گرداند؛ zev doctor undo بعداً بقیه را برمی‌گرداند
---
zev doctor -> این کامپیوتر : همهٔ لایه‌ها را بررسی کن
note zev doctor : DNS: سرور DNS سیستم جواب نمی‌دهد | bad
zev doctor -> این کامپیوتر : zev dns on
zev doctor -> این کامپیوتر : دوباره همهٔ لایه‌ها را بررسی کن
note zev doctor : DNS حالا کار می‌کند: نگهش دار و راه برگرداندنش را یادداشت کن | good
note zev doctor : راهی که چیزی را عوض نکرد فوراً برداشته می‌شود | warn
```

هر راه از دستور zev که برای همان کار ساخته شده می‌گذرد (`zev dns on`، `zev vpn off`، `zev proxy share on`، `zev tune on --only …`)، پس احتیاط خود آن‌ها را هم دارید. مثلاً `zev tune on` قبل و بعد را اندازه می‌گیرد و تغییری را فقط وقتی نگه می‌دارد که کمک کرده باشد. راه‌هایی که تنظیمات سیستم را عوض می‌کنند `sudo` می‌خواهند. راه‌های مربوط به دسکتاپ شما sudo نمی‌خواهند، و نباید با root اجرا شوند، چون تنظیمات خود شما را تغییر می‌دهند. `zev doctor --fix` را با کاربر خودتان اجرا کنید: هر کاری را که بتواند انجام می‌دهد و برای بقیه دستور `sudo` را می‌گوید.

## مثال‌ها

### سرور DNS جواب نمی‌دهد

کامپیوتر به اینترنت می‌رسد، اما هیچ نامی پیدا نمی‌شود. سرورهای DNS در اینترنت درست جواب می‌دهند، پس فقط همانی که به این کامپیوتر داده شده خراب است:

```text
  ✓ Router     192.168.77.1 answers
  ✓ Internet   198.51.100.10 answers in 0 ms
  ✗ DNS        names don't resolve: the system's DNS (198.51.100.11) doesn't answer
               DNS servers on the internet answer (1 ms): only the one this computer was given is broken.

The cause (DNS): names don't resolve: the system's DNS (198.51.100.11) doesn't answer

zev doctor --fix would:
  • send names through resolvers that answer, with a fallback  sudo zev dns on
```

```bash
sudo zev doctor --fix
```

```text
→ send names through resolvers that answer, with a fallback … done

Checking again…
  ✓ DNS        names resolve in 5 ms (127.0.0.153)

✓ Fixed: send names through resolvers that answer, with a fallback
zev doctor undo puts these back.
✓ All good now.
```

`sudo zev doctor undo` دستور `zev dns off` را اجرا می‌کند و تنظیمات DNS کامپیوتر همان می‌شود که بود.

همین لایه سرور DNS‌ای را هم پیدا می‌کند که **دروغ می‌گوید** و برای یک نام عمومی نشانی خصوصی می‌دهد:

```text
The cause (DNS): the system's DNS gives blocked.example a private address (10.10.34.36)
```

### برنامهٔ پراکسی بسته شده و سیستم هنوز به آن اشاره می‌کند

این رایج‌ترین «اینترنت ندارم»ی است که در واقع قطعی نیست. مرورگر می‌گوید اتصال برقرار نشد، اینترنت سالم است، و پراکسی سیستم هنوز همه‌چیز را به پورتی می‌فرستد که کسی پشتش نیست:

```text
  ✓ Internet   198.51.100.10 answers in 0 ms
  ✓ DNS        names resolve in 2 ms (198.51.100.11)
  ✗ Proxy      zev proxy system's setting for new sessions points at 127.0.0.1:10808, and nothing answers there
               Browsers and apps that use it say there's no internet, while the internet works. The proxy app was closed or crashed.
```

```bash
zev doctor --fix          # بدون sudo: تنظیم دسکتاپ خود شماست
```

```text
✓ Fixed: turn off zev proxy system's setting for new sessions: nothing answers at 127.0.0.1:10808
✓ All good now.
```

پراکسی سیستمی GNOME و KDE، تنظیم zev proxy برای نشست‌های تازه، و متغیرهای `http_proxy`، `https_proxy` و `all_proxy` را بررسی می‌کند. اگر پورت مرده پورت خود zev proxy باشد (10808) و پراکسی ذخیره‌شده داشته باشید، راهش به‌جای آن `zev proxy share on` است که دوباره روشنش می‌کند. متغیری که در ترمینال شما تنظیم شده از بیرون ترمینال قابل تغییر نیست، پس zev doctor می‌گوید چه تایپ کنید:

```text
  ✗ Proxy      $https_proxy in this terminal points at 127.0.0.1:3999, and nothing answers there
  In this terminal: unset http_proxy https_proxy all_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY (and remove them from ~/.bashrc or ~/.profile).
```

وقتی برنامهٔ پراکسی کار می‌کند ولی به سرورش نمی‌رسد، به‌جای خطا هشدار می‌گیرید، و `zev proxy doctor` گام بعدی است.

### یک VPN متوقف شده و همه‌چیز را بسته نگه داشته

```text
  ✓ Router     192.168.77.1 answers
  ✗ Internet   nothing on the internet answers: zev vpn's kill switch is still on
               zev vpn stopped without cleaning up, and its kill switch blocks every connection that doesn't go through it.

zev doctor --fix would:
  • remove zev vpn's kill switch and routes  sudo zev vpn off
```

اگر برنامهٔ VPN دیگری همهٔ ترافیک را بگیرد و چیزی برنگردد، zev doctor تونلش را نام می‌برد و می‌گوید آن برنامه را دوباره وصل کنید یا ببندید. هیچ‌وقت به VPN برنامهٔ دیگری دست نمی‌زند.

### صفحهٔ ورود هتل، کافه یا اداره

```text
  ✗ Sign-in    a sign-in page holds the connection (a hotel, café or office network)
               Web pages are sent to http://198.51.100.10/login until you sign in there.

zev doctor --fix would:
  • open the sign-in page (http://198.51.100.10/login)  xdg-open http://198.51.100.10/login
```

### ساعت درست نیست

سایت‌های امن زمان را بررسی می‌کنند، پس ساعتی که چند روز جابه‌جا باشد همهٔ گواهی‌ها را نامعتبر نشان می‌دهد. zev doctor زمان را با زمان یک سرور وب مقایسه می‌کند:

```text
  ✗ Clock      this computer's clock is behind by 3 day(s)
               Secure sites check the time: with the clock this far off, their certificates look invalid.

zev doctor --fix would:
  • set the clock from the network  sudo timedatectl set-ntp true
```

### مشکل از کامپیوتر شما نیست

```text
  ✓ Router     192.168.77.1 answers
  ✗ Internet   the router answers, the internet doesn't
               Your computer is fine: the router or the provider has no connection right now.

The cause (Internet): the router answers, the internet doesn't
  Restart the router; if that doesn't help, ask the provider.
```

دانستن همین شما را از نصب دوبارهٔ درایورها برای هیچ نجات می‌دهد.

### صفحه‌ها دیر شروع می‌شوند، یا صفحه‌های بزرگ گیر می‌کنند

```text
  ! IPv6       set up, but it goes nowhere
               Programs try IPv6 first and wait for it to fail: pages start late.
  ! Packets    big packets vanish above 1400 bytes (eth0 sends 1500)
               Small pages load and big ones hang: the network drops large packets without saying so.

zev doctor --fix would:
  • prefer IPv4, kept only if it helps  sudo zev tune on --quick --only prefer_v4 --no-service
  • let the system find the packet size that gets through  sudo zev tune on --quick --only mtu_probing --no-service
```

## همهٔ مشکل‌هایی که می‌شناسد

| لایه | چه پیدا می‌کند | راهش | sudo |
|---|---|---|---|
| اتصال | وای‌فای خاموش، کابل وصل نیست، به شبکه‌ای وصل نیست | `nmcli radio wifi on` | نه |
| نشانی | روتر نشانی نداده (DHCP)، مسیری نیست | `nmcli device reconnect <device>` | نه |
| روتر | روتر جواب نمی‌دهد | اتصال دوباره؛ وگرنه روتر را ری‌استارت کنید | نه |
| اینترنت | روتر اینترنت ندارد؛ kill switch یا مسیرهای جامانده از zev vpn؛ VPN دیگری که گیر کرده | `zev vpn off` برای zev؛ برای بقیه راهنمایی | بله |
| DNS | جواب نمی‌دهد، پورت ۵۳ بسته است، جواب دروغ، جواب کند، سرور zev dns متوقف شده، DNS جامانده از zev vpn | `zev dns on` (یا `zev vpn off`) | بله |
| ورود | captive portal | باز کردن صفحه | نه |
| ساعت | ساعت بیش از ۵ دقیقه جابه‌جاست | `timedatectl set-ntp true` | بله |
| HTTPS | گواهی‌ای که این کامپیوتر به آن اعتماد ندارد (شنود)، اتصال امنی که با نام سایت قطع می‌شود | راهنمایی، `zev proxy doctor` | |
| پراکسی | سیستم، zev یا یک متغیر به پراکسی‌ای اشاره می‌کند که آنجا نیست؛ پراکسی‌ای که روشن است ولی به جایی نمی‌رسد | خاموش کردنش، یا `zev proxy share on` | نه |
| IPv6 | تنظیم شده ولی به جایی نمی‌رسد | `zev tune on --only prefer_v4` | بله |
| بسته‌ها | سیاه‌چالهٔ MTU مسیر | `zev tune on --only mtu_probing` | بله |
| کیفیت | خط کند، ناپایدار یا با گم‌شدن بسته؛ وای‌فای ضعیف؛ صرفه‌جویی انرژی وای‌فای | `zev tune on --only wifi_power`؛ برای بقیه `zev tune check` | بله |

## دستورها

| دستور | چه می‌کند |
|---|---|
| `zev doctor` | همهٔ لایه‌ها را بررسی می‌کند و علت و راهش را می‌گوید. چیزی را تغییر نمی‌دهد |
| `zev doctor --fix` | راه‌هایی را که می‌تواند اجرا می‌کند، دوباره بررسی می‌کند، هر کدام را که کمک نکرد برمی‌گرداند |
| `sudo zev doctor --fix` | همین، برای راه‌هایی که sudo می‌خواهند |
| `zev doctor undo` | آنچه `--fix` تغییر داد را برمی‌گرداند (برای آن‌هایی که با sudo انجام شدند، `sudo`) |
| `zev doctor --json` | همین به‌صورت داده: وضعیت هر لایه، علت، هر راه و دستورش |

```bash
zev doctor --json | jq -r .cause                 # ‏"dns"، "proxy"، … یا "" وقتی همه‌چیز درست است
zev doctor --json | jq '.layers[] | select(.state=="bad")'
```

zev doctor روی لینوکس کار می‌کند. نه تنظیمی لازم دارد و نه چیزی که در پس‌زمینه اجرا شود، پس روی کامپیوتری که هیچ‌وقت از دستورهای شبکهٔ zev استفاده نکرده هم کار می‌کند. برای خود خط، زیر بار، [خط اینترنت بهتر](/docs/fa/tune) را ببینید. برای DNS، پراکسی و VPN: [zev dns](/docs/fa/dns)، [zev proxy](/docs/fa/proxy)، [zev vpn](/docs/fa/vpn).
