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 از مخازن پیش فرض اوبونتو در دسترس است. برای نصب آن ، دستور زیر را اجرا کنید:
sudo apt update
sudo apt install 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 استفاده نمایید. تنظیمات در بخش رابط دارای معنی زیر است:
sudo cat /etc/wireguard/privatekey
مطمئن شوید که ens3 را بعد از -A POSTROUTING جایگزین می کنید تا با نام رابط شبکه عمومی شما مطابقت داشته باشد. شما به راحتی می توانید رابط کاربری را به صورت زیر بدست آورید:
ip -o -4 route show to default | awk '{print $5}'
فایل های 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
اکنون سیستم اوبونتو شما به عنوان یک سرور راهاندازی شده است.
دستورالعمل نصب برای همه سیستم عاملهای پشتیبانی شده در 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
معنای تنظیمات موجود در بخش رابط ، مشابه معنای تنظیمات هنگام تنظیم سرور است:
sudo cat /etc/wireguard/privatekey
بخش peer شامل فیلدهای زیر است:
در صورت نیاز به کانفیگ کلاینت های اضافی ، تنها کافیست همین مراحل را با استفاده از آدرس IP خصوصی دیگری تکرار نمایید.
بسته msi ویندوز را از وب سایت WireGuard دانلود کرده و نصب کنید. پس از نصب ، برنامه WireGuard را باز کرده و بر روی “Add Tunnel” -> “Add empty tunnel…” مطابق تصویر زیر کلیک کنید:
یک جفت کلید عمومی به طور خودکار ایجاد شده و برروی صفحه نمایش داده میشود.
نامی برای 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 ، فیلدهای زیر را اضافه کنید:
پس از اتمام کار ، روی دکمه “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 کپی کنند. پس از اتمام کار ، به دستگاه کلاینت برگردید و رابط مربوط به tunnel را وصل کنید.
دستور زیر را برای وصل کردن رابط اجرا کنید:
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 نشان دادیم.
امیدواریم مطالب مورد پسند بوده و از آن بهره لازم را برده باشید. خوشحال میشویم نظرات و سوالات خود را در قسمت دیدگاه به اشتراک بگذارید و ما را در شتابان هاست همراهی کنید.😊