<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Iman Jowkar</title>
        <link>https://virgool.io/feed/@imanjowkar99</link>
        <description>iman jowkar</description>
        <language>fa</language>
        <pubDate>2026-06-17 00:41:15</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>Iman Jowkar</title>
            <link>https://virgool.io/@imanjowkar99</link>
        </image>

                    <item>
                <title>IPv6 - part 2</title>
                <link>https://virgool.io/@imanjowkar99/ipv6-part-2-za5dmh1fjrxk</link>
                <description>خب تو پست قبلی در مورد multicast   صحبت کردیم، حالا میخوایم بریم در مورد unicast addressing  صحبت کنیم.تمام قسمت های زیر جزء ادرس های unicast  می باشند: Unique Local Address (ULA)این ادرس ها همان IP  های private  می باشند که این رنج IP  در شبکه ی WAN  توسط روترها route  نمی شود.رنج این ip  ها به صورت زیر است خب دقت کنید که چون 7 بیت اول این ادرس همیشه باید ثابت باشد، مانند تصویر بالا بیت 8 ام میتواند 0 و یا 1 باشد گه اگر 0 باشد FC00::/7 و اگر بیت 8 ام 1 باشد میشود FD00::/7.پس هرجا شما ادرس ip دیدی که با FC و یا FD  شروع می شد متوجه می شوید که این یک ادرس ULA  می باشدLoopback ip addressبرخلاف ipv4  که یک بلاک ip  را برای loopback  کنار گذاشته بودند ، در ipv6  فقط یک تک ip برای loopback  کنار گذاشتند که به صورت زیر است : Global Unicast Address (GUA)این ادرس معادل ادرس های public  می باشد و رنج آنها به صورت زیر است : Link Local Address (LLA)معادل این ip در ipv4  وجود ندارد و در ipv6  معرفی شد و رنج این IP  به صورت زیر است پس هر ip  ای که با رنج ادرس های بالا شروع شود link local  ادرس می باشد.آدرس های link local  کاربرد خاصی دارند، یکی از کاربردهای آن این است که به عنوان default gateway  برای client  ها در شبکه عمل میکند( کاربرد های دیگری هم دارد که رفته رفته با اونها آشنا میشیم).در ضمن این آدرس ip  به صورت خودکار ساخته می شود و شما نیاز نیست ان را تعریف کنید (البته خودتان نیز میتوانید آن را تغییر دهید ولی خودش ساخته میشود) در زیر به نحوه ی ساخته شدن این ادرس Ip می پردازیم : دقت کنید که scope  یک ادرس link-local  فقط در حد همان link  می باشد ( یعنی اگر دو interface  روی یک روتر ادرس link-local  یکسانی داشته باشند هیچ مشکلی به وجود نمی آید).Embeded IPv4 نوعی دیگر از ادرس ipv6  می باشد که از روی ipv4 ساخته می شود و دو روش است : یه نوع دیگه از unicast  باقی مونده که به صورت زیر است : unspecified unicast addressرنج این ادرس ip  هم به صورت زیر هستش خب تا اینجا در مورد انواع ادرس های ipv6  صحبت کردیم، در پست بعدی در مورد نحوه ی ادرس دهی به client ها صحبت میکنیم و خواهیم دید که چگونه در ipv6  میتوان به client ها ادرس ip تخصیص داد و همچنین یه شبکه ای در gns3  پیاده سازی میکنیم و نحوه ی کانفیگ اون شبکه رو باهم انجام میدیم.در ضمن یه ویدیو خیلی خوب راجع به IPv6  توی اپارات دیدم که خیلی خوب توضیح داده بود لینکشو در زیر قرار میدم امیدوارم که لذت برده باشید.لینک اپارت</description>
                <category>Iman Jowkar</category>
                <author>Iman Jowkar</author>
                <pubDate>Mon, 15 Jul 2024 19:54:02 +0330</pubDate>
            </item>
                    <item>
                <title>IPv6-part1</title>
                <link>https://virgool.io/@imanjowkar99/ipv6-part1-ohohcmi1ro3s</link>
                <description>تو این پست میخوام در مورد IPv6  صحبت کنم. دلیل به وجود اومدن ورژن 6 تموم شدن IP  های موجود در ورژن 4 بود، چون IPv4 کلا 32 bit بود که جمعا میتونه 4 میلیاردو خورده ای به ما ip  بده ولی توی ورژن 6 دیگه خوشبختانه مشکل کمبود IP  حل شده چون 128bit  هستش و خودتون یه محاسبه کنید متوجه میشید که چه تعداد IP  میتونه داشته باشه.تعداد کل ip های موجود در ipv4تعداد کل ip های موجود در ipv6بعد از اینکه دوستان به مشکل کم بودن تعداد ip  ها در ورژن 4 برخوردند چند راه حل مطرح کردند :long-term solution short-term solutionراه حل long-term این بودن که آینده همه باید سوئیچ کنن روی ipv6  ولی تو راه حل short-term امدن  و NAT   و همچنین مبحث public and private ip ها رو مطرح شد.پس بطور کلی تو راه حل کوتاه مدت دو روش زیر ارائه شد:NAT (Network Address Translation)Public and Private IP addressingخب بریم سراغ اصل داستان که اونم IPv6  هستش:این ip از 128bit  تشکیل شده است که برمبنای HEX  می نویسنش و از 8 قسمت hexted تشکیل شده استحالا در زیر چندتا مثال میزنیم تا بهتر با نحوه ی نمایش این ip آشنا بشیم و چند تا نکته در مورد قواعد ساده سازی اون هم صحبت میکنیمانواع روش های ادرس دهی در ipv4 و ipv6:روش های ادرس دهی در ipv4روش های ادرس دهی در ipv6حالا میخوایم در مورد هر کدام از روش هاش addressing  در ipv6  صحبت کنیم و رنج هر کدومشون هم بشناسیم. با ادرس دهی multi-cast  شروع میکنیم:Multi-Castمنظور از موقت این است که میتوانیم خودما یک ادس از این رنج برداریم و در شبکه ی خود از آنها استفاده کنیم ولی منظور از دائم این است که ادرس هایی که از قبل تعیین شدن برای یه مقاصد خاص مثل ospf و eigrp و ...و scope هم تعیین کننده ی این است که این ادرس multicast  تا کجای شبکه میتواند پیش رود. که رفته رفته با اینها بیشتر اشنا میشیم، زیاد حالا در گیر اینها نشید.خوبه به سطر اول و دوم این جدول یه نگاهی بیندزید : فارغ از اینکه از چه ورژنی از IP استفاده میکنیم هر موقع روی یک interface روتر یک multicat-address فعال شود ، به سبب فعال شدن این ادرس IP یک ادرس mac multicast نیز فعال میشود که فرمت آن به صورت از است:فرمت mac multicast در ipv6حال در ipv4  فرمت این mac-address به صورت زیر است:فرمت multicast mac در ipv4خب تا اینجا تقریبا اکثر مباحث مربوط به multicast در حد ابتدایی را پوشش دادیم. در قسمت بعدی در مورد unicast address ها صحبت میکنیم.</description>
                <category>Iman Jowkar</category>
                <author>Iman Jowkar</author>
                <pubDate>Tue, 02 Jul 2024 00:45:16 +0330</pubDate>
            </item>
                    <item>
                <title>EIGRP - part 1</title>
                <link>https://virgool.io/@imanjowkar99/eigrp-part-1-daijfri4wbky</link>
                <description>بیاید یکم در مورد پروتکل محبوب eigrp  صحبت کنیم و همچنین یه سناریو بندازیم وسط کانفیگش کنیم و رفته رفته به جزئیات بیشتری در موردش پی ببریم.این پروتکل تا همین چند سال پیش انحصاری شرکت سیسکو بود یعنی اینکه فقط روی روترهای سیسکو میشد ازش استفاده کرد، اما فک کنم سال 2016 بود که سیسکو این پروتکل رو برای IETF  فرستاد تا به یک استاندارد تبدیلش کنن و بشه روی سایر روترهای دیگه که مال خود سیسکو نیستند هم بشه ازش استفاده کرد (مثل ospf  یا RIP که شما هم روی روترهای میکروتیک داریش و هم روی روتری های سیسکو)کلا اگه بخوایم یه تقسیم بندی بین routing protocol  ها داشته باشیم: دسته بندی routing protocol  هاپروتکلeigrp از الگوریتم DUAL  برای پیدا کردن بهترین میسر استفاده میکنه، برای همینه که در جدول مسیر یابی روتر ها، وقتی شما از دستور show ip route استفاده میکنی اول هر خط route  یه کلمه D  میبینی که مشخص کننده ی همون الگوریتم DUAL  هستش که eigrp  ازش استفاده می کنه.اگه به تصویر زیر دقت کنی متوجه میشی چه میگم.خروجی دستور show ip routeخب برسیم به سناریویی که میخوایم کانفیگش کنیمخب یکم بریم جلو تر.این پروتکل محبوب (البته برای من ، نمیدونم چقد شما باش حال میکنین)  از PDM استفاده میکنه که میتونه برای network  protocol های مختلفی routing  رو انجام بده مثلا شما میتونی با نصب یه PDM  از eigrp بخواهی که برای apple talk بیاد و عملیات routing رو انجام بده، اما آنچنان چیز بدرد بخوری هم نیست چون الان دیگه کل شبکه ها  با IPV4 , IPV6 پیاده سازی شده و عملا این ورژنی از EIGRP هم که روی دستگاها پیاده سازی شده فقط برای ipv4 , ipv6 میتونه روتینگ انجام بدن.کلمه ی PDM هم مخفف Protocol Dependent Module هستش. حالا بریم و این سناریویی که گذاشتیم بالا رو کانفیگ کنیم.کلا اگه بخوای eigrp رو پیاده سازی کنی به دوصورت میتونی کانفیگ کنیClassic Configuration (Numberd Mode)New Configurations (Named Mode)روش اول قدیمی هستش ( البته به این معنی نیست که استفاده نمیشه، برعکس این روش خیلی زیاد هم استفاده میکشه) توجه کنید که این دو روش با هم compatible هستن و میشه روی بعضی روتر ها با روش اول و روی بعضی دیگه با روش دوم کانفیگ کرد، اما اگه دارید از صفر شبکه ای رو میارید بالا بهتره از روش دوم که جدیدتره یعنی Named Mode  استفاده کنید چون ویژگی های جدید دیگه تو این روش میان و توی روش قبل نمیان.در ضمن نحوه ی محاسبه ی metric  تو این دو روش با هم فرق داره که جلو تر فرمول محاسبه ی رو عرض میکنم خدمتتون، ولی اگه تو یه شبکه روی بعضی روتر ها از روش named و روی بعضی دیگه از روش numberd  استفاده کردی metric  ها به هم تبدیل میشن ( ولی شما اصلا اگه بخواید کانفیگ کنید از یه روش استفاده کنید چون اگه هر دو روش رو باهم استفاده کنید route هایی که از روش named  یادگرفته شده اند رو ارجح تر میدونه نسبت به روش numberd ).ولی ما تو این سناریو از هر دو روش برای کانفیگ eigrp  روی روترها استفاده میکنیم تا ببینیم اینا واقعا با هم compatible  هستن و رفته رفته در مورد تفاوت هاشون توی پست های بعدی صحبت میکنیمروترهای R5, R3  را با روش named و روترهای R2,R4 را با روش numberd کانفیگ میکنیم.دقت کنید که کل کانفیگ ها رو گذاشتم تو یه فایل و قرارش دادم توی گیتهاب، و در زیر فقط به نحوه ی کانفیگ کردن eigrp میپردازیم.کانفیگ کردن با روش numberd mode: خیلی راحت میای از دستور زیر استفاده مکینی، تو این روش همون لحظه که داری eigrp رو فعال میکنی بهش میگی که توی AS=1  باید کار کنی و بعدش اون network هایی که قرار publish  کنه رو بهش معرفی میکنی.router eigrp 1
