بلاگ/کانفیگ تانل چیست و چگونه روی سرور اختصاصی یا VPS خودتان بسازید؟
به‌روز شده

کانفیگ تانل چیست و چگونه روی سرور اختصاصی یا VPS خودتان بسازید؟

1405/05/314 بازدید
کانفیگ تانل چیست و چگونه روی سرور اختصاصی یا VPS خودتان بسازید؟

کانفیگ تانل چیست و چگونه روی سرور اختصاصی یا VPS خودتان بسازید؟

نمای شماتیک ارتباط رمزنگاری‌شده میان کاربر و سرور تانل اگر میان دو سرور، یک دفتر و دیتاسنتر یا دستگاه شخصی و VPS ارتباط برقرار می‌کنید، احتمالاً اصطلاح «تانل» را شنیده‌اید. اما کانفیگ تانل چیست و چرا بسیاری از مدیران شبکه ترجیح می‌دهند به‌جای خرید کانفیگ آماده، زیرساخت اختصاصی خود را بسازند؟ تانل شبکه مسیری منطقی است که ترافیک را داخل یک پروتکل دیگر قرار می‌دهد و آن را میان دو نقطه انتقال می‌دهد. این مسیر می‌تواند رمزنگاری‌شده باشد، محدودیت‌های مسیریابی را برطرف کند یا چند شبکه خصوصی را از طریق اینترنت عمومی به یکدیگر متصل سازد. WireGuard، V2Ray و GOST از ابزارهایی هستند که با معماری‌ها و کاربردهای متفاوت برای ایجاد چنین ارتباطی استفاده می‌شوند. در این راهنما، ابتدا مفهوم تانل و معیار انتخاب ابزار را بررسی می‌کنیم و سپس یک تانل WireGuard را به‌صورت گام‌به‌گام روی لینوکس راه‌اندازی خواهیم کرد.

کانفیگ تانل چیست؟

کانفیگ تانل مجموعه‌ای از تنظیمات سمت مبدأ و مقصد است که مشخص می‌کند ارتباط چگونه ایجاد، احراز هویت، رمزنگاری و مسیریابی شود. این تنظیمات معمولاً شامل موارد زیر است: - آدرس یا دامنه سرور - پورت ورودی - پروتکل انتقال - کلیدهای رمزنگاری یا اطلاعات احراز هویت - محدوده آدرس‌های خصوصی - مسیرهای مجاز برای عبور ترافیک - قوانین فایروال و NAT - تنظیمات پایداری، زمان انقضا و Keepalive برای مثال، در WireGuard هر سمت یک کلید خصوصی و یک کلید عمومی دارد. سرور مشخص می‌کند کدام کلاینت با چه کلید عمومی و چه IP خصوصی اجازه اتصال دارد. کلاینت نیز آدرس سرور، کلید عمومی آن و شبکه‌هایی را که باید از تانل عبور کنند می‌شناسد. بنابراین تانل صرفاً یک فایل کانفیگ نیست؛ بلکه ترکیبی از نرم‌افزار، کلیدها، قوانین شبکه و یک سرور قابل‌اعتماد است.

تانل شبکه چگونه کار می‌کند؟

فرض کنید کلاینت می‌خواهد بسته‌ای را برای یک شبکه خصوصی ارسال کند. نرم‌افزار تانل بسته اصلی را دریافت می‌کند، آن را داخل یک بسته جدید قرار می‌دهد و در صورت پشتیبانی پروتکل، محتوا را رمزنگاری می‌کند. بسته جدید از اینترنت عبور می‌کند و در سرور مقصد باز می‌شود. این فرایند سه نتیجه مهم دارد: 1. مسیر منطقی مشخصی میان دو نقطه ساخته می‌شود. 2. شبکه میانی معمولاً محتوای رمزنگاری‌شده را نمی‌بیند. 3. سرور مقصد می‌تواند ترافیک را به اینترنت یا یک شبکه خصوصی دیگر هدایت کند. رمزنگاری فقط مسیر میان اعضای تانل را پوشش می‌دهد. اگر ترافیک پس از خروج از سرور به مقصدی بدون HTTPS ارسال شود، آن بخش الزاماً رمزنگاری‌شده نیست. به همین دلیل، استفاده از TLS و پروتکل‌های امن همچنان ضروری است.

تفاوت ساخت تانل شخصی با خرید کانفیگ آماده

