نصب و راه اندازی وایرگارد در سرور اوبونتو ۲۰.۰۴

نصب و راه اندازی وایرگارد بسیار سریع و ایمن است. وایرگارد در حدود ۴۰۰۰ خط کُد نوشته شده که این مزیت باعث میشه هر شخص یا هر کارشناس امنیت در کمترین زمان ممکن کُدهای نوشته شده را تجزیه و تحلیل کنید.

کُد کمتر باعث میشه، کُد عملکرد بهتری داشته باشه و تحلیل کُد آسانتر بشه - به این معنا که آسیب پذیری‌های وایرگارد آسانتر پیدا میشه و به حفظ امنیت WireGuard کمک می کنه.

راه اندازی WireGuard VPN بسیار ساده است - به تنها چیزی که نیاز دارید کلید‌های private/public هستند.


نصب وایرگارد در سرور اوبونتو ۲۰.۰۴


از آنجایی که وایرگارد بخشی از هسته لینوکس است، درصد استفاده از آن بالا میرود و همچنین بخشی از ریپازیتوری استاندارد اوبونتو است:

$ sudo apt update
$ sudo apt install wireguard



پیکربندی سرور


بعد از نصب سرور اوبونتو ۲۰.۰۴ و وایرگارد، مرحله بعدی تولید کلید‌های private و public در سرور است - برای این کار دستور زیر را در ترمینال اجرا کنید:

wg genkey | tee privatekey | wg pubkey > publickey

دستور فوق به ترتیب کلید private و public را برای استفاده در سرور را تولید میکند.

$ cat privatekey
$ cat publickey


حالا که کلیدهای سرور را داریم مرحله بعد ایجاد یک Interface است - برای این کار فایل wg0.conf را به عنوان فایلی برای پیکربندی سرور در آدرس دلخواه ایجاد میکنیم:

# cd /etc/wireguard
# umask 077
# vim wg0.conf

فایل wg0.conf را با تنظیمات زیر پر کنید:

[Interface]
PrivateKey = <Server Private Key>
Address = 10.0.0.1/24
ListenPort = 51820
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
SaveConfig = true


  • PrivateKey را با مقدار تولید شده در مرحله قبل جایگذاری کنید.
  • Address را در یک رنج از IP دلخواه مثل 10.0.0.1/24 یا 198.168.0.1/24 قرار دهید - این آدرس به عنوان آدرس سرور برای اتصال کلاینت به سرور در نظر گرفته شده است.
  • ListenPort میتواند یک پورت خالی در رنج UDP باشد - این پورت مشخص می کند که WireGuard از کدام پورت برای اتصالات ورودی استفاده خواهد کرد. که در اینجا از پورت 51820 که پورت پیشفرض وایرگارد است استفاده شده است.
  • PostUp و PostDown به ترتیب برای اجرای دستورات هنگام روشن و خاموش کردن Interface استفاده میشود - در اینجا از iptables برای تنظیم قوانین IP masquerade استفاده شده است تا به همه کلاینت‌ها اجازه دهد آدرس IPv4 و IPv6 سرور را به اشتراک بگذارند. در آخر وقتی Interface متوقف شود PostDown تمام قوانین از پیش تعریف شده را پاک میکند.
  • SaveConfig باعث میشود فایل وقتی کلاینت (peer) جدید اضافه میشود فایل، خود را در حالی که سرویس در حال اجرا است بطور خودکار بروزرسانی کند.


قبل از اینکه سرور را اجرا کنیم بهتر است مطمئن شویم فایروال در حال اجرا باشد و پورت وایرگارد ما را مجاز بداند:

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

$ sudo ufw allow 51820/udp

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

$ sudo iptables -A INPUT -p udp --dport 51820 -j ACCEPT

در این مرحله وقت آن است که VPN ایجاد شده را فعال کنیم:

$ sudo systemctl enable wg-quick@wg0

وضعیت سرور وایرگارد را بررسی کنید تا از فعال بودن آن اطمینان حاصل کنید:

$ sudo systemctl status wg-quick@wg0

تا اینجا اگر مراحل فوق را بدرستی انجام داده باشید، با دستور sudo wg باید خروجی مثل زیر داشته باشید:

interface: wg0
  public key: B8iZES15H6YYsdjg9sbFI2Qqpeh9ab1IS2jIFSp8pWQ=
  private key: (hidden)
  listening port: 51820


پیکربندی کلاینت


برای اتصال به VPN نیاز است client ایجاد کنیم در وایرگارد کلاینت را با نام peer می‌شناسند - وایرگارد برای تمام پلتفرم‌های دسکتاپ و موبایل موجود است. در اینجا فرض شده است که کاربر برای اتصال به VPN خود از لینوکس استفاده میکند.

هر peer باید دارای کلید‌های private/public خاص خود باشد. برای این کار کلید‌ها را همانند قبل که در سرور تولید کردیم در سمت کلاینت انجام می‌دهیم.

wg genkey | tee privatekey | wg pubkey > publickey

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

$ cat privatekey
$ cat publickey

همانند قبل فایل wg0.conf ایجاد میکنیم:

# cd /etc/wireguard
# umask 077
# vim wg0.conf

فایل wg0.conf را بصورت زیر پیکربندی کنید:

[Interface] 
PrivateKey = <Client Private Key> 
Address = 10.0.0.2/24 
DNS = 1.1.1.1, 1.0.0.1 

[Peer] 
PublicKey = <Server Public Key>
Endpoint = <server public ip>:51820 
AllowedIPs = 0.0.0.0/0


ما Interface جدیدی با نام wg0 در ماشین کلاینت ایجاد کردیم و پیکربندی فوق را به آن اختصاص دادیم. توجه داشته باشید که برای هر peer باید فایل و تنظیمات خاص خود را ایجاد کنیم - این یعنی اگر بخواهیم از طریق موبایل به سرور VPN متصل شویم باید همانند قبل یک peer جدید با کلید‌های private/public جدید تولید و آدرس سرور را تعیین کنیم.

Interface تازه ایجاد شده را همانند دستورات قبل در سرور اوبونتو خود اجرا میکنیم:

$ sudo systemctl enable wg-quick@wg0
$ sudo systemctl status wg-quick@wg0

شما تا اینجا یک کاربر یا peer جدید ایجاد کردید اما سرور وایرگارد شما هیچ اطلاعی از وجود آن ندارد - پس باید به سرور اوبونتو خود رفته و peer ایجاد شده را به فایل wg0.conf اضافه کنیم:

[Interface]
Address = 10.0.0.1/24
SaveConfig = true
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
ListenPort = 51820
PrivateKey = <Server Private Key>

[Peer]
PublicKey = <Client Public Key>
AllowedIPs = 10.0.0.2/32

تنها مرحله‌ای که باقی مانده است، اجرای سرویس wg در سمت کلاینت است:

$ sudo wg-quick up wg0

از دستورات زیر به ترتیب برای روشن/خاموش کردن سرویس wg در سرور و کلاینت استفاده میشود:

$ sudo wg-quick up wg0
$ sudo wg-quick down wg0

برای تست اتصال به سرور:

$ ping 10.0.0.1

حال شما یک اتصال امن بین server و client دارید!