network 10.10.25.2 0.0.0.0
network 10.10.23.2 0.0.0.0حات دوم Named Mode: شاید فک کنی این حالت خیلی سخته ولی کم کم میفهمی که کانفیگ کردن eigrp  با این روش خیلی سرراست هستش و تقریبا هر کانفیگی در مورد eigrp  میخوای اعمال کنی تو همین مد باید کانفیگ کنی ولی تو روش قبل بعضی از کانفیگ هارو باید بری و زیر interface ها بزنی، حالا زیاد نگرانش نباشید کم کم بهش میرسیم.router eigrp my-eig
address-family ipv4 unicast autonomous-system 1
network 10.10.25.5 0.0.0.0
network 10.10.45.5 0.0.0.0به صورت خلاصه کارهای زیر انجام شده: خیلی ساده اول اومدم گفتم که eigrp رو فعال کن و اسمش رو بزار my-eig بعدش گفتیم که میخوای برای ipv4  عملیات routing  رو انجام بدی توی AS=1 و در آخر هم اومدیم آدرس network ها رو بهش دادم و گفتیم برو و در بسته هایی که ارسال میکنی این دو Network  رو به سایر روتر ها اعلام کن  که بلدشون هستی.خیلی خوبه وقتی دارید eigrp رو فعال میکنید حتما از یه متد authentication  استفاده کنید. برخلاف ospf  که میتوان authentication  از نوع cleartext  نیز استفاده کرد در eigrp حتما باید از یک روش hashing استفاده کرد، که در حالت  numberd mode  فقط از MD5 پشتیبانی میکند  اما در حالت named از دو روش MD5 , sha256 پشتیبانی میکند. بریم ببنیم که چطور کانفیگ میشه ( در ضمن authentication  به صورت per-interface  می باشد)روشن اول Numberd Mode:  در این روش فقط میتوان از md5  استفاده کرد. و مراحل به صورت زیر استاول یه key-chain  تعریف کنید: بعد کافیه بری زیر اون ineterface مورد نظر و md5 رو فعال کنیkey chain R2-keychain
key 1
key-string test1
int fa 1/0
ip authentication mode eigrp 1 md5
ip authentication key-chain eigrp 1 R2-keychainتو روش دوم یعنی حالت named خیلی راحت میری تو مسیر زیر و فعالش میکنی: البته کانفیگ زیر حالت sha256 رو فعال میکنه،router eigrp my-eig-1
address-family ipv4 unicast autonomous-system 8
network 10.10.23.2 0.0.0.0
network 10.10.25.2 0.0.0.0