در یک سرویس آماده در مقابل سرور اختصاصی، معمولاً فقط اطلاعات اتصال را دریافت می‌کنید. شما به تنظیمات سرور، ظرفیت واقعی، گزارش‌ها، سیاست نگهداری داده یا تعداد کاربران مشترک دسترسی ندارید. در تانل شخصی، کنترل بیشتری دارید؛ اما نگهداری و ایمن‌سازی نیز بر عهده خودتان است.

معیارکانفیگ آمادهتانل روی VPS یا سرور شخصی
کنترل روی کلیدهامحدود یا نامشخصکامل
تعداد کاربران مشترکمعمولاً نامشخصتحت کنترل شما
انتخاب کشور و دیتاسنترمحدود به فروشندهقابل انتخاب
مشاهده و رفع خطادشواردسترسی کامل به لاگ و سرویس
هزینه شروعمعمولاً کمترنیازمند تهیه سرور
نگهداری امنیتیبر عهده فروشندهبر عهده مدیر سرور
امکان تغییر پروتکلمحدودانعطاف‌پذیر
پایداریوابسته به کیفیت فروشندهوابسته به سرور و مدیریت شما

ساخت تانل شخصی به‌خودی‌خود امنیت را تضمین نمی‌کند. مزیت اصلی آن، شفافیت و کنترل است. اگر سیستم‌عامل به‌روز نباشد، کلید خصوصی افشا شود یا فایروال به‌درستی تنظیم نشود، یک سرور شخصی نیز آسیب‌پذیر خواهد بود.

WireGuard، V2Ray یا GOST؛ کدام مناسب‌تر است؟

انتخاب ابزار به هدف شما بستگی دارد. هیچ گزینه‌ای برای همه سناریوها بهترین نیست.

WireGuard

WireGuard یک VPN سبک، سریع و مبتنی بر UDP است. تنظیمات آن نسبتاً ساده است و برای اتصال امن دستگاه‌ها، ارتباط سایت‌به‌سایت و دسترسی به شبکه خصوصی انتخاب مناسبی محسوب می‌شود. اگر هدف شما ساخت یک تونل IP استاندارد با کمترین پیچیدگی است، بهتر است کار را با WireGuard آغاز کنید.

V2Ray

V2Ray یک پلتفرم انعطاف‌پذیر برای مدیریت جریان‌های شبکه است و از چند نوع ورودی، خروجی و انتقال پشتیبانی می‌کند. تنظیم آن از WireGuard پیچیده‌تر است و باید پروتکل، TLS، دامنه و شیوه مسیریابی با دقت انتخاب شوند. برای استقرار اینترنتی، استفاده از نسخه‌های معتبر، TLS صحیح و مستندات رسمی ضروری است. نمونه‌های ناشناس و اسکریپت‌های نصب نامطمئن ممکن است کلیدها یا ترافیک شما را در معرض خطر قرار دهند.

GOST

GOST ابزاری چندمنظوره برای پروکسی، فوروارد پورت و ایجاد زنجیره‌های انتقال است. این ابزار در سناریوهایی مانند انتقال کنترل‌شده یک سرویس TCP یا UDP میان دو سرور کاربرد دارد. GOST انعطاف زیادی دارد، اما همین انعطاف می‌تواند باعث ایجاد پورت‌های باز ناخواسته شود. سرویس را فقط روی رابط موردنیاز Bind کنید و دسترسی ورودی را در فایروال محدود نگه دارید. مقایسه معماری WireGuard، V2Ray و GOST برای ساخت تانل

پیش‌نیازهای ساخت تانل روی VPS

برای اجرای این آموزش به یک VPS یا سرور اختصاصی لینوکسی با دسترسی مدیریتی نیاز دارید. اوبونتو 22.04 یا 24.04 انتخاب مناسبی است. همچنین باید این موارد را آماده کنید: - یک IP عمومی ثابت - دسترسی SSH با کلید - امکان باز کردن یک پورت UDP - سیستم‌عامل به‌روز - یک کلاینت لینوکس، ویندوز، macOS، اندروید یا iOS - دسترسی قانونی و مجاز به شبکه‌هایی که قرار است متصل شوند کشور سرور را براساس مخاطب و مقصد ترافیک انتخاب کنید. VPS ترکیه ممکن است برای کاربران نزدیک به این منطقه تأخیر کمتری داشته باشد، درحالی‌که آلمان معمولاً گزینه‌های متنوعی برای اتصال به شبکه‌های اروپایی ارائه می‌دهد. کیفیت دیتاسنتر، مسیر اپراتور و ظرفیت پورت از نام کشور مهم‌تر هستند.

