نحوه تنظیم WireGuard VPN در اوبونتو ۲۰٫۰۴

نحوه تنظیم WireGuard VPN در اوبونتو ۲۰٫۰۴

سعیده مهاجری

WireGuard یک فناوری VPN مدرن (Virtual Private Network) است که از رمزنگاری پیشرفته استفاده می کند. در مقایسه با سایر نرم افزارهای VPN ، مانند IPsec و OpenVPN ، این VPN به طور کلی سریعتر ، امن‌ تر و با کانفیگ آسان‌تر است. این پلتفرم تقریباً در همه سیستم ها ، از جمله Linux ، Windows ، Android و macOS قابل اجرا است. Wireguard ، یک VPN نظیر به نظیر (peer-to-peer) است. بدین معنی که از مدل کلاینت-سرور استفاده نمی کند. بسته به کانفیگ آن ، یک peer می تواند به عنوان یک سرور یا کلاینت سنتی عمل کند. ارتباط بین دو peer با ایجاد یک رابط شبکه در هر دستگاه peer برقرار می‌شود که به عنوان یک تونل عمل می کند. peerها با تقلید از مدل SSH یعنی مبادله و اعتبار سنجی کلیدهای عمومی ، یکدیگر را احراز هویت می‌کنند. کلیدهای عمومی با لیستی از آدرس‌های IP مجاز در تونل نگاشت می‌شوند. ترافیک VPN نیز در UDP محصور شده است. این تنظیمات می‌تواند به عنوان یک محافظت در برابر حملات Man in the Middle ، جستجو در وب به صورت ناشناس ، دور زدن محتوای محدودشده در محدودیت جغرافیایی و اتصال امن به شبکه بصورت ریموت استفاده شود. در این مقاله با ما همراه باشید تا شما عزیزان را با نحوه تنظیم WireGuard VPN در اوبونتو ۲۰٫۰۴ آشنا کنیم.

پیش نیازها :

شما به یک سرور اوبونتو ۲۰٫۰۴ با دسترسی root یا sudo نیاز دارید.

راه اندازی سرور WireGuard :

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

نصب WireGuard در اوبونتو ۲۰٫۰۴ :

WireGuard از مخازن پیش فرض اوبونتو در دسترس است. برای نصب آن ، دستور زیر را اجرا کنید:

sudo apt updatesudo apt install wireguard

با این کار ماژول و ابزار WireGuard نصب می شود. WireGuard به عنوان یک ماژول هسته اجرا می شود.

کانفیگ WireGuard :

شما می‌توانید رابط‌های WireGuard را با ابزارهای خط فرمان wg و wg-fast کانفیگ و مدیریت کنید. هر دستگاهی در شبکه WireGuard VPN باید دارای یک کلید خصوصی و عمومی باشد. دستور زیر را برای ایجاد جفت کلید اجرا کنید:

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

فایل‌ ها در دایرکتوری /etc/wireguard ایجاد می‌شوند. برای مشاهده محتویات فایل‌ ها از دستورات cat یا less استفاده کنید. کلید خصوصی هرگز نباید با کسی به اشتراک گذاشته شود و همیشه باید از آن محافظت شود. Wireguard از یک کلید دیگری نیز استفاده می‌کند که این کلید از قبل به اشتراک گذاشته شده است و یک لایه اضافی از رمزنگاری کلید متقارن را اضافه می کند. این کلید اختیاری است و باید برای هر جفت peer منحصر به فرد باشد. مرحله بعدی کانفیگ دستگاه تونلی است که ترافیک 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 = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE

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

  • Address: لیستی از آدرس‌های IPv4 یا IPv6 برای رابط wg0 که با ویرگول از هم جدا شده‌اند. شما می‌توانید به جای آدرس IP از محدوده‌ای که مخصوص شبکه‌های خصوصی (Private IP Addresses) است (۱۰٫۰٫۰٫۰/۸، ۱۷۲٫۱۶٫۰٫۰/۱۲ یا ۱۹۲٫۱۶۸٫۰٫۰/۱۶) استفاده کنید.
  • ListenPort: پورت شنود.
  • PrivateKey: یک کلید خصوصی ایجاد شده توسط دستور wg genkey (برای مشاهده محتویات نوع فایل از دستور زیر استفاده کنید):
 sudo cat /etc/wireguard/privatekey
  • SaveConfig: زمانیکه برروی true تنظیم شود ، هنگام خاموش شدن ، وضعیت فعلی رابط در فایل کانفیگ ذخیره می‌شود.
  • PostUp: دستور یا اسکریپتی است که قبل از وصل کردن رابط اجرا می‌شود. در این مثال ، ما از iptables برای فعال کردن پوشش استفاده می‌کنیم. این اجازه می‌ دهد تا ترافیک از سرور خارج شود و به کلاینت‌های VPN دسترسی به اینترنت را می‌ دهد.

مطمئن شوید که ens3 را بعد از -A POSTROUTING جایگزین می کنید تا با نام رابط شبکه عمومی شما مطابقت داشته باشد. شما به راحتی می توانید رابط کاربری را به صورت زیر بدست آورید:

ip -o -4 route show to default | awk '{print $5}'
  • PostDown: فرمان یا اسکریپتی که قبل از قطع شدن رابط اجرا می شود و با قطع رابط ، قوانین iptables حذف می شوند.

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

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

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

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

برای بررسی وضعیت و کانفیگ رابط ، دستور زیر را اجرا کنید:

sudo wg show wg0
interface: wg0
  public key: r3imyh3MCYggaZACmkx+CxlD6uAmICI8pe/PGq8+qCg=
  private key: (hidden)
  listening port: 51820

شما می توانید با ip a show wg0 ، وضعیت رابط را تایید کنید:

ip a show wg0
۴: 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

WireGuard را می توان با Systemd نیز مدیریت کرد. به منظور بالا آوردن رابط WireGuard در زمان راه‌اندازی سیستم ، دستور زیر را اجرا کنید:

sudo systemctl enable wg-quick@wg0

شبکه سرور و کانفیگ فایروال :

IP forwarding باید فعال شود تا NAT قابل استفاده باشد. بدین منظور فایل /etc/sysctl.conf را باز کرده و خط زیر را اضافه و یا از حالت کامنت خارج کنید:

sudo nano /etc/sysctl.conf
net.ipv4.ip_forward=1

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

sudo sysctl -p
net.ipv4.ip_forward = 1

اگر از UFW برای مدیریت فایروال خود استفاده می‌کنید ، باید ترافیک UDP را برروی پورت ۵۱۸۲۰ باز کنید:

sudo ufw allow 51820/udp

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

راه‌اندازی کلاینت‌های Linux و macOS :

دستورالعمل نصب برای همه سیستم عامل‌های پشتیبانی شده در https://wireguard.com/install/ در دسترس است. در سیستم‌های لینوکس می‌توانید ، بسته را با استفاده از ابزار مدیریت بسته توزیع و در macOS می‌توانید با دستور brew نصب کنید. پس از نصب ، به منظور کانفیگ دستگاه کلاینت مراحل زیر را دنبال کنید. فرایند راه اندازی کلاینت Linux و 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

معنای تنظیمات موجود در بخش رابط ، مشابه معنای تنظیمات هنگام تنظیم سرور است:

  • Address: لیستی از آدرس‌های IPv4 یا IPv6 برای رابط wg0 که با ویرگول از همدیگر جدا شده‌اند.
  • PrivateKey: برای مشاهده محتویات فایل در دستگاه کلاینت ، دستور زیر را اجرا کنید:
sudo cat /etc/wireguard/privatekey

بخش peer شامل فیلدهای زیر است:

  • PublicKey: کلید عمومی peerای است که می‌خواهید به آن وصل شوید. (محتویات فایل /etc/wireguard/publickey سرور)
  • Endpoint: یک IP یا نام میزبان از peerای است که می‌خواهید به آن وصل شوید و سپس یک colon و شماره پورت (که peer ریموت آن را شنود می‌کند) می‌آید.
  • AllowedIPs: لیستی از آدرس‌های IPv4 یا IPv6 جدا شده با ویرگول است که ترافیک ورودی برای peer از آن‌ها مجاز است و ترافیک خروجی این peer برای آن هدایت می‌شود. در اینجا از ۰٫۰٫۰٫۰/۰ استفاده می‌کنیم ؛ زیرا در حال عبور دادن ترافیک هستیم و می‌خواهیم peer سرور بسته‌های نشأت گرفته از هر IP را ارسال کند.

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

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

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

نحوه تنظیم WireGuard VPN در اوبونتو 20.04

یک جفت کلید عمومی به طور خودکار ایجاد شده و برروی صفحه نمایش داده می‌شود.

نحوه تنظیم WireGuard VPN در اوبونتو 20.04

نامی برای tunnel وارد کرده و تنظیمات را به صورت زیر ویرایش کنید:

[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

در قسمت رابط ، یک خط جدید برای تعریف آدرس tunnel کلاینت اضافه کنید. در بخش peer ، فیلدهای زیر را اضافه کنید:

  • PublicKey – کلید عمومی سرور اوبونتو (/etc/wireguard/publickey file).
  • Endpoint: آدرس IP سرور اوبونتو و سپس یک کولون و پورت WireGuard (51820).
  • AllowedIPs: آدرس IPهای مجاز (در اینجا ۰٫۰٫۰٫۰/۰)

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

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

آخرین مرحله اضافه کردن کلید عمومی و آدرس 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 کپی کنند. پس از اتمام کار ، به دستگاه کلاینت برگردید و رابط مربوط به tunnel را وصل کنید.

کلاینت‌های Linux و macOS :

دستور زیر را برای وصل کردن رابط اجرا کنید:

sudo wg-quick up wg0

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

sudo wg
interface: wg0
  public key: gFeK6A16ncnT1FG6fJhOCMPMeY4hZa97cZCNWis7cSo=
  private key: (hidden)
  listening port: 53527
  fwmark: 0xca6c

peer: r3imyh3MCYggaZACmkx+CxlD6uAmICI8pe/PGq8+qCg=
  endpoint: XXX.XXX.XXX.XXX:51820
  allowed ips: 0.0.0.0/0
  latest handshake: 53 seconds ago
  transfer: 3.23 KiB received, 3.50 KiB sent

همچنین می توانید مرورگر خود را باز کرده و عبارت  “what is my ip” را تایپ کنید تا آدرس IP سرور اوبونتو خود را مشاهده کنید. برای متوقف کردن ارتباطات این tunnel باید رابط wg0 را قطع کنید:

sudo wg-quick down wg0

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

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

نحوه تنظیم WireGuard VPN در اوبونتو 20.04

جمع بندی :

ما به شما نحوه نصب WireGuard را روی دستگاه اوبونتو ۲۰٫۰۴ و کانفیگ آن به عنوان سرور VPN نشان دادیم.

امیدواریم مطالب مورد پسند بوده و از آن بهره لازم را برده باشید. خوشحال میشویم نظرات و سوالات خود را در قسمت دیدگاه به اشتراک بگذارید و ما را در شتابان هاست همراهی کنید.😊

برچسب ها: دستورات لینوکس

ارسال دیدگاه جدید