تغییر صفحه ی sign in to network در مودم

سلام
من میخوام صفحه ی sign in to network مودمم رو تغییر بدم جوری که حتی اگه وارد یه سایت دیگه هم که خودم لینکش رو میدم بره اوکیه مثلا اگه مودم ایرانسل نت نداشته باشه میره به صفحه ی irancell.ir ولی من میخوام در هر صورتی بره به صفحه ی مورد نظر من چجوری میشه؟

یا اگه بشه هات اسپاتی ساخت که اینطور باشه عالیه مخصوصا اگه با لینوکس بشه

نمیشه چون ایرانسل اجازه نمیده هیچ سایتی بجز سایت خودش و درگاههای بانکی، بدون اینترنت باز بشن.

همچین کاری رو کافی‌شاپ ها و رستورانها انجام میدن. از اینایی که اینترنت رایگان یک ساعته میدن.
البته نه برای زمانی که واقعا اینترنت قطعه. برای زمانی که میخوان یه MAC Address، دیگه به اینترنت وصل نشه و نتونه از حجمشون کم کنه، تمام ریکوئستهاش رو ریدایرکت میکنن به localhost خودشون.

دقیقا همینو میخوام

نیاز به یه چیزی مثل raspberrypi دارید و باید تمام ترافیک رو از داخل اون عبور بدید. یه جورایی مثل کاری که با pi hole انجام میدن. یعنی از یه طرف وصله به مودم، از طرف دیگه اینترنت رو به صورت hotspot ارائه میده.
و باید یه برنامه بنویسید براش که وقتی میخواید ریدایرکتی انجام بده، بره routing table رسپ‌بری رو دستکاری کنه و ترافیک رو به اون سمتی هدایت کنه که میخواید.

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

مودم تی پی لینک هست
این قابلیت رو مودم نیست که خودش تمام ریکوئست هارو ریدایرکت کنه به ایپی ۱۹۲.۱۶۸.۱.۱۳۸ که روی خودش هست؟

مهم نیست نت داره یا نداره هر سایتی رو که باز کرد کاربر ریدایرکت بشه به این ادرس

خیر.
البته بعضی مودمها firmware فری و اوپن‌سورس دارن. مثلا Asus DSL-N14U که یه نسخه‌ی minify شده از debian روشه. همچین مودمهایی رو شاید بشه یه کاریشون کرد.

البته اگه میخواید همیشه این اتفاق بیفته، نه فقط وقتهای خاص یا بعد از ۱ ساعت استفاده یا همچین چیزی، میشه یه کار دیگه انجام داد.
فرض کنید مودم شما روی 192.168.1.1 هست و یه کامپیوتر (raspberry یا هرچی) روی 192.168.1.2 دارید.
روی اون کامپیوتر، یه DNS Server ران کنید که به ریکوئستهای مربوط به هر دامنه‌ای، پاسخ 192.168.1.2 بده! بعد توی مودم ست کنید که DNS Server ها به جای اینکه روی 8.8.8.8 یا هرچیز دیگه‌ای ست باشن، روی 192.168.1.2 ست بشن.
اینطوری (مگر اینکه کاربر DNS serverهای خودش رو ست کرده باشه و از مودم نگیره) هر ریکوئستی که قراره زده بشه اول DNSش چک میشه که خب از 192.168.1.2 میگیریم، بعد اون هم جواب همه‌ی domain lookupها رو 192.168.1.2 میده یعنی localhost خودش!

این ۳ تا مشکل داره. اولا اینکه یه جورایی همیشگیه و نمیشه تغییرش داد. و وقتی یه بروزر یه بار یه DNS‌رو ریکوئست کنه، اونو کش میکنه تا یه مدت. پس عوض کردنش و تست کردنش یه کم سخته.
دوما اگه کاربر یه ip بزنه، میتونه اون ip‌ رو ببینه چون دیگه نیازی به dns lookup نیست.
سوما اینکه فقط وقتی جواب میده که network manager کاربر، ریکوئستهای dns‌رو به مودم بزنه. نه اینکه خودش کانفیگ شده باشه تا از 8.8.8.8‌ یا 1.1.1.1 یا یه چیز دیگه استفاده کنه.

این چجوریه؟

و اینم چجوره؟

منم همون راه DNS server به ذهنم رسید