af-interface fast 1/0
authentication mode hmac-sha-256 test
hello-interval 10
hold-time 40
exit-af-interface
  اما میتونیم با md5  هم فعال کنیم که کانفیگش میشه مثل زیرkey chain R2-keychain 
key 1 
key-string test1

router eigrp myeig-1
address-family ipv4 unicast autonomous-system 1
network 10.10.58.8 0.0.0.0
network 10.10.89.8 0.0.0.0
af-interface serial 5/0
authentication mode md5
authentication key-chain R2-keychain
خب بنظرم برای این قسمت خوبه، حالا تو قسمت های بعدی مباحث رو کم کم تکمیل ترش میکنیم. و در ضمن کانفیگ کل سناریو هم گذاشتم تو github ، اگه کانفیگ هارو خواستین  برید تو github  و برش دارید.</description>
                <category>Iman Jowkar</category>
                <author>Iman Jowkar</author>
                <pubDate>Wed, 19 Jun 2024 21:02:19 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش نصب ArgoCD بر روي کلاستر کوبرنتيس</title>
                <link>https://virgool.io/@imanjowkar99/install-argocd-on-kubernetes-cluster-dhvkpln1muv3</link>
                <description>در اين سري از پست ها قصد دارم تا شما را با ArgoCD  آشنا کنم. مواردي که در اين پست به آن مي پردازيم به شرح زير است: معرفي ArgoCDنصب argocd بر روي cluster کوبرنتيس معرفي ArgoCD:اين روزها کمتر کسي است که در حوزه ي برنامه نويسي کار کند و اسمي از واژه ي devops را نشنيده باشد. در اين پست قصد تعريف و مفاهيم دواپس را ندارم زيرا کسي که در حال مطالعه ي اين پست است حتما با اين مفاهيم آشنايي دارد.همانطور که مي دانيد يکي از مفاهيم خيلي مهم در زمينه ي DevOps فرايند CI/CD مي باشد که در تصوير زير اين فرآيند به خوبي به تصوير کشيده شده است. با توجه به تصوير بالا مشاهده مي شود که يکي از بخش هاي مهم بخش deploy کردن app  به صورت مداوم مي باشد، يعني هروقت ورژن جديدي از نرم افزار توليد شد و نرم افزار build  شد نوبت به deploy کردن آن بر روي سرور Production   مي شود که در اين قسمت ArgoCD   اين عمليات را انجام ميدهد. در اصل کاري که ArgoCD  انجام مي دهد اين است که به صورت پيوسته يک repo   را برروسي ميکند که آيا ورژن جديدي از نرم افزار توليد شده يا خير، اگر توليد شده آن را برداشته و در سرور Prodcution  پياده سازي مي کند(البته اگر  نسخه ي جديد با مشکلي روبه رو شد ArgoCD به صورت خودکار به روي ورژن قبلي rollback مي کند). نصب ArgoCD: براي نصب ArgoCD ما احتياج به يک کلاستر کوبرنتيس داريم. کلاستر ما تشکيل شده از شش نود مي باشد که سه تاي آنها در نقش master node و سه تاي ديگر  در نقش worker عمل مي کنند. اگر در سرور master دستور زير را وارد کنيد اطلاعات کلي نود ها و وضعيت کلاستر را به شما نشان مي دهد. kubectl get nodes -o wideهمانطور که مشاهده مي کنيد کلاستري ما تشکيل شده از 6 نود مي باشد که از kubelet 1.24  استفاده ميکند و به عنوان container run time  بجاي docker  از containerd  استفاده ميکند (زيرا از ورژن 1.24 کوبرنتيس ديگر از docker پشتيباني نمي کند).براي نصب ArgoCD از وبسايت آن استفاده کرده ايم. براي نصب ArgoCD  در ابتدا يک namespace به همين نام ايجاد مي کنيم kubectl create namespace argocdسپس يک directory به نام argocd بسازيد و وارد آن شويد.  mkdir argocd
