پروکسی سروری است که بین رایانه شما (کلاینت) و سرور وب سایتی که می خواهید از آن بازدید کنید (اینترنت) قرار می گیرد. این می تواند درخواست های شما را فیلتر، احراز هویت و حافظه پنهان کند.

Transparent Proxy

پروکسی شفاف

 یک پروکسی شفاف دقیقاً همین کار را می کند . در حالی که “نامرئی” است. به عبارت دیگر، مشتریانی که ترافیک آنها از طریق یک پروکسی شفاف هدایت می شود، از وجود آن آگاه نیستند.

در اینجا، V2Ray به عنوان یک پروکسی شفاف Transparent Proxy استفاده می شود که به شما امکان می دهد به وب سایت های مسدود شده برای همه دستگاه های یک LAN دسترسی داشته باشید، همانطور که برخی افراد آنرا پروکسی روتر Router Proxy می نامند. با این حال، ما ترجیح می دهیم آن را یک پروکسی gateway proxy دروازه بنامیم تا یک پروکسی روتر. مطمئناً استفاده از یک روتر خانگی به عنوان یک پروکسی دروازه امکان پذیر است زیرا اکثر روترهای خانگی می توانند به عنوان یک دروازه رفتار کنند. هنگامی که به عنوان پروکسی دروازه پیکربندی شد، همه دستگاه های موجود در LAN می توانند به وب سایت های سانسور شده دسترسی داشته باشند. پروکسی Gateway همچنین می تواند به عنوان یک پروکسی جهانی عمل کند و شما را از نصب V2Ray بر روی هر دستگاه نجات دهد. هنگامی که پیکربندی به روز می شود، فقط باید تنظیمات را در دروازه تغییر دهید. برخی از مردم می گویند به نظر می رسد که اصلاً دیوار مسدود کننده ای وجود ندارد. با این وجود، توصیه می کنیم قبل از استقرار کورکورانه پروکسی شفاف V2Ray، ابتدا محیط شبکه آن را ارزیابی کنید.

پروکسی شفاف برای شرایط زیر مناسب است:

  • شما دستگاه های LAN زیادی در شبکه محلی خود دارید، مانند دفاتر، آزمایشگاه ها و خانواده های پرجمعیت.
  • دستگاه(های) شما نمی توانند به تنهایی یک پروکسی مانند Chromecast، TV box و غیره راه اندازی کنند.
  • شما می خواهید که تمام ترافیک دستگاه(های) شما از طریق یک پروکسی به اینترنت دسترسی داشته باشد.

#طرفداران

در واقع، V2Ray مدتی است که به عنوان یک پروکسی شفاف پشتیبانی می شود. با این حال، به دلیل برخی از مشکلات DNS، در آن زمان خیلی راحت نبود. با این حال، اکنون داستان متفاوتی است. زیرا V2Ray به عنوان یک پروکسی شفاف می تواند:

  1. حل آلودگی مشکل DNS به دامنه های مسدود شده توسط فایروال بزرگ ایران Iran Greate FireWall.
  2. نه تنها با آلودگی DNS که در بالا ذکر شد مقابله کنید، بلکه در عین حال دامنه های ایرانی را با استفاده از CDN ایرانی (لیست وب سایتها و آی پی های ایرانی )حل کنید.
  3. تا زمانی که سیستم از V2Ray و iptables پشتیبانی می کند، مشکلات ۱ و ۲ را بدون نیاز به نرم افزار خارجی یا DNS خود ساخته حذف کنید.
  4. از ویژگی مسیریابی قدرتمند و انعطاف پذیر V2Ray بدون حفظ جدول مسیریابی استفاده کنید.

#آماده سازی

  • کسی که قادر به حل مشکلات در موقعیت های خود است.
  • یک VPS که V2Ray را نصب کرده است که IP آن را فرض می کنیم ۱۱۰.۲۳۱.۴۳.۶۵.
  • دستگاهی با iptables، مجوز روت، و سیستم لینوکس، که IP آن را فرض می کنیم ۱۹۲.۱۶۸.۱.۲۰، با V2Ray که به عنوان یک کلاینت اجرا می شود. این دستگاه می تواند یک روتر، یک برد توسعه، یک رایانه شخصی، یک ماشین مجازی یا یک دستگاه اندروید باشد که در اینجا به یک دروازه اشاره می شود. ما استفاده از سیستم MT7620 را برای استقرار به عنوان یک پروکسی شفاف توصیه نمی کنیم، زیرا عملکرد محدودی دارد و بسیاری از سیستم عامل آنها به FPU دسترسی ندارند. اگر مایل به خرید یک دستگاه جدید به طور خاص برای پروکسی شفاف نیستید، می‌توانید یک ماشین مجازی روی رایانه شخصی خود ایجاد کنید (مانند VirtualBox، Hyper-V، و KVM). توجه داشته باشید که در هایپروایزر باید شبکه ماشین های مجازی را در حالت پل تنظیم کنید.

