<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های علی ذوقی</title>
        <link>https://virgool.io/feed/@alizowghi</link>
        <description>علاقه مند به کلود، بنیانگذار پلتفرم ابری متن باز vuki و بنیانگذار هایو</description>
        <language>fa</language>
        <pubDate>2026-06-16 10:34:13</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>علی ذوقی</title>
            <link>https://virgool.io/@alizowghi</link>
        </image>

                    <item>
                <title>دور زدن تحریم با یک سرور خیلی ارزان (Trojan + IPv6)</title>
                <link>https://virgool.io/@alizowghi/%D8%AF%D9%88%D8%B1-%D8%B2%D8%AF%D9%86-%D8%AA%D8%AD%D8%B1%DB%8C%D9%85-%D8%A8%D8%A7-%DB%8C%DA%A9-%D8%B3%D8%B1%D9%88%D8%B1-%D8%AE%DB%8C%D9%84%DB%8C-%D8%A7%D8%B1%D8%B2%D8%A7%D9%86-trojan-ipv6-ekzg4vof90yi</link>
                <description>راه‌اندازی سرویس دور زدن تحریم با یک سرور خیلی ارزان (Trojan + IPv6)برای راه‌اندازی یک سرویس پایدار عبور از تحریم لازم نیست سرور گرون بخری؛ با یک VPS سبک هم میشه سرویس خوبی ساخت. من این سرویس رو با پلن nano هایوفلش بالا آوردم؛ سروری با ۲۵۶ مگ رم که در صورت نیاز تا ۵۱۲ مگ اتواسکیل میشه و فقط IPv6 داره. مصرف واقعی Trojan روی این سرور حدود ۸۰ مگ رم بود.---چرا Trojan؟Trojan به‌خاطر شبیه بودن ترافیکش به HTTPS و استفاده از TLS، یکی از پروتکل‌های مقاوم در برابر فیلترینگه و روی سرورهای سبک هم خوب کار می‌کنه.---راه‌اندازی سریع Trojan با SSL Self-Signedبرای راه‌اندازی بدون دامنه، یک گواهی Self-Signed بساز:sudo mkdir -p /etc/trojancd /etc/trojansudo openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 \-keyout server.key -out server.crt \-subj &quot;/CN=google.com&quot;نصب Trojan:sudo apt updatesudo apt install trojan -y---کانفیگ سرور (برای VPS فقط IPv6)فایل:sudo nano /etc/trojan/config.jsonنمونهٔ مینیمال:{  &quot;run_type&quot;: &quot;server&quot;,  &quot;local_addr&quot;: &quot;::&quot;,  &quot;local_port&quot;: 443,  &quot;password&quot;: [&quot;mypassword123&quot;],  &quot;ssl&quot;: {    &quot;cert&quot;: &quot;/etc/trojan/server.crt&quot;,    &quot;key&quot;: &quot;/etc/trojan/server.key&quot;,    &quot;alpn&quot;: [&quot;http/1.1&quot;]  }}فعال‌سازی:sudo systemctl restart trojan---تنظیم کلاینت اندرویدی (v2rayNG)در v2rayNG یک پروفایل Trojan بساز:Type: TrojanAddress: [YOUR_IPV6]Port: 443Password: mypassword123Allow insecure: ONSNI: google.com(برای IPv6 آدرس را داخل کروشه بنویس.)---نسخهٔ JSON برای Import{  &quot;run_type&quot;: &quot;client&quot;,  &quot;remote_addr&quot;: &quot;YOUR_IPV6&quot;,  &quot;remote_port&quot;: 443,  &quot;password&quot;: [&quot;mypassword123&quot;],  &quot;ssl&quot;: {&quot;verify&quot;: false, &quot;sni&quot;: &quot;google.com&quot;}}</description>
                <category>علی ذوقی</category>
                <author>علی ذوقی</author>
                <pubDate>Sat, 29 Nov 2025 19:32:50 +0330</pubDate>
            </item>
                    <item>
                <title>شبکه مجازی OVN</title>
                <link>https://virgool.io/@alizowghi/%D8%B4%D8%A8%DA%A9%D9%87-%D9%85%D8%AC%D8%A7%D8%B2%DB%8C-ovn-tp9uprquo0ej</link>
                <description>اگر شما هم مثل من علاقه زیادی به مباحث کلود داشته باشید احتمالا به این فکر کردید که بتونید سرورهای فیزیکی خودتون رو به صورت یکپارچه مدیریت کنید. اصلا کلود برای همینه که شما بتونید منابعی مثل پردازنده، رم و فضای ذخیره‌سازی رو تبدیل به نیازمندیهای پردازشی و شبکه‌ای کنید.در کلود اصولا دیگه برای هر امکانی نمیرن یه دستگاه بخرن! شما میایی یک تعداد سرور با هارد میخری و فقط با یه سوئیچ این سرورها رو به هم وصل میکنی و بعدش دیگه همه چی با نرم افزار هست.یکی از این نرم افزارها که خیلی هم قدرتمند و قوی هست و الان دیگه زیرساخت شبکه اوپن استک رو داره پشتیبانی میکنه OVN یا Open Virtual Network هست.open virtual networkدر واقع به طور ساده بخوام بگم ovn میاد برای شما گروه‌های مختلف ایجاد میکنه و میتونید سرورهای مجازی رو توی اون گروه‌ها قرار بدید. در واقع توی لایه ۲ و۳ برای شما گروه بندی انجام میده بدون اینکه بخواید ویلن داشته باشید یا کار خاصی انجام بدید یا دستگاهی مثل سوئیچ داشته باشید. البته اینم بگم که همه این کارها رو میتونید با کامندلاین یا کدنویسی انجام بدید که میشه گفت این مزیت قابل توجهیه.یه مثال بزنم و برم سراغ آموزش نصب:من اومدم دو تا سرور مجازی با قابلیت nested virtualization ساختم و در هر کدوم یک سرور مجازی راه اندازی کردم. یک سوئیچ مجازی درست کردم و اومدم دو تا پورت براش تعریف کردم و هر کدوم از سرورها رو به یک پورت اون سوئیچ زدم. الان میتونم از هرکدوم از این دو سرور اون یکی رو با آی پی داخلی پینگ بگیرم و ترافیک از طریق ovn و تانلی که براساس پروتکل GENEVE ساخته بین نودها جابجا میشه.برای نصب در محیط تستی پیشنهادم استفاده از LXD ورژن ۴ به بالا هست که بتونید توش علاوه بر کانتینر، سرور مجازی هم بسازید.پیش نیاز نصب:سه سرور مخصوص دیتابیس و کنترلر ovnدو سرور بعنوان ورکر که در طراحی واقعی سرورهای سخت افزاری هستند که سرورهای ابری روی اون قرار میگیرنبا دستورات زیر میام ۳ تا سرور کانتینری و ۲ تا سرور مجازی درست میکنم:lxc launch images:ubuntu/focal node1
lxc launch images:ubuntu/focal node2
lxc launch images:ubuntu/focal node3
lxc launch images:ubuntu/focal node4 --vm
lxc launch images:ubuntu/focal node5 --vmروی node1, node2, node3 دستورات زیر رو بزنید:sudo apt install ovn-central ovn-host
systemctl stop ovn-central
nano /etc/default/ovn-centralو سپس محتوای زیر رو در هر نود به شکل زیر تغییر بدید:OVN_CTL_OPTS=&amp;quot \     --db-nb-addr=&lt;node1-ip&gt; \     --db-nb-create-insecure-remote=yes \     --db-sb-addr=&lt;node1-ip&gt; \     --db-sb-create-insecure-remote=yes \     --db-nb-cluster-local-addr=&lt;local&gt; \     --db-sb-cluster-local-addr=&lt;local&gt; \     --ovn-northd-nb-db=tcp:&lt;node1-ip&gt;:6641,tcp:&lt;node2-ip&gt;:6641,tcp:&lt;node3-ip&gt;:6641 \     --ovn-northd-sb-db=tcp:&lt;node1-ip&gt;:6642,tcp:&lt;node2-ip&gt;:6642,tcp:&lt;node3-ip&gt;:6642&amp;quotبه جای &lt;local&gt; آی پی سروری که داخلش دارید فایل گفته شده رو ویرایش میکنید رو میذارید.حالا دستور زیر رو در node1, node2, node3 بزنید:systemctl start ovn-centralخب الان ما یک کلاستر ovn داریم که شواهد نشون میده همه چی درسته. دستور زیر رو توی نودهای یک تا ۳ بزنید و خروجی رو بررسی کنید:ovn-sbctl showخب حالا چه کنیم؟ باید بیاییم سرورهای node4 , node5 رو بعنوان ورکر که قراره میزبان سرورهای ابری ما باشند رو به ovn وصل کنیم.sudo apt install ovn-host
systemctl enable ovn-hostروی تمام نودهای ۱ تا ۵ دستور زیر رو بزنید تا Open vSwitch راه اندازی بشه:sudo ovs-vsctl set open_vswitch .    external_ids:ovn-remote=tcp:&lt;node1-ip&gt;:6642,tcp:&lt;node2-ip&gt;:6642,tcp:&lt;node3-ip&gt;:6642    external_ids:ovn-encap-type=geneve  external_ids:ovn-encap-ip=&lt;local&gt;به جای &lt;local&gt; آی پی سروری که داخلش دارید دستور رو میزنید بذارید.الان شما تونستید کار بزرگی کنید. یک کلاستر شبکه دارید که توش میتونید هرچی سوئیچ و روتر دلتون خواست ایجاد کنید.بریم یه تست بزنیم. سناریو:۱- یک سوئیچ مجازی درست میکنم بنام network1۲- دو تا پورت براش تعریف میکنم۳- هر پورت رو توی نودهای ۴ و ۵ ست میکنم ببینم پینگ هم رو دارن یا نه!گام اول:  یک سوئیچ مجازی درست میکنم بنام network1ovn-nbctl ls-add network1این دستور رو توی یکی از نودهای یک تا ۳ باید بزنیم اگرم میخواین روی نودهای ورکر بزنید باید آدرس دیتابیس ovn رو بدید اینطوری:ovn-nbctl ls-add network1 --db=tcp:&lt;node1-ip&gt;:6641گام دوم: دو تا پورت تعریف میکنمovn-nbctl lsp-add network1 vm1
ovn-nbctl lsp-add network1 vm2
ovn-nbctl lsp-set-addresses vm1 &amp;quot40:44:00:00:00:01 192.168.0.11&amp;quot
ovn-nbctl lsp-set-addresses vm2 &amp;quot40:44:00:00:00:02 192.168.0.12&amp;quotگام سوم: هر پورت رو توی نودهای ۴ و ۵ ست میکنم ببینم پینگ هم رو دارن یا نه!روی node4:ovs-vsctl add-port br-int vm1 -- set Interface vm1 type=internal -- set Interface vm1 external_ids:iface-id=vm1
ip netns add vm1
ip link set vm1 netns vm1
ip netns exec vm1 ip link set vm1 address 40:44:00:00:00:01
ip netns exec vm1 ip addr add 192.168.0.11/24 dev vm1
ip netns exec vm1 ip link set vm1 upروی node5:ovs-vsctl add-port br-int vm2 -- set Interface vm2 type=internal -- set Interface vm2 external_ids:iface-id=vm2
ip netns add vm2
ip link set vm2 netns vm2
ip netns exec vm2 ip link set vm2 address 40:44:00:00:00:02
ip netns exec vm2 ip addr add 192.168.0.12/24 dev vm2
ip netns exec vm2 ip link set vm2 upشاید براتون سوال شده باشه یعنی چی این کار؟؟ اومدم بجای ساخت سرور، یه لینوکس نیم اسپیس ساختم که یعنی سرور مجازیه و توش یه اینترفیس ساختم و به ovn گفتم اینو وصل میکنم به پورت تو. مثلا توی نود۴ وصلش کردم به پورت vm1 و نود۵ به پورت vm2حالا بریم تست پینگ:روی نود ۴:ip netns exec vm1 ping 192.168.0.12 -c2و روی نود ۵:ip netns exec vm2 ping 192.168.0.11 -c2در کمال ناباوری پینگ هم رو دارن :)</description>
                <category>علی ذوقی</category>
                <author>علی ذوقی</author>
                <pubDate>Mon, 27 Jun 2022 13:05:52 +0430</pubDate>
            </item>
                    <item>
                <title>آشنایی کوتاه با open vswitch</title>
                <link>https://virgool.io/@alizowghi/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%B9%D9%85%D9%84%DB%8C-%D8%A8%D8%A7-open-vswitch-elpd8xfp4tww</link>
                <description>اما Open vSwitch چیست ؟هدف اصلی این ابزار بر ایجاد و مدیریت شبکه بصورت خودکار و داینامیک در سطح وسیعی از سرورهای لینوکسی هست. یعنی هم بتونیم با اسکریپت خودمون اینترفیسهای مجازی رو ایجاد، مدیریت، حذف و مونیتور کنیم.تاکید خود Open vSwitch بر مولتی سرور بودن قابلیت مدیریت و ایجاد شبکه هست که طبیعتا در محیطهای کلود این کاربرد بسیار به چشم می آید.برای اینکه مفهوم vSwitch را بهتر بفهمیم میرم سراغ یه مثال ساده که شکل زیر نشون میده میخوایم چه کنیم:Open vSwitch with linux network namespaceگامها:۱- ایجاد دو network namespace به نامهای ns1 و ns2۲- ساخت زوج پورت اینترفیس veth1 و veth2 و اتصال آنها بهم ۳- ساخت زوج پورت اینتفریس veth3 و veth4 و اتصال آنها بهم۴- انتقال پورتهای veth1, veth2 به ns1۵- انتقال پورتهای veth3,veth4 به ns2۶- آی پی دادن به پورتهای حاضر در ns1 و ns2۷- ساخت vSwitch۸- اتصال veth2,veth4 به vSwitch ایجاد شده۹- بررسی اتصال۱۰- آی پی دادن به vSwitch و دسترسی به اینترفیسهای داخل namespace ها از طریق هاست (لینوکسی که روی آن سوئیچ را ایجاد کردیم)گام ۱: ایجاد دو network namespace به نامهای ns1 و ns2ip netns add ns1
ip netns add ns2گام ۲: ساخت زوج پورت اینترفیس veth1 و veth2 و اتصال آنها بهمip link add veth1 type veth peer name veth2گام ۳: ساخت زوج پورت اینتفریس veth3 و veth4 و اتصال آنها بهمip link add veth3 type veth peer name veth4گام ۴: انتقال پورتهای veth1, veth2 به ns1ip link set veth1 netns ns1گام ۵: انتقال پورتهای veth3,veth4 به ns2ip link set veth3 netns ns2گام ۶: آی پی دادن به پورتهای حاضر در ns1 و ns2ip netns exec ns1 ifconfig veth1 10.10.11.1/24 up 
ip netns exec ns2 ifconfig veth3 10.10.11.2/24 upحالا اگر از داخل فضانام ns1 پینگ آی پی 10.10.11.2 گرفته شود جواب گرفته نمی‌شود چون این دو نتورک کاملا ایزوله هستند.ip netns exec ns1 ping 10.10.11.2گام ۷: ساخت vSwitchovs-vsctl add-br vSwitchگام ۸: اتصال veth2,veth4 به vSwitch ایجاد شدهovs-vsctl add-port vSwitch veth2
ovs-vsctl add-port vSwitch veth4
ifconfig veth2 up
ifconfig veth4 upگام ۹: بررسی اتصالip netns exec ns1 ping 10.10.11.2 گام ۱۰: آی پی دادن به vSwitch و دسترسی به اینترفیسهای داخل namespace ها از طریق هاستifconfig vSwitch 10.10.11.3/24 up
ping 10.10.11.1
ping 10.10.11.2تمام!</description>
                <category>علی ذوقی</category>
                <author>علی ذوقی</author>
                <pubDate>Sat, 18 Jun 2022 16:22:36 +0430</pubDate>
            </item>
            </channel>
</rss>