cd argocd/
در مرحله بعد لينکي که در وبسايت است را با دستور wget دريافت کنيد(دقت کنيد هميشه از همان وبسايت که در بالا معرفي کرديم فايل را دانلود کنيد شايد تغييراتي در yaml فايل ايجاد شده باشد ).wget https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yamlبا اجراي اين دستور فايل yaml اي براي شما در همين مسير دانلود مي شود. که نام فايل install.yaml  است. حال با دستور زير آن را پياده سازي کنيدkubectl apply -f install.yaml  -n argocdبراي مانيتور کردن وضعيت اين که پادها در چه وضعيتي هستند از دستور زير کمک بگيريدwatch kubectl get all -n argocdبسته به سرعت اينترنت پادها بعد از مدتي روي سرورها پياده سازي ميشوند(به دليل دانلود کردن image ها) که در نهايت خروجي دستور بالا به شرح زير است.همانطور که مشاهده مي کنيد تمام پاد ها در حالت running هستند. حال اگر بخواهيم از طريق web ui به اين ArgoCD دسترسي داشته باشيم بايد سرويس argocd-server را به صورت NodePort تعريف کنيم تا بتوانيم از بيرون به اين app دسترسي داشته باشيم.با دستور زير اين عمليات را انجام دهيد: kubectl patch svc argocd-server -n argocd -p &#039;{&amp;quotspec&amp;quot: {&amp;quottype&amp;quot: &amp;quotNodePort&amp;quot}}&#039;حال با دستور زير پورتي که براي argocd باز شده را ميتوانيد مشاهده کنيد: kubectl get svc -n argocdکه خروجي به صورت زير است که خط قرمز نشان دهنده ي پورتي است که ميتوانيم از بيرون به آن دسترسي داشته باشيممشاهده کنيد که ميتوان از پورت 30033 به argocd دسترسي پيدا کرد.(دقت کنيد که اين پورت به صورت random  مي باشد و ممکن است براي شما متفاوت باشد).حال وارد يک مرورگر شويد و با زدن IP  يکي از worker ها(مهم نيست که کدام worker است) و پورت به محيط گرافيکي ArgoCD دست پيدا کرد. براي مثال ما از IP زير استفاده ميکنيمhttps://192.168.9.50:30033اگر همه مراحل قبل را به درستي رفته باشيد بايد صحفه ي اول argocd به صورت زير براي شما به نمايش در آيدبه صورت پيش فرض يوزر argocd  با نام admin تعريف شده است و براي پيدا کردن پسورد کافي است که دستور زير را در سرور master وارد کنيد kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath=&amp;quot{.data.password}&amp;quot | base64 -d; echoخروجي اين دستور رمز argocd مي باشد. (حتما بعد از login کردن پسورد را از قسمت User Info تغيير دهيد). در قسمت هاي بعد قصد دارم تا يک app که به صورت containerized توسعه يافته است را با argocd را پياده سازي کنم و شما را با فرايند CD و همچنين قابليت هاي ArgoCD  آشنا کنم. اميدوارم که اين براتون مفيد بوده باشه و بتونيد در محيط هاي عملياتيتون از ArgoCDاستفاده کنيد امیدوارم با خوندن این مقاله مسير پيشرفت در اين حوزه  براتون راحت تر بشه . اگر نظری یا سوالی دارین زیر همین پست پاسخگو هستم.</description>
                <category>Iman Jowkar</category>
                <author>Iman Jowkar</author>
                <pubDate>Fri, 17 Jun 2022 00:27:32 +0430</pubDate>
            </item>
            </channel>
</rss>