تولید کانفیگ های WireGuard

با استفاده از این پروژه می توانید همزمان برای چند Endpoint و آدرس های IP مختلف یک کانفیگ WireGuard تولید کنید

گیت هاب




GitHub release Pylint CodeQL

این پروژه یک Parser مخصوص برای WireGuard است که با استفاده از آن می توانید فایل های Tunnel خودتون رو همیشه به روز نگه دارید. معمولا به روزرسانی این فایل ها کار دشواری به حساب میاد به خصوص وقتی که چندین Endpoint مختلف داشته باشید و بخواهید مدام آدرس های آی پی را از لیست حذف یا به آن اضافه کنید.

فرض کنید که شما برای هر Endpoint نیاز به چنین فایل کانفیگی داشته باشید :

[Interface]
PrivateKey = <PRIVATE_KEY>
Address = <ADDRESS>
MTU = <MTU>

[Peer]
PublicKey = <PUBLIC_KEY>
Endpoint = wg-1.domain.xyz:1234
AllowedIPs = 1.2.3.4/32, 5.6.7.8/32, ...
PersistentKeepalive = <PERSISTENT_KEEPALIVE>

روش استفاده

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

برای مثال :

[
  {
    "name": "Company-Server-1",
    "address": "wg-1.domain.xyz:1234"
  },
  {
    "name": "Company-Server-2",
    "address": "wg-2.domain.xyz:1234"
  }
]

و فایل آی پی ها :

{
  "k8s-cluster": ["1.2.3.4/32", "5.6.7.8.9/32", "1.2.3.4/27"],
  "grafana": ["1.2.3.4/32", "5.6.7.8.9/32", "1.2.3.4/27"],
  "other": ["1.2.3.4/32", "5.6.7.8.9/32", "1.2.3.4/27"]
}

توجه داشته باشید که اسامی در نظر گرفته شده برای فایل آی پی ها ( k8s-cluster, grafana, … ) صرفا جهت راحتی کاربر بوده و هیچ استفاده دیگری نداره. با استفاده از این کلید ها میشه به سادگی آدرس ها رو دسته بندی کرد تا در آینده ویرایش اون ها سریع تر اتفاق بیوفته.

در نهایت باقی اطلاعات مورد نیاز Tunnel را در یک فایل env قرار دهید :

PRIVATE_KEY=
PUBLIC_KEY=
ADDRESS=
MTU=
PERSISTENT_KEEPALIVE=

در صورتی که نیاز به تنظیمات دیگری دارید ٬ گزینه مربوطه رو هم در فایل env و هم در فایل اصلی پروژه باید قرار دهید.

نحوه اجرا

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

make run

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

Company-Server-1.conf
Company-Server-2.conf