راه اندازی سرور وایرگارد

نحوه تنظیم WireGuard VPN در CentOS 8

WireGuard یک VPN (شبکه خصوصی مجازی) ساده و مدرن با رمزنگاری های پیشرفته است. پیکربندی سریعتر ، آسانتر و عملکرد بیشتری نسبت به سایر راه حل‌های مشابه مانند IPsec و OpenVPN دارد .

وایرگارد کراس پلتفرمی است و تقریباً در هر کجا قابل اجرا است ، از جمله Linux ، Windows ، Android و macOS. وایرگارد یک وی پی ان P2P است. این مبتنی بر مدل کلاینت – سرور نیست. بسته به تنظیمات آن ، یک کاربر می تواند به عنوان یک سرور یا کلاینت مرسوم عمل کند.

WireGuard با ایجاد یک اینترفیس شبکه در هر دستگاه کاربر که به عنوان تونل فعالیت می کند ، کار می کند. کاربر با تبادل و اعتبار کلیدهای عمومی ، تقلید از مدل SSH ، یکدیگر را تأیید می کنند. کلیدهای عمومی با لیستی از آدرسهای IP که در تونل مجاز هستند ، نقشه برداری می شوند. ترافیک VPN در UDP این‌کپسولیتد شده است.

در این آموزش نحوه تنظیم وایرگارد بر روی یک دستگاه CentOS 8 که به عنوان یک سرور VPN عمل خواهد کرد ، توضیح داده شده است. ما همچنین نحوه پیکربندی وایرگارد به عنوان کلاینت را به شما نشان خواهیم داد. ترافیک کلاینت از طریق سرور CentOS 8 هدایت می شود. این تنظیمات می تواند به عنوان محافظ در برابر حملات
(man-in-the-middle attack (MITM ، گشت و گذار در وب به صورت ناشناس ، دور زدن محتوای محدود شده از نظر جغرافیایی ، یا اجازه دادن به همکاران شما که از خانه کار می کنند ، ایمن به شبکه شرکت وصل شود.

پیش نیازها

به سرور CentOS 8 نیاز دارید که می توانید به عنوان root یا حساب دارای دسترسی sudo به آن دسترسی پیدا کنید .

تنظیم سرور WireGuard

ما با نصب وایرگارد در دستگاه CentOS شروع می کنیم و آن را تنظیم می کنیم تا به عنوان یک سرور عمل کند. ما همچنین سیستم را برای پیاده سازی ترافیک مشتری از طریق آن پیکربندی خواهیم کرد.

نصب WireGuard در CentOS 8

ابزارهای وایرگارد و ماژول کرنل برای مخازن Epel و Elrepo در دسترس هستند. برای اضافه کردن مخازن به سیستم خود ، دستور زیر را اجرا کنید:

sudo dnf install epel-release elrepo-release 

پس از اتمام ، بسته های WireGuard را نصب کنید:

sudo dnf install kmod-wireguard wireguard-tools

ممکن است از شما خواسته شود که مخازن GPG Keys را وارد کنید. y را وقتی درخواست شد تایپ کنید .

پیکربندی WireGuard

wireguard-tools بسته شامل دو ابزار خط فرمان به نام wg و wg-quick که به شما اجازه پیکربندی و مدیریت اینترفیس WireGuard است.

پیکربندی VPN سرور را در دایرکتوری /etc/wireguard ذخیره می کنیم. در CentOS ، این فهرست در حین نصب ایجاد نمی شود. دستور زیر را برای ایجاد فهرست اجرا کنید :

sudo mkdir /etc/wireguard

کلیدهای عمومی و خصوصی را در دایرکتوری /etc/wireguard ایجاد کنید.

wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey

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

اکنون که کلیدها تولید شده اند ، مرحله بعدی پیکربندی دستگاه تونلی است که ترافیک VPN را طی می کند.

با استفاده از ip یا wg و با ایجاد پرونده پیکربندی با ویرایشگر متن می توان دستگاه را از خط فرمان تنظیم کرد.

پرونده جدیدی به نام wg0.conf ایجاد کنید  و مطالب زیر را اضافه کنید:

sudo nano /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp     = firewall-cmd --zone=public --add-port 51820/udp && firewall-cmd --zone=public --add-masquerade
PostDown   = firewall-cmd --zone=public --remove-port 51820/udp && firewall-cmd --zone=public --remove-masquerade

اینترفیس را می توان هر چیزی را که می خواهید نامگذاری کنید ، با این وجود توصیه می شود از چیزی مانند شامل wg0 یا wgvpn0 استفاده کنید . تنظیمات در بخش اینترفیس معنای زیر را دارند:

  • Address – لیستی جدا شده با کاما  از آدرس های IP V4 یا IP V6 برای اینترفیس wg0. از IP هایی از محدوده که برای شبکه های خصوصی رزرو شده است استفاده کنید (10.0.0.0/8 ، 172.16.0.0/12 یا 192.168.0.0/16).
  • ListenPort – پورتي كه در آن WireGuard اتصالات ورودي را پذيرفت.
  • PrivateKey – یک کلید خصوصی که توسط دستورwg genkey تولید می شود . (برای دیدن محتویات فایل را اجرا کنید: sudo cat /etc/wireguard/privatekey)
  • SaveConfig – وقتی درست تنظیم شد ، وضعیت فعلی رابط هنگام خاموش کردن در پرونده پیکربندی ذخیره می شود.
  • PostUp – دستور یا اسکریپتی که قبل از up کردن اینترفیس اجرا می شود. 
    در این مثال ما از دستور firewall-cmd برای باز کردن پورت WireGuard و فعال کردن maskquerading استفاده می کنیم . این امر باعث می شود که ترافیک از سرور خارج شود و به کلاینت های VPN به اینترنت دسترسی پیدا کنند.
  • PostDown – دستور یا اسکریپتی که قبل از Down کردن اینترفیس اجرا می شود.پس از آنکه اینترفیس Down شود رول های فایروال حذف خواهد شد.

فایل های wg0.confو privatekey نباید برای کاربران عادی قابل خواندن باشد برای اینکار از دستور chmod برای تنظیم مجوزها  استفاده میکنیم:

sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf}

پس از اتمام ، اینترفیس wg0 را با استفاده از ویژگی های مشخص شده در پرونده پیکربندی up کنید :

sudo wg-quick up wg0

دستور چیزی شبیه به این را ارائه می دهد:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE

برای مشاهده state و پیکربندی انجام شده دستور زیر را اجرا نمایید:

sudo wg show wg0
interface: wg0
  public key: My3uqg8LL9S3XZBo8alclOjiNkp+T6GfxS+Xhn5a40I=
  private key: (hidden)
  listening port: 51820

همچنین می توانید از دستور ip برای تأیید وضعیت اینترفیس خود استفاده کنید:

ip a show wg0
4: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.0.0.1/24 scope global wg0
       valid_lft forever preferred_lft forever

برای up کردن اینترفیس wg0 در زمان بوت شدن سیستم عامل ، دستور زیر را اجرا کنید:

sudo systemctl enable wg-quick@wg0

شبکه سرور

برای کار با NAT ، باید IP forwarding را فعال کنیم. یک فایل ne ایجاد کنید /etc/sysctl.d/99-custom.conf و خط زیر را اضافه کنید:

sudo nano /etc/sysctl.d/99-custom.conf
net.ipv4.ip_forward= 1

پرونده را ذخیره کنید و تغییر را اعمال کنید:

sudo sysctl -p /etc/sysctl.d/99-custom.conf
خروجی به شکل زیر: 

net.ipv4.ip_forward = 1

خب تا اینجا CentOS که به عنوان سرور عمل خواهد کرد.

راه اندازی کلاینت های لینوکس و macOS

دستورالعمل های نصب برای همه سیستم عامل های پشتیبانی شده در این آدرس در دسترس هستند . در سیستم های لینوکس ، می توانید بسته را با استفاده از پکیج منیجر توزیع خود و بر روی macOS با استفاده از brew نصب کنید  . پس از نصب WireGuard ، مراحل زیر را برای پیکربندی دستگاه کلاینت دنبال کنید.

روند راه اندازی یک سرویس دهنده لینوکس و macOS تقریباً مشابه آنچه شما برای سرور انجام داده اید ، نیست. ابتدا با تولید کلیدهای عمومی و خصوصی شروع کنیم:

wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey

فایل wg0.conf را ایجاد کرده و مطالب زیر را اضافه کنید:

sudo nano /etc/wireguard/wg0.conf
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/24


[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0

تنظیمات در قسمت Interface همان معنایی را دارند که هنگام تنظیم سرور داشتن!

اگر نیاز به پیکربندی کلاینت اضافی دارید ، فقط همین مراحل را با استفاده از یک آدرس IP خصوصی متفاوت تکرار کنید.

تنظیم کلاینت ویندوز

نسخه مخصوص ویندوز را از این آدرس دانلود و نصب کنید.

پس از نصب، برنامه WireGuard را باز کرده و بر روی “Add Tunnel” -> “Add empty tunnel…” مانند تصویر زیر انجام دهید:

نحوه اضافه کردن کانفیگ وایرگارد در ویندوز

یک جفت publickey به طور خودکار ایجاد می شود و آن را روی صفحه نمایش می دهد.

کلید عمومی در وایرگارد

یک نام برای تونل وارد کنید و پیکربندی را به شرح زیر ویرایش کنید:

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/24


[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0

در قسمت Interface، یک خط جدید برای تعریف آدرس تونل کلاینت اضافه کنید.

در قسمت Peer فیلدهای زیر را اضافه کنید:

  • PublicKey – کلید عمومی سرور CentOS ( فایل /etc/wireguard/publickey )
  • Endpoint – آدرس IP سرور CentOS مانند SERVER_IP_ADDRESS:51820 وارد نمایید. توجه کنید 51820 پورت پیش فرض وایرگارد است.
  • AllowedIPs – لیست IP های مجاز

پس از اتمام ، بر روی دکمه “Save” کلیک کنید.

کلاینت را به سرور اضافه کنید

آخرین مرحله افزودن کلید عمومی کلاینت و IP آدرس به سرور:

sudo wg set wg0 peer CLIENT_PUBLIC_KEY allowed-ips 10.0.0.2

مطمئن شوید که CLIENT_PUBLIC_KEY را  با کلید عمومی ایجاد شده در دستگاه کلاینت تغییر داده اید. برای اطمینان دستور ( sudo cat /etc/wireguard/publickey) را اجرا کنید.
و در صورت متفاوت بودن IP آدرس کلاینت را تنظیم کنید. کاربران ویندوز می توانند کلید عمومی را از برنامه WireGuard کپی کنند.

کلاینت‌های لینوکس و macOS

در کلاینت‌های لینوکس دستور زیر را اجرا کنید:

sudo wg-quick up wg0

حال باید به سرور CentOS متصل شوید و ترافیک دستگاه کلاینت شما باید از طریق آن انجام شود. می توانید ارتباط خود را با دستور زیر چک کنید:

sudo wg
interface: wg0
  public key: sZThYo/0oECwzUsIKTa6LYXLhk+Jb/nqK4kCCP2pyFg=
  private key: (hidden)
  listening port: 60351
  fwmark: 0xca6c

peer: My3uqg8LL9S3XZBo8alclOjiNkp+T6GfxS+Xhn5a40I=
  endpoint: XXX.XXX.XXX.XXX:51820
  allowed ips: 0.0.0.0/0
  latest handshake: 41 seconds ago
  transfer: 213.25 KiB received, 106.68 KiB sent

همچنین می توانید مرورگر خود را باز کنید ، “what is my ip” را تایپ کنید ، و باید آدرس IP سرور CentOS خود را ببینید.

برای متوقف کردن تونل ، wg0 اینترفیس را Dwon کنید:

sudo wg-quick down wg0

کلاینت‌های ویندوز

اگر WireGuard را در ویندوز نصب کرده اید ، روی دکمه “Activate” کلیک کنید. پس از اتصال ، وضعیت تونل به حالت Activate تغییر می یابد:

فعالسازی سرور وایرگارد در ویندوز

نتیجه


ما به شما نشان داده ایم كه چگونه WireGuard را در دستگاه CentOS 8 نصب كنید و آن را به عنوان یك سرور VPN پیكربندی كنید. این تنظیم به شما امکان می دهد با نگه داشتن اطلاعات ترافیکی خود به صورت ناشناس در وب گشت و گذار کنید.

درباره AfshinBalakar

افشین بالاکار دانشجوی مهندسی تکنولوژی نرم افزار، مدت 5 سال است با لینوکس رابطه افلاطونی دارم.

پیشنهاده میشه بخونی

نصب وایرگارد بر روی ویندوز و لینوکس

نصب و راه اندازی وایرگارد (WireGuard) سرور VPN بر روی اوبونتو و ویندوز

WireGuard یک فناوری مدرن (VPN (Virtual Private Network با رمزنگاری پیشرفته است. در مقایسه با …

دیدگاهتان را بنویسید

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