nicolaka/netshoot
یک ابزار کاربردی و مفید برای عیبیابی شبکه در محیطهای Docker و Kubernetes است. این کانتینر به عنوان یک جعبه ابزار شبکه عمل میکند و شامل مجموعهای از ابزارهای شبکه برای عیبیابی، تست و مانیتورینگ شبکهها در داخل کانتینرها است.
قابلیتها و ابزارهای موجود در netshoot:
آشنایی با شبکه: برای عیبیابی مشکلات شبکه مثل DNS، مسیریابی، دسترسیپذیری و مشکلات ارتباطی بین کانتینرها بسیار مفید است.
ابزارهای شبکه: netshoot شامل بسیاری از ابزارهای شبکهای است، مانند:
curl, dig, traceroute, ping, tcpdump, ip, ifconfig, netstat, nmap, nslookup, wireshark, iptables, conntrack
ابزارهای بیشتر مثل jq, tshark, telnet, iperf3, netcat, ethtool و غیره.
این ابزارها برای تحلیل و بررسی ترافیک شبکه، رفع مشکلات اتصال بین کانتینرها، بررسی قوانین فایروال و دیگر موارد مربوط به شبکههای Docker و Kubernetes بسیار مفید هستند.
نحوه استفاده:
برای استفاده از netshoot کافی است آن را به عنوان یک کانتینر اجرا کنید. به عنوان مثال:
این دستور شما را وارد محیط کانتینر netshoot میکند که در آن میتوانید از ابزارهای مختلف برای عیبیابی استفاده کنید.
مثالهایی از کاربردهای netshoot:
بررسی اتصال بین کانتینرها: فرض کنید دو کانتینر در حال اجرا هستند و شما میخواهید بررسی کنید آیا ارتباط بین آنها برقرار است یا خیر:
تحلیل ترافیک شبکه با tcpdump: برای ضبط ترافیک شبکه داخل یک کانتینر:
بررسی تنظیمات DNS: اگر مشکلی در دسترسی به DNS دارید، میتوانید از dig یا nslookup استفاده کنید:
موارد استفاده اصلی:
حل مشکلات مربوط به اتصال شبکه در کانتینرهای Docker.
تحلیل ترافیک شبکه و بررسی ترافیک ورودی و خروجی کانتینرها.
بررسی فایروالها و تنظیمات iptables.
تستهای مربوط به سرعت شبکه و عملکرد.
nicolaka/netshoot یک ابزار همهکاره برای ادمینهای شبکه و سیستمعاملها در محیطهای کانتینری است و به عیبیابی سریع مشکلات شبکه کمک شایانی میکند.
یک ابزار کاربردی و مفید برای عیبیابی شبکه در محیطهای Docker و Kubernetes است. این کانتینر به عنوان یک جعبه ابزار شبکه عمل میکند و شامل مجموعهای از ابزارهای شبکه برای عیبیابی، تست و مانیتورینگ شبکهها در داخل کانتینرها است.
قابلیتها و ابزارهای موجود در netshoot:
آشنایی با شبکه: برای عیبیابی مشکلات شبکه مثل DNS، مسیریابی، دسترسیپذیری و مشکلات ارتباطی بین کانتینرها بسیار مفید است.
ابزارهای شبکه: netshoot شامل بسیاری از ابزارهای شبکهای است، مانند:
curl, dig, traceroute, ping, tcpdump, ip, ifconfig, netstat, nmap, nslookup, wireshark, iptables, conntrack
ابزارهای بیشتر مثل jq, tshark, telnet, iperf3, netcat, ethtool و غیره.
این ابزارها برای تحلیل و بررسی ترافیک شبکه، رفع مشکلات اتصال بین کانتینرها، بررسی قوانین فایروال و دیگر موارد مربوط به شبکههای Docker و Kubernetes بسیار مفید هستند.
نحوه استفاده:
برای استفاده از netshoot کافی است آن را به عنوان یک کانتینر اجرا کنید. به عنوان مثال:
docker run -it --rm nicolaka/netshoot
این دستور شما را وارد محیط کانتینر netshoot میکند که در آن میتوانید از ابزارهای مختلف برای عیبیابی استفاده کنید.
مثالهایی از کاربردهای netshoot:
بررسی اتصال بین کانتینرها: فرض کنید دو کانتینر در حال اجرا هستند و شما میخواهید بررسی کنید آیا ارتباط بین آنها برقرار است یا خیر:
docker run -it --rm --network container:<container_name> nicolaka/netshoot ping <target_container>
تحلیل ترافیک شبکه با tcpdump: برای ضبط ترافیک شبکه داخل یک کانتینر:
docker run -it --rm --network container:<container_name> nicolaka/netshoot tcpdump -i eth0
بررسی تنظیمات DNS: اگر مشکلی در دسترسی به DNS دارید، میتوانید از dig یا nslookup استفاده کنید:
docker run -it --rm nicolaka/netshoot dig google.com
موارد استفاده اصلی:
حل مشکلات مربوط به اتصال شبکه در کانتینرهای Docker.
تحلیل ترافیک شبکه و بررسی ترافیک ورودی و خروجی کانتینرها.
بررسی فایروالها و تنظیمات iptables.
تستهای مربوط به سرعت شبکه و عملکرد.
nicolaka/netshoot یک ابزار همهکاره برای ادمینهای شبکه و سیستمعاملها در محیطهای کانتینری است و به عیبیابی سریع مشکلات شبکه کمک شایانی میکند.
چرا کانتینر پس از توقف دستی ریاستارت نمیشود؟
سیاست always به این شکل کار میکند:
اگر کانتینر بهصورت غیرمنتظره متوقف شود (مثلاً بهخاطر خطا یا خاموش شدن سیستم)، Docker آن را مجدداً استارت میکند.
اما اگر شما بهصورت دستی و از طریق دستور docker stop یا docker kill کانتینر را متوقف کنید، Docker کانتینر را مجدداً استارت نمیکند، زیرا فرض میکند که شما بهطور عمدی آن را متوقف کردهاید.
سیاست always به این شکل کار میکند:
اگر کانتینر بهصورت غیرمنتظره متوقف شود (مثلاً بهخاطر خطا یا خاموش شدن سیستم)، Docker آن را مجدداً استارت میکند.
اما اگر شما بهصورت دستی و از طریق دستور docker stop یا docker kill کانتینر را متوقف کنید، Docker کانتینر را مجدداً استارت نمیکند، زیرا فرض میکند که شما بهطور عمدی آن را متوقف کردهاید.
اگر قصد دارید کانتینر بعد از هر توقف، حتی توقف دستی، بهطور خودکار استارت شود، باید از یک اسکریپت خارجی یا ابزار مانیتورینگ استفاده کنید که دائماً وضعیت کانتینر را بررسی کرده و در صورت توقف، آن را مجدداً استارت کند. اما بهطور پیشفرض، Docker سیاست ریاستارت always را برای متوقف کردن دستی اعمال نمیکند.
برای اینکه یک راهحل ساده داشته باشی که کانتینر بعد از توقف دستی هم دوباره بهطور خودکار استارت شود، میتوانی یک اسکریپت شِل کوچک بنویسی که وضعیت کانتینر را بررسی کند و اگر متوقف شده بود، دوباره آن را استارت کند.
اسکریپت ساده:
#!/bin/bash
CONTAINER_NAME="<container_name_or_id>"
while true; do
STATUS=$(docker inspect -f '{{.State.Status}}' $CONTAINER_NAME)
if [ "$STATUS" != "running" ]; then
echo "Container $CONTAINER_NAME is not running. Starting it now..."
docker start $CONTAINER_NAME
fi
sleep 10 # بررسی وضعیت هر ۱۰ ثانیه یکبار
done
توضیحات:
اسکریپت هر ۱۰ ثانیه وضعیت کانتینر را بررسی میکند.
اگر کانتینر در وضعیت running نباشد، دستور docker start اجرا شده و کانتینر استارت میشود.
متغیر CONTAINER_NAME را به نام یا ID کانتینر موردنظر تغییر بده.
نحوه اجرای اسکریپت:
اسکریپت را در یک فایل ذخیره کن. مثلاً به نام container-watch.sh.
به فایل دسترسی اجرایی بده:
chmod +x container-watch.sh
اسکریپت را اجرا کن:
./container-watch.sh
این اسکریپت کانتینر را بهطور مداوم مانیتور میکند و اگر متوقف شد (حتی بهصورت دستی)، آن را مجدداً استارت میکند.
اسکریپت ساده:
#!/bin/bash
CONTAINER_NAME="<container_name_or_id>"
while true; do
STATUS=$(docker inspect -f '{{.State.Status}}' $CONTAINER_NAME)
if [ "$STATUS" != "running" ]; then
echo "Container $CONTAINER_NAME is not running. Starting it now..."
docker start $CONTAINER_NAME
fi
sleep 10 # بررسی وضعیت هر ۱۰ ثانیه یکبار
done
توضیحات:
اسکریپت هر ۱۰ ثانیه وضعیت کانتینر را بررسی میکند.
اگر کانتینر در وضعیت running نباشد، دستور docker start اجرا شده و کانتینر استارت میشود.
متغیر CONTAINER_NAME را به نام یا ID کانتینر موردنظر تغییر بده.
نحوه اجرای اسکریپت:
اسکریپت را در یک فایل ذخیره کن. مثلاً به نام container-watch.sh.
به فایل دسترسی اجرایی بده:
chmod +x container-watch.sh
اسکریپت را اجرا کن:
./container-watch.sh
این اسکریپت کانتینر را بهطور مداوم مانیتور میکند و اگر متوقف شد (حتی بهصورت دستی)، آن را مجدداً استارت میکند.
برای اینکه این اسکریپت به عنوان یک سرویس سیستمعامل (systemd service) همیشه در بکگراند اجرا شود، میتوانید آن را بهصورت یک سرویس systemd تنظیم کنید. این روش به شما اجازه میدهد که اسکریپت بهصورت خودکار با بوت شدن سیستم شروع شود و در صورت نیاز بهسادگی مدیریت شود.
مراحل ایجاد سرویس systemd:
1. ایجاد فایل سرویس:
ابتدا فایل اسکریپت را در یک دایرکتوری مناسب مثل /usr/local/bin کپی کنید. مثلاً:
sudo cp container-watch.sh /usr/local/bin/
سپس یک فایل سرویس جدید در دایرکتوری systemd ایجاد کنید:
sudo nano /etc/systemd/system/container-watch.service
2. محتوای فایل سرویس:
فایل سرویس را بهصورت زیر تنظیم کنید:
[Unit]
Denoscription=Container Watch Service
After=docker.service
Requires=docker.service
[Service]
ExecStart=/usr/local/bin/container-watch.sh
Restart=always
User=root
[Install]
WantedBy=multi-user.target
توضیحات:
ExecStart: مسیر کامل اسکریپت شما.
Restart=always: به سرویس میگوید اگر اسکریپت متوقف شد، آن را دوباره اجرا کند.
User=root: اسکریپت به عنوان کاربر root اجرا میشود. (در صورت نیاز میتوانید کاربر دیگری را انتخاب کنید)
After=docker.service و Requires=docker.service: این خطوط تضمین میکنند که سرویس بعد از اجرای Docker شروع میشود.
3. ریلود و فعالسازی سرویس:
بعد از ایجاد فایل سرویس، systemd را ریلود کنید تا تغییرات اعمال شوند:
sudo systemctl daemon-reload
4. بررسی وضعیت سرویس:
برای مشاهده وضعیت سرویس میتوانید از دستور زیر استفاده کنید:
sudo systemctl status container-watch.service
مراحل ایجاد سرویس systemd:
1. ایجاد فایل سرویس:
ابتدا فایل اسکریپت را در یک دایرکتوری مناسب مثل /usr/local/bin کپی کنید. مثلاً:
sudo cp container-watch.sh /usr/local/bin/
سپس یک فایل سرویس جدید در دایرکتوری systemd ایجاد کنید:
sudo nano /etc/systemd/system/container-watch.service
2. محتوای فایل سرویس:
فایل سرویس را بهصورت زیر تنظیم کنید:
[Unit]
Denoscription=Container Watch Service
After=docker.service
Requires=docker.service
[Service]
ExecStart=/usr/local/bin/container-watch.sh
Restart=always
User=root
[Install]
WantedBy=multi-user.target
توضیحات:
ExecStart: مسیر کامل اسکریپت شما.
Restart=always: به سرویس میگوید اگر اسکریپت متوقف شد، آن را دوباره اجرا کند.
User=root: اسکریپت به عنوان کاربر root اجرا میشود. (در صورت نیاز میتوانید کاربر دیگری را انتخاب کنید)
After=docker.service و Requires=docker.service: این خطوط تضمین میکنند که سرویس بعد از اجرای Docker شروع میشود.
3. ریلود و فعالسازی سرویس:
بعد از ایجاد فایل سرویس، systemd را ریلود کنید تا تغییرات اعمال شوند:
sudo systemctl daemon-reload
4. بررسی وضعیت سرویس:
برای مشاهده وضعیت سرویس میتوانید از دستور زیر استفاده کنید:
sudo systemctl status container-watch.service
Forwarded from Milad Mahmoodian
https://gparted.org/download.php
GParted is a free partition manager that enables you to resize, copy, and move partitions without data loss.
gparted.org
GParted -- Download
Forwarded from Milad Mahmoodian
sudo apt update
sudo apt upgrade
sudo apt install software-properties-common apt-transport-https wget
sudo apt upgrade
sudo apt install software-properties-common apt-transport-https wget
Forwarded from Milad Mahmoodian
wget -q http://www.webmin.com/jcameron-key.asc -O- | sudo apt-key add -
Forwarded from Milad Mahmoodian
echo "deb http://download.webmin.com/download/repository sarge contrib" | sudo tee /etc/apt/sources.list.d/webmin.list
Forwarded from Milad Mahmoodian
:local logTime [/system clock get time];
:local logDate [/system clock get date];
:local interfaceName Dubai;
:local event UP;
:local logFileName "interface-logs.txt";
:local logMessage ("$logDate $logTime - Interface: $interfaceName - Event: $event");
:local fileCount [:len [/file find name="$logFileName"]];
:if ($fileCount = 0) do={/file print file="$logFileName"};
/file set "$logFileName" contents=([/file get "$logFileName" contents] . "\n$logMessage");
:local logDate [/system clock get date];
:local interfaceName Dubai;
:local event UP;
:local logFileName "interface-logs.txt";
:local logMessage ("$logDate $logTime - Interface: $interfaceName - Event: $event");
:local fileCount [:len [/file find name="$logFileName"]];
:if ($fileCount = 0) do={/file print file="$logFileName"};
/file set "$logFileName" contents=([/file get "$logFileName" contents] . "\n$logMessage");
Forwarded from Milad Mahmoodian
برای خروجی لاگ قطعی و وصلی اینترفیس ها
د ر ادامه :
/tool netwatch
add host=8.8.8.8 interval=1m up-noscript="/system noscript run LogInterfaceEvent ether1 up" down-noscript="/system noscript run LogInterfaceEvent ether1 down"
میاد توی netwatch که بگه اگر قطعی بود چه کن و اگر وصل بود چه کن
د ر ادامه :
/tool netwatch
add host=8.8.8.8 interval=1m up-noscript="/system noscript run LogInterfaceEvent ether1 up" down-noscript="/system noscript run LogInterfaceEvent ether1 down"
میاد توی netwatch که بگه اگر قطعی بود چه کن و اگر وصل بود چه کن
Forwarded from Milad Mahmoodian
YouTube
Explaining the Difference Between SSD NVMe and M2 SATA and mSATA
What is NVMe M2 SSD and M.2 SATA or mSATA - what is the difference when choosing an SSD. We show the difference between the SATA bus from PCI-E, and also help with the choice of adapter for the M2 SSD.
Best SSD on AMAZON:
SSD M2 NVMe Samsung: https://hfixt.com/nvme…
Best SSD on AMAZON:
SSD M2 NVMe Samsung: https://hfixt.com/nvme…
Forwarded from Milad Mahmoodian
YouTube
Create your own Network LAB with EVE-NG step by step
In this video, I show you how to set up a Emulated Virtual Environment and create your first lab with EVE-NG
=====DOWNLOAD=====
Windows image for EVE-NG https://drive.google.com/file/d/1PDUusIX0Iffhhe9SbR2c2C8QrdtPYu79/view
Download Cisco IOU/IOL Images Eve…
=====DOWNLOAD=====
Windows image for EVE-NG https://drive.google.com/file/d/1PDUusIX0Iffhhe9SbR2c2C8QrdtPYu79/view
Download Cisco IOU/IOL Images Eve…