آموزش ساخت تانل WireGuard روی سرور

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

۱. به‌روزرسانی سیستم و نصب WireGuard

ابتدا بسته‌ها را به‌روز و WireGuard را نصب کنید:

sudo apt update
sudo apt install wireguard -y

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

۲. ساخت کلیدهای سرور

سطح دسترسی فایل‌ها را محدود و جفت‌کلید سرور را ایجاد کنید:

sudo install -d -m 700 /etc/wireguard
umask 077
wg genkey | sudo tee /etc/wireguard/server-private.key | wg pubkey | sudo tee /etc/wireguard/server-public.key

کلید خصوصی را هرگز برای کلاینت یا فرد دیگری ارسال نکنید. برای مشاهده کلید عمومی سرور می‌توانید از دستور زیر استفاده کنید:

sudo cat /etc/wireguard/server-public.key

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

۳. فعال‌کردن IP Forwarding

اگر قرار است سرور ترافیک کلاینت را مسیریابی کند، IP Forwarding باید فعال باشد:

sudo sysctl -w net.ipv4.ip_forward=1

برای دائمی‌کردن تنظیم، فایل زیر را ایجاد کنید:

sudo nano /etc/sysctl.d/99-wireguard-forward.conf

این مقدار را داخل آن قرار دهید:

net.ipv4.ip_forward=1

سپس تنظیمات را بارگذاری کنید:

sudo sysctl --system

۴. ساخت کانفیگ سرور

ابتدا نام رابط متصل به اینترنت را با ip route پیدا کنید. در بسیاری از سرورها این نام eth0 یا ens3 است. سپس فایل /etc/wireguard/wg0.conf را بسازید:

[Interface]
Address = 10.10.0.1/24
ListenPort = 51820
PrivateKey = <مقدار فایل server-private.key>
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = <کلید عمومی کلاینت>
AllowedIPs = 10.10.0.2/32

سپس دسترسی فایل را محدود کنید تا فقط root بتواند آن را بخواند:

sudo chmod 600 /etc/wireguard/wg0.conf

هر خط از بخش [Interface] نقش مشخصی دارد: - Address: آدرس IP خصوصی سرور داخل شبکه تانل و اندازه ساب‌نت آن. - ListenPort: همان پورت UDP که پیش‌تر در فایروال باز کرده‌اید؛ کلاینت برای اتصال به همین پورت نیاز دارد. - PrivateKey: محتوای فایل server-private.key که در بخش ۲ ساختید؛ هرگز آن را در جای دیگری قرار ندهید. - PostUp/PostDown: قوانین iptables که هنگام بالا و پایین آمدن رابط wg0 اجرا می‌شوند. خط اول ترافیک فورواردشده از تانل را مجاز می‌کند و خط دوم با MASQUERADE ترافیک کلاینت‌ها را زیر IP عمومی سرور پنهان (NAT) می‌کند؛ این قوانین بدون فعال‌بودن IP Forwarding که در بخش ۳ تنظیم کردید اثری ندارند. به‌جای eth0 همان نامی را قرار دهید که با ip route پیدا کردید.

بخش [Peer] مشخص می‌کند چه کلاینتی اجازه اتصال دارد: - PublicKey: کلید عمومی کلاینت، نه کلید خصوصی آن. - AllowedIPs: محدوده IPی که سرور از طرف این کلاینت مشخص می‌پذیرد و همچنین مسیر بازگشت ترافیک به همان کلاینت را تعیین می‌کند.

برای هر کلاینت جدید، یک بلوک [Peer] جداگانه با یک AllowedIPs اختصاصی (مثلاً 10.10.0.3/32) به همین فایل اضافه می‌شود.

۵. ساخت کانفیگ کلاینت

روی دستگاه کلاینت نیز مانند بخش ۲ یک جفت‌کلید جداگانه بسازید:

wg genkey | tee client-private.key | wg pubkey | tee client-public.key

سپس فایل کانفیگ کلاینت را با محتوای زیر بسازید:

[Interface]
Address = 10.10.0.2/24
PrivateKey = <مقدار فایل client-private.key>
DNS = 1.1.1.1

[Peer]
PublicKey = <کلید عمومی سرور>
Endpoint = <آدرس IP عمومی سرور>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
  • AllowedIPs=0.0.0.0/0 یعنی تمام ترافیک کلاینت از تانل عبور کند (Full Tunnel). اگر فقط قصد دسترسی به یک شبکه خصوصی خاص را دارید، به‌جای آن محدوده همان شبکه را وارد کنید (Split Tunnel).
  • PersistentKeepalive هر ۲۵ ثانیه یک بسته کوچک ارسال می‌کند تا اتصال پشت NAT یا فایروال کلاینت باز بماند؛ برای سرورهایی که کلاینت پشت NAT قرار دارد ضروری است.

در پایان، مقدار PublicKey داخل بلوک [Peer] فایل سرور را با کلید عمومی همین کلاینت (client-public.key) جایگزین کنید تا دو طرف یکدیگر را بشناسند.

۶. راه‌اندازی سرویس WireGuard

برای بالا آوردن دستی تانل روی سرور:

sudo wg-quick up wg0

برای بررسی وضعیت اتصال و Peerهای فعال:

sudo wg show

اگر تنظیمات درست باشد، پس از اتصال کلاینت مقدار latest handshake در خروجی این دستور نمایش داده می‌شود. برای فعال‌شدن خودکار wg0 پس از هر ری‌استارت سرور:

sudo systemctl enable --now wg-quick@wg0

اگر تغییری در فایل کانفیگ اعمال کردید، سرویس را با دستور زیر بارگذاری مجدد کنید:

sudo systemctl restart wg-quick@wg0

برای عیب‌یابی اتصال، لاگ سرویس و باز بودن پورت UDP در فایروال را بررسی کنید:

sudo journalctl -u wg-quick@wg0 -e
sudo ufw status

نکات امنیتی و نگهداری تانل

راه‌اندازی اولیه تانل فقط شروع کار است. برای نگهداری امن آن: - سیستم‌عامل و بسته WireGuard را مرتب به‌روزرسانی کنید. - فایروال را فقط به پورت‌های موردنیاز (پورت UDP تانل و SSH) محدود نگه دارید. - برای هر کلاینت کلید جداگانه بسازید و کلید خصوصی را هرگز جابه‌جا یا اشتراک‌گذاری نکنید. - Peer دستگاه‌های گم‌شده یا دیگر موردنیاز را از فایل کانفیگ سرور حذف و سرویس را ری‌استارت کنید. - خروجی wg show و لاگ سرویس را برای شناسایی اتصالات ناشناس بررسی کنید. - از فایل‌های کانفیگ بکاپ بگیرید، اما مسیر نگهداری بکاپ نیز باید به همان اندازه سرور اصلی محافظت شود.

از کانفیگ تانل تا یک زیرساخت قابل‌اعتماد

با تکمیل مراحل بالا، یک تانل WireGuard کامل میان سرور و حداقل یک کلاینت دارید که ترافیک را رمزنگاری می‌کند و از طریق NAT به اینترنت یا شبکه خصوصی هدایت می‌کند. همین الگو، با تغییر AllowedIPs و افزودن Peerهای بیشتر، برای اتصال چند دفتر یا چند سرور نیز قابل‌گسترش است. ساخت کانفیگ تانل، چه با WireGuard و چه با V2Ray یا GOST، صرفاً کپی‌کردن چند خط تنظیمات نیست؛ باید IP Forwarding، قوانین NAT، کلیدهای اختصاصی هر کلاینت و پایداری سرویس را همزمان مدیریت کنید تا ارتباطی امن و قابل‌اتکا داشته باشید. پیش از استفاده عملیاتی، اتصال را از چند شبکه مختلف تست کنید و دسترسی فایروال را به پورت موردنیاز محدود نگه دارید. کیفیت نهایی تانل شما مستقیماً به کیفیت سروری وابسته است که روی آن اجرا می‌شود؛ تأخیر شبکه، ظرفیت پورت و پایداری میزبان تعیین می‌کنند تجربه کلاینت‌ها چقدر روان باشد. اگر به دنبال زیرساختی با کنترل کامل روی این تنظیمات هستید، می‌توانید پلن‌های سرور مجازی ابری آریانت را بررسی کنید.