واقعا توضیحش زیاد و سخته و نمیتونم دقیق بگم مگر اینکه همین الآن درحال درست کردنش باشم.
ولی کلیات اینطوریه:
از مودم، کابل شبکه رو وصل کنید به raspberrypi. بعد یه دانگل وایفای به یکی از پورتهای rasp وصل کنید.
network manager رسپ رو کانفیگ کنید که اولا به اینترنت وصل بشه (خیلی معمولی از طریق کابل) بعد دانگل وایفای رو از داخل همون تنظیمات network manager تبدیل کنید به یه hotspot
از اینجا به بعد هیچ کسی نباید به وایفای مودم وصل بشه، هیچ کسی نباید با کابل به مودم وصل بشه (بجز رسپ) چون اگه وصل بشن، کل سیستم رو bypass میکنن و مستقیم به اینترنت وصل میشن. ما میخوایم اینترنتمون از داخل RaspBerryPi عبور کنه که بتونیم روش کنترل داشته باشیم.
حالا باید با دستکاری routing table، ترافیک رو اونطور که میخوایم هدایت کنیم. این کار سختیه و نمونه‌کدی که میدم مطمئن نیستم درست کار کنه چون اونقدر حرفه‌ای نیستم که بدون تست کردن بتونم این کامندها رو بزنم.

ip route add default gw 127.0.0.1

این کل ترافیک رو میفرسته به 127.0.0.1 اینکه دقیقا چیکار میکنه رو باید توی man ip و man ip route بخونید.
خیلیوقته که routing table رو دستکاری نکردم، اونموقع که باهاش کار میکردم هم برای ردکردن ترافیک از pptp بود، یه کم قضیه فرق میکرد. پس ممکنه چیزی که نوشتم اشتباه باشه.

این نیاز به کامپیوتر اضافه نداره. ولی نیاز به یه نرم‌افزار DNS Server داره. نمیدونم چطوری میشه درستش کرد و یا اینکه لایبرری‌ای براش توی یه زبان وجود داره که کار رو راحت کنه یا نه.
ولی کل قضیه اینطوری میشه که روی سیستم خودتون (اگه همیشه روشنه، اگه نیست یه raspberrypi لازمه) یه DNS Server ران کنید. یه نرم‌افزار که روی پورت 53 و پروتکل UDP باشه و به ریکوئستهای DNS که بهش زده میشه پاسخ بده.
قطعا نرم‌افزارهاش هست، ولی نمیشناسمشون و نمیدونم که قابلیت کاستومایز شدن دارن یا نه. بگذریم.
وقتی یه کامپیوتر میخواد یه محتوای یه دامنه‌ای رو ببینه، یه ریکوئست به یه DNS Server میزنه که ممکنه گوگل باشه 8.8.8.8 یا کلادفلر 1.1.1.1 یا اوپن‌دی‌ان‌اس 208.67.222.222 یا همین نرم‌افزاری که روی سیستم خودتون درست میکنید و مثلا آدرسش میشه 192.168.1.5
این نرم‌افزار نشسته پشت پورت 53 و وقتی بهش میگیم «example.com کجاست؟» بهمون میگه «فلان ip-address»
پس منطقا میتونیم طوری تنظیمش کنیم که هر ریکوئستی اومد برای هر دامنه‌ای، بگه «127.0.0.1» یا یه ip دیگه.

فقط بدیش اینه که اگه یکی از کاربرهایی که به مودم‌ما وصل میشه از یه dns server دیگه استفاده کنه، اونوقت جواب درست رو میگیره و میره به example.comی که خودش میخواست.

بخشید نمیشه بهم بگید چه نرم افزاریه و چجوری باید ستاپش رو انجام بدم چون اطلاعاتم خیلی کمه

خیر! چون همچین چیزی که میخواید یا وجود نداره یا من نمیشناسمش.
اصولا کافی‌شاپ‌ها و اماکن عمومی که از این سیستم‌ها استفاده میکنن، سفارش میدن یه نفر براشون درست میکنه. یا شایدم یه نرم‌افزاری باشه که من نمیشناسم و تا حالا ندیدم.
خودم هم تئوریش رو میدونم، تا حالا انجامش ندادم.

یچیزایی دیدم مثل bind9 و dnsmasq ولی درست توی اینترنت اموشش ندادن