#رویه ها

مراحل راه اندازی به شرح زیر است، با فرض اینکه با root وارد شده اید.

  1. فعال کردن ارسال IP در دستگاه دروازه: خط جدید net.ipv4.ip_forward=1را به فایل /etc/sysctl.conf اضافه کنید و اجرا کنید:
sysctl -p
  1. دستگاه دروازه روی یک IP ثابت تنظیم می شود که در همان بخش شبکه با پورت LAN روتر است. دروازه پیش فرض باید آدرس IP روتر باشد. وارد صفحه مدیریت روتر شوید و به تنظیمات DHCP بروید، آدرس دروازه پیش فرض را در آدرس IP دستگاه دروازه، به عنوان ۱۹۲.۱۶۸.۱.۲۲ در این مثال تنظیم کنید. یا می توانید رایانه، تلفن و سایر دستگاه های خود را به طور جداگانه دروازه پیش فرض آنها را تنظیم کنید (به ۱۹۲.۱۶۸.۱.۲۲)، و دستگاه های خود را مجدداً به روتر متصل کنید تا ببینید آیا آنها می توانند به اینترنت وصل شوند یا خیر. (طبیعی است که دستگاه در حال حاضر نمی تواند IRAn GFW را دور بزند). اگر دستگاه ها به هیچ وجه به اینترنت دسترسی ندارند، قبل از ادامه کار باید ابتدا این مشکل را حل کنید. در غیر این صورت، فقط وقت خود را با دنبال کردن مراحل بعدی تلف خواهید کرد. دستگاه دروازه روی یک IP ثابت تنظیم شده است تا IP آن پس از راه اندازی مجدد تغییر نکند. دروازه پیش‌فرض روی روتر روی آدرس IP دروازه تنظیم می‌شود تا روتر تمام داده‌های ارسال شده از دستگاه‌های LAN متصل به آن را به دستگاه دروازه هدایت کند و سپس با استفاده از V2Ray ترافیک را هدایت کند.
  2. آخرین نسخه V2Ray را روی سرور (VPS خود) و دروازه نصب کنید. (اگر این کار را انجام نمی دهید، باید آموزش های قبلی را دنبال کنید. توجه داشته باشید کهIRAN GFW دوست دارد ترافیک انتشارات GitHub را رهگیری کند و می تواند باعث عدم نصب V2Ray با استفاده از اسکریپت نصب شود. بنابراین توصیه می شود بسته V2Ray را به صورت دستی دانلود کنید. و سپس از اسکریپت نصب با پارامتر “-local” استفاده کنید.) فایل پیکربندی خود را بر این اساس پیکربندی کنید. وقتی مطمئن شدید که V2Ray به درستی کار می‌کند، در دروازه اجرا کنید curl -x socks5://127.0.0.1:1080 google.comتا آزمایش کنید که آیا تنظیمات شما می‌تواند GFW را دور بزند یا خیر. (در اینجا socks5 به پروتکل ورودی اشاره دارد و ۱۰۸۰پورت ورودی است). اگر خروجی چیزی شبیه به زیر باشد، شما خوب هستید. در غیر این صورت، مشکلی در راه‌اندازی شما وجود دارد و باید مواردی را که از دست داده‌اید دوباره بررسی کنید.
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>
  1. در فایل پیکربندی دروازه، پیکربندی ورودی پروتکل dokodemo-door را اضافه کنید، sniffing را فعال کنید، و همچنین SO_MARK را به همه تنظیمات جریان خروجی اضافه کنید. پیکربندی باید به صورت زیر باشد ( ...پیکربندی را در یک کلاینت استاندارد نشان می دهد):
 {
  "routing": {...},
  "inbounds": [
    {
      ...
    },
    {
      "port": 12345, // The open port   DOKODEMO-doorپورت ۱۰۸۱ ویا ۱۲۳۴۵ مورد استفاده در 
      "protocol": "dokodemo-door",
      "settings": {
        "network": "tcp,udp",
        "followRedirect": true // قبول کردن دستورات ارتباط Iptables واجراو  

      },
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls"]
      }
    }
  ],
  "outbounds": [
    {
      ...
      "streamSettings": {
        ...
        "sockopt": {
          "mark": 255  // Here is SO_MARK,used for iptables to recognise. Each outbound needs to configure; you can use other value other than 255 but it needs to be consistant as in iptables rules; if there are multiple outbounds, it is recommended that you set all SO_MARK value the same for all outbounds.
        }
      }
    }
    ...
  ]
}
  1. قوانین iptable را برای TCP برای دستگاه پراکسی شفاف تنظیم کنید: (پس #از نظرات):
    در این قسمت یک chain جدید به نام V2ray ایجاد میکنیم و اعمال NAT را روی آنها اعمال میکنیم .
iptables -t nat -N V2RAY # Create a new chain called V2RAY یک زنجیره جدید یجاد کنید


iptables -t nat -A V2RAY -d 192.168.0.0/16 -j RETURN # Direct connection 192.168.0.0/16

iptables -t nat -A V2RAY -p tcp -j RETURN -m mark --mark 0xff # Directly connect
 SO_MARK to 0xff traffic (0xff is a hexadecimal number, numerically equivalent to 255), the purpose of this rule is to avoid proxy loopback with local (gateway) traffic
مستقیماً SO_MARK را به ترافیک 0xff وصل کنید (0xff یک عدد هگزادسیمال است که از نظر عددی معادل ۲۵۵ است)، هدف از این قانون جلوگیری از حلقه بک پروکسی با ترافیک محلی (دروازه) است.

iptables -t nat -A V2RAY -p tcp -j REDIRECT --to-ports 8080 # The rest of the traffic is forwarded to port 8080 (ie V2Ray)
بقیه ترافیک به پورت ۸۰۸۰(یعنی V2Ray) منتقل می شود

iptables -t nat -A PREROUTING -p tcp -j V2RAY # Transparent proxy for other LAN devices پروکسی برای سایر دستگاه 

iptables -t nat -A OUTPUT -p tcp -j V2RAY # Transparent proxy for this machine پروکسی برای این دستگاه

سپس قانون iptables ترافیک UDP را برای دستگاه پراکسی شفاف تنظیم کنید:

ip rule add fwmark 1 table 100
ایده این است که شما بسته هایی را که میخواهند به آدرس خاص بروند مشخص کنید . و درصورت تطابق با بسته های ارسالی آنها را با ۱۰۰ علامتگذاری کنید . 
سوکت را روی جعبه خود قرار دهید، علامت بسته را روی یک مقدار مشخص تنظیم کنید:


ip route add local 0.0.0.0/0 dev lo table 100
iptables -t mangle -N V2RAY_MASK  #   ایجاد یک منگل جدید 

iptables -t mangle -A V2RAY_MASK -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A V2RAY_MASK -p udp -j TPROXY --on-port 8080 --tproxy-mark 1
iptables -t mangle -A PREROUTING -p udp -j V2RAY_MASK
  1. سعی کنید مستقیماً با استفاده از رایانه/تلفن خود که تحت یک شبکه LAN با دستگاه پراکسی شفاف پیکربندی شده شما متصل هستند، از یک وب سایت مسدود شده بازدید کنید. شما نباید تا الان بلاک شده باشید.
  2. ممکن است به یک اسکریپت یا هر چیزی (مانند iptables-persistent) نیاز داشته باشید که بتواند به طور خودکار قوانین iptable بالا را پس از راه اندازی مجدد دستگاه پراکسی شفاف بارگیری کند. در غیر این صورت، iptables پس از راه اندازی مجدد از بین می رود.

یادداشت

  • با تنظیمات بالا، وقتی از یک سایت به طور معمول مسدود شده بازدید می کنید، دروازه همچنان از DNS سیستم برای پرس و جو استفاده می کند، با این تفاوت که نتیجه برگشتی آلوده است. اما sniffing ارائه شده توسط V2Ray می تواند نام دامنه (وب سایت آلوده) را از ترافیک یاد بگیرد و آن را برای VPS شما بفرستد تا حل شود و نتیجه صحیح را برگرداند. این بدان معناست که هر بار که از یک وب سایت مسدود شده توسط GFW بازدید می کنید، با وجود اینکه می توانید سانسور را با V2Ray دور بزنید، ارائه دهنده DNS سیستم شما (که DNS شما را آلوده می کند) می داند که شما سعی کرده اید از وب سایت مسدود شده بازدید کنید. از این رو باید از احتمال اینکه آنها می توانند به طور فعال چنین داده هایی را جمع آوری کنند آگاه باشید.
  • V2Ray Sniffing در حال حاضر فقط نام دامنه را از ترافیک TLS و HTTP استخراج می کند. اگر ترافیکی وجود دارد که هیچ کدام از این دو را ندارد، در استفاده از sniffing برای حل آلودگی DNS محتاط باشید.
  • ممکن است مشکلاتی با قانون پروکسی شفاف برای ترافیک UDP وجود داشته باشد. اگر مایلید در مورد این قوانین بازخوردی به ما بدهید، سپاسگزار خواهیم بود. اگر فعالیت های آنلاین شما صرفاً شامل گشت و گذار در وب یا تماشای ویدیو می شود، قوانین TCP ممکن است بدون نیاز به پیکربندی قوانین UDP کافی باشد.
  • با توجه به محدودیت پروتکل VMESS، پروکسی شفاف V2Ray عملکرد بازی آنلاین رضایت بخشی را ارائه نمی دهد.
  • فقط ترافیک TCP/UDP را می توان از طریق V2Ray پراکسی کرد، بنابراین با بسته های ICMP کار نمی کند. بنابراین، پروکسی شفاف از ping/mtr که بر اساس ICMP است پشتیبانی نمی کند. با این حال، tcping یا hping3 کار می کند زیرا آنها از TCP به جای ICMP استفاده می کنند.
  • برخی از آموزش‌های پروکسی شفاف در اینترنت وجود دارد که قوانین iptables را برای آدرس‌های خصوصی مانند RETURN 127.0.0.0/8 تنظیم می‌کند، اما پیشنهاد می‌کنیم به دلیل عملکرد، آنها را در قوانین مسیریابی V2Ray قرار دهید.

منبع : https://guide.v2fly.org/en_US/app/transparent_proxy.html#procedures

منبع ۲ https://toutyrater.github.io/app/tproxy.html


#

 iptables -t nat -A PREROUTING -s 192.168.110.0/24 -p tcp --dport 80:443 -j DNAT --to-destination 127.0.,0.1:8080

iptables -t nat -A PREROUTING -i  br-lan -p tcp --dport 443 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -i br-lan -p tcp --dport 80 -j REDIRECT --to-ports 8080

 جستجوی دستورات در فایروال 

iptables -t nat -L -n -v | grep 80

دیگر نرم افزارهای پراکسی در openwrt

Tinyproxy :

Tinyproxy

Tinyproxy

یک دیمون پراکسی HTTP / HTTPS سبک وزن برای سیستم عامل های POSIX است. از ابتدا به گونه ای طراحی شده که سریع و در عین حال کوچک باشد، یک راه حل ایده آل برای موارد استفاده مانند استقرارهای جاسازی شده است که در آن به یک پراکسی HTTP با ویژگی کامل نیاز است، اما منابع سیستم برای یک پروکسی بزرگتر در دسترس نیست. در یک سناریوی معمولی ۵-۱۰M RAM مصرف می کند و زمانی که روی روتر دارای OpenWRT نصب می شود.

این منبع در ۸ دقسمت ترنسپرنت پراکسی را در لینوکس توضیح میدهد . https://powerdns.org/tproxydoc/tproxy.md.html
این ویژگی پشتیبانی از پروکسی شفاف لینوکس ۲.۲ را به هسته های فعلی اضافه می کند. برای استفاده از آن، socket match و TPROXY target را در پیکربندی هسته خود فعال کنید. شما به مسیریابی خط مشی نیز نیاز خواهید داشت، بنابراین مطمئن شوید که آن را نیز فعال کنید. Transparent proxy support
https://www.kernel.org/doc/html/latest/networking/tproxy.html
همه خوب کار می کنند، اما مشکلات من نمی توانم از پروکسی برای محلی استفاده کنمhttps://forum.openwrt.org/t/allow-router-to-use-transparent-proxy/116118
https://github.com/kokrange/ss-openwrt-transparent-proxy-router

https://openwrt.org/docs/guide-user/services/proxy/tinyproxy




ارسال پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *