cjdroute.conf - فایل
پیکربندی Cjdns
فایل cjdroute.conf
موتور
مسیریابی cjdns
یعنی cjdns(8) را
عموماً از
طریق cjdroute(1)
پیکربندی
میکند.
این
پیکربندی
در قالبی
برگرفته از
JSON نوشته شده
است که
همچنین از
کامنتهای
سنتی C مانند
کامنتهای
تکخطی (//) و
چندخطی (/* و */)
پشتیبانی
میکند.
علاوه بر
این،
مقادیر
استفادهنشده
JSON در cjdroute.conf توسط
cjdns نادیده
گرفته
میشوند و
میتوانند
به عنوان
نوعی کامنت
منطبق با
استاندارد
JSON مورد
استفاده
قرار
گیرند.
"privateKey": "..."
کلید
خصوصی گره
شما. این
کلید باید
مخفی نگه
داشته شود
زیرا
محرمانگی و
یکپارچگی
دادههای
شما به آن
وابسته
است.
"publicKey": "..."
کلید
عمومی گره
شما که بر
اساس کلید
خصوصی
تولید
میشود.
دانستن این
کلید برای
همگان
بلامانع
است.
"ipv6": "..."
آدرس IPv6
گره شما
هنگام حضور
در شبکه. این
آدرس با
استفاده از
۱۶ بایت اول
هش دوگانه SHA-512
از کلید
عمومی شما
ایجاد
میشود.
تمام
آدرسهای IPv6
در cjdns باید با
"fc" شروع
شوند، در
غیر این
صورت
نامعتبر
هستند.
"authorizedPasswords": [...]
آرایهای
از
گذرواژهها
که
میتوانند
برای اتصال
(همتاسازی / peer)
به گره شما
استفاده
شوند.
"password": "..."
گذرواژهای
که
میتواند
برای
همتاسازی
با گره شما
استفاده
شود.
"user": "..."
یک رشته
خوانا برای
انسان که
مشخص
میکند
کدام
گذرواژه
توسط یک
همتا در
رابط
مدیریتی
استفاده
میشود. در
صورت عدم
درج،
گذرواژه با
موقعیت
مکانیاش
در آرایه
(شروع از 0)
شناسایی
خواهد شد.
مثال:
"authorizedPasswords":
[
{ "password": "AnExamplePassword", "user":
"Bob" },
{ "password": "YetAnotherExample", "user":
"Alice" },
{ "password": "j3fus4r3gkhv80xdz1yqc0qvn1p91hr",
"user": "Eve" }
]
"admin": {...}
شیئی که
مشخص
میکند
سرور RPC
مدیریتی به
چه آدرسی
متصل (bind) شود و
همچنین
گذرواژه
سرور RPC
مدیریتی را
تعیین
میکند. دو
رشته
الزامی
عبارتند از
"bind" که باید
در قالب "IP:PORT"
باشد، و "password"
که ترجیحاً
باید یک
رشته
طولانی و
تصادفی از
نویسهها
باشد.
"interfaces": {...}
شیئی که
مشخص
میکند cjdns به
کدام
رابطها
متصل شود و
با کدام
همتاها
ارتباط
برقرار کند.
دو رابط
مختلف وجود
دارد: UDPInterface و ETHInterface،
که هر دو
آرایه
هستند. در هر
آرایه
گزینههای
گوناگونی
وجود دارد
"bind": "..."
تعیین
میکند
رابط به چه
مقداری
متصل (bind) شود.
در UDPInterface، این
مقدار یک
رشته IP:PORT
مانند "0.0.0.0:12345"
است، در
حالی که در
ETHInterface یک رابط
شبکه مانند
"eth0"
میباشد.
"beacon": عدد
صحیح
این
گزینه فقط
در ETHInterface یافت
میشود و
مشخص
میکند که
آیا
بیکنهای
اتصال
خودکار
باید ارسال
شوند یا
شنود گردند.
این قابلیت
برای یک
شبکه محلی
با
پیکربندی
خودکار (zeroconf)
کاربرد
دارد.
0 --
غیرفعال.
1 -- پذیرش
بیکنهای
ورودی و
تلاش برای
اتصال به
فرستنده.
2 -- پذیرش
بیکنهای
ورودی و
انتشار
همگانی (broadcast)
بیکنها در
شبکه محلی.
"connectTo": {...}
مشخص
میکند که cjdns
باید با
رابط
مشخصشده
به کدام
گرهها
متصل شود.
میتوان
چندین گره
را در یک "connectTo"
قرار داد به
شرطی که با
کاما از
یکدیگر جدا
شوند. اگر
گرهای
آفلاین
باشد یا در
حین اجرا
آفلاین
شود، cjdns در
فواصل
زمانی منظم
برای
برقراری
مجدد اتصال
تلاش خواهد
کرد. تنها
تفاوت این
گزینه در UDPInterface
و ETHInterface این است
که UDPInterface به یک
"
IP:PORT" متصل
میشود در
حالی که ETHInterface
به یک آدرس MAC
وصل
میگردد.
مثال UDPInterface:
"connectTo":
{
"1.2.3.4:54321":
{
"login": "login From Your Peer's authorizedPasswords",
"password": "password From Your Peer's
authorizedPasswords",
"publicKey": "Your Peer's publicKey.k"
},
"5.6.7.8:46321":
{
"login": "cueball",
"password": "Correct Horse Battery Staple",
"publicKey": "Other Peer's publicKey.k"
}
}
"router": {...}
شیئی که
اطلاعات
پیکربندی
مسیریاب (router)
را در بر
دارد
"interface": {...}
نوع رابط
استفادهشده
برای اتصال
به شبکه cjdns را
مشخص
میکند. این
بخش به یک
رشته "type" و به
صورت
اختیاری به
یک رشته "tunDevice"
نیاز دارد.
رشته "type" نوع
رابط
استفادهشده
را تعریف
میکند،
هرچند در
حال حاضر
تنها "TUNInterface"
پشتیبانی
میشود.
رشته "tunDevice"
نام یک
دستگاه TUN
پایدار را
برای
استفاده
مشخص
میکند که
برای اجرای
cjdroute با کاربری
مجزا به جای
کاربر root مفید
است.
"ipTunnel": {...}
سیستمی
برای
تونلسازی ICANN
IPv4 و ICANN IPv6 از طریق
cjdns. این روش از
لایه سوئیچ
cjdns به عنوان
بستر VPN
استفاده
میکند.
نکته:
صرفاً
ویرایش
فایل
پیکربندی
برای
راهاندازی
درگاه ipTunnel
کافی نیست.
لطفاً برای
اطلاعات
بیشتر فایل
tunnel/README.md را در
مخزن گیت cjdns
مطالعه
فرمایید
"allowedConnections": [...]
گرههایی
که مجاز به
اتصال به ما
هستند
(مشخصشده
با کلید
عمومیشان)
و آدرس(های) IP
که باید به
آنها
اختصاص
یابد. مشخص
کردن تنها
یک آدرس نیز
بلامانع
است.
مثال:
"allowedConnections":
[
{
"publicKey":
"f64hfl7c4uxt6krmhPutTheRealAddressOfANodeHere7kfm5m0.k",
"ip4Address": "192.168.1.24",
"ip4Prefix": 24,
"ip6Address": "2001:123:ab::10",
"ip6Prefix": 0
},
{
"publicKey":
"ydq8csdk8p8ThisIsJustAnExampleAddresstxuyqdf27hvn2z0.k",
"ip4Address": "192.168.1.25",
"ip4Prefix": 24
}
]
"outgoingConnections": [...]
آرایهای
از گرهها
برای
برقراری
اتصال و
درخواست
آدرسهای IP.
مثال:
"outgoingConnections":
[
"6743gf5tw80ExampleExampleExampleExamplevlyb23zfnuzv0.k",
"pw9tfmr8pcrExampleExampleExampleExample8rhg1pgwpwf80.k",
"g91lxyxhq0kExampleExampleExampleExample6t0mknuhw75l0.k"
]
"security": [...]
آرایهای
که تعیین
میکند پس
از
راهاندازی،
برنامه به
چه کاربری
تغییر هویت
دهد و آیا
فرایند Angel از
این تغییر
کاربر
مستثنی شود
یا خیر.
"setuser": "username"
کاربری
که پس از
راهاندازی،
جهت حفظ
امنیت، به
آن جابهجا
میشود.
مقدار
پیشفرض "nobody"
است.
"exemptAngel": عدد
صحیح
مشخص
میکند که
آیا فرایند
Angel از تغییر
کاربر
مستثنی شود
یا خیر.
فرایند Angel
بخش کوچک و
ایزولهای
از کد است که
خارج از
محیط محدود
(sandbox)
سختگیرانه
هسته قرار
دارد اما
ترافیک
شبکه را
مدیریت
نمیکند.
این گزینه
باید فعال
باشد تا ipTunnel
بتواند
آدرسهای IP
را به طور
خودکار روی
دستگاه TUN
تنظیم کند.
0 -- غیرفعال
(False)
1 -- فعال (True)
"logging": {...}
مقدار
"logTo":"stdout" را
اضافه کرده
یا از حالت
کامنت خارج
کنید تا cjdns به
جای ارائه
گزارشها
از طریق
سوکت
مدیریتی،
لاگها را
در خروجی
استاندارد
بنویسد
"noBackground": عدد
صحیح
در صورت
تنظیم روی
مقداری غیر
از صفر، cjdns به
پسزمینه
منشعب (fork)
نمیشود.
استفاده از
این گزینه
همراه با
"logTo":"stdout" توصیه
میشود.
"dns": {...}
این بخش
برای
پیکربندی
قابلیتهای
DNS اضافهشده
به cjdns
استفاده
میشود.
متأسفانه
در حال حاضر
مستنداتی
برای این
بخش DNS در
دسترس نیست.
"keys": [...]
"servers": [...]
"MinSignatures": عدد
صحیح
/etc/cjdroute.conf
یک مسیر
معمول برای
قرارگیری
فایل
پیکربندی.