اینا ابزارهایی هستن که برای درست کردن این مدل سیستم‌ها باید ازشون استفاده کنیم. نرم‌افزار کامل نیستن.
من با Bind9 کار کردم. DNS Server هست. ولی اگه میخواید تغییرات زیاد توش بدید، باید یه نرم‌افزار بنویسید که اینکار رو انجام بده. (کنترل پنلهایی مثل Cpanel و Direct Admin از bind9 استفاده میکنن و براش فایلهای کانفیگ رو میسازن و ویرایش میکنن)

در این مورد میشه بهم یاد بدید؟ برای یه پروژه ی دیگه میخوام

کامندش به این شکله:

sudo route add -net <input> dev <output>

به جای input و output، کارت شبکه‌ی مبدا و مقصد رو قرار بدید.

مثلا فرض کنید نتیجه‌ی دستور ip addr توی سیستم شما نشون میده که یه lo دارید (که loop back هست و رسما localhost هست) و یه eno1 یا یه اسم مشابه (که کارت شبکه‌ی کابلی شماست، اگه وایرلس باشه اصولا اسمش با w شروع میشه مثلا wlp2s0) و یه کارت شبکه‌ی مجازی به نام mylocalnetwork
(اگه داکر نصب باشه یه کارت شبکه به نام docker0 هم مشاهده میکنید، اگه openvpn نصب و فعال باشه یه چیزی به نام tun0 و…)

و میخواید ریکوئستهایی که قراره به eno1 زده بشه (تمام ریکوئستهای معمولی که قراره از کامپیوتر خارج بشن، به mylocalnetwork منتقل بشن. یعنی وقتی میخواید یه وبسایت رو باز کنید، به جای اینکه ترافیک مستقیم بره به eno1 و از مودم خارج بشه، بره به mylocalnetwork که یه نرم‌افزاری اونجا نشسته و داره ترافیک رو هندل میکنه (ممکنه یه پردازشی انجام بده بعد خودش ترافیک رو پاس بده به eno1، ممکنه خودشد همه‌چیزو هندل کنه یا…)
در این صورت باید این کامند رو بزنید:

sudo route add -net eno1 dev mylocalnetwork

رو بزنید.

برای معکوس کردن کاری که انجام دادید هم تا جایی که میدونم باید اینو بزنید:

sudo route del -net default mylocalnetwork

حالا نحوه‌ی دیباگ کردنش به این صورته که کامند sudo route رو میزنید تا ببینید وضعیت routing table در سیستم شما به چه شکله.

اگه sudo route add ... موفقیت‌آمیز بوده باشه، باید تو ستون سمت راست در sudo route، اسم mylocalnetwork رو ببینید.

این خروجی ip route در سیستم منه زمانی که openvpn روشن و بعد خاموش میشه. دقت کنید که tun0 از توش حذف میشه (این تغییرات به صورت اتوماتیک انجام میشه. کلاینت openvpn وقتی اتصال وصل و قطع میشه، خودش اتوماتیک routing table رو ست میکنه):

╭─[email protected] ~ 
╰─$ sudo route      
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.8.0.1        128.0.0.0       UG    0      0        0 tun0
default         192.168.1.1     0.0.0.0         UG    0      0        0 eno1
one.one.one.one 192.168.1.1     255.255.255.255 UGH   0      0        0 eno1
10.8.0.0        0.0.0.0         255.255.255.0   U     0      0        0 tun0
88.150.137.53   192.168.1.1     255.255.255.255 UGH   0      0        0 eno1
128.0.0.0       10.8.0.1        128.0.0.0       UG    0      0        0 tun0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eno1
192.168.1.1     0.0.0.0         255.255.255.255 UH    0      0        0 eno1
resolver1.opend 192.168.1.1     255.255.255.255 UGH   0      0        0 eno1
╭─[email protected] ~ 
╰─$ sudo route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    0      0        0 eno1
one.one.one.one 192.168.1.1     255.255.255.255 UGH   0      0        0 eno1
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eno1
192.168.1.1     0.0.0.0         255.255.255.255 UH    0      0        0 eno1
resolver1.opend 192.168.1.1     255.255.255.255 UGH   0      0        0 eno1

میخوام تمام ریکوست های openvpn server رو منتقل کنم بصوزتی که بتونه تحریمات دور بزنه
الان openvpn server روی سرور من نصب هست ولی نمیتونه تحریمات دور بزنه