پرش به مطلب اصلی

افزودن رکوردهای DNS

زمانی که شما مقادیر NS دامنه‌ی خود را به مقادیر ارایه‌شده به‌وسیله‌ی آروان تغییر می‌دهید، سرویس DNS آروان برای دامنه‌ی شما فعال می‌شود و باید تمام رکوردهای DNS دامنه در پنل کاربری‌تان وارد شود تا توسط آروان Resolve و دامنه و تمام زیردامنه‌های شما بدون مشکل باز شود.

برای افزودن رکوردهای DNS لازم است با انواع و مقادیر متناسب با هر رکورد آشنا شده و شیوه‌ی افزودن آن‌ها در پنل کاربری را بدانید.

رکوردهای A و AAAA

این رکوردها شامل نشانی IP یک دامنه هستند. در این رکورد نام یک دامنه و آدرس IP مرتبط با سرور فیزیکی که محتوای آن دامنه روی آن قرار دارد، ذخیره می‌شود. دقت داشته باشید که منظور از این سرور فیزیکی، سرور اصلی میزبان سایت شماست.

عنوان: در این بخش نام دامنه‌ یا زیردامنه‌ی سایت شما قرار می‌گیرد. استفاده از کاراکتر @ در این بخش، به معنای اشاره به دامنه‌ی اصلی شماست. نام دامنه‌ای که در این بخش وارد می‌شود باید به‌شکل زیر باشد:

  • نام دامنه حتمن با یک حرف یا عدد آغاز شود نه یک کاراکتر خاص (مانند #، $ یا ...).
  • نام دامنه می‌تواند به حرف یا عدد ختم شود.
  • در نام دامنه نمی‌توان از کاراکترهای خاص (مانند @، $ یا ...) استفاده کرد.
  • نام یک دامنه نهایتن می‌تواند تا 63 کاراکتر باشد.

مقدار: در این بخش آدرس IP سرور اصلی میزبان سایت شما قرار می‌گیرد.

مدت‌ زمان اعتبار: مشخص‌کننده‌ی مدت‌زمانی است که این رکورد می‌تواند در سرورهای‌ ابر آروان Cache (ذخیره) شود. به‌شکل پیش‌فرض این مقدار 2 دقیقه است؛ به این معنی که اگر تغییری در رکورد DNS ایجاد کنید ۲ دقیقه زمان می‌برد تا در همه‌ی نقاط تغییر کند.


برای افزودن یک رکورد A از طریق API می‌توانید از درخواست زیر استفاده کنید:

curl --location 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/dns-records' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: API KEY 1 2 3 4' \
--header 'cache-control: no-cache' \
--header 'content-type: application/json' \
--data '{"type":"A","name":"test","cloud":false,"value":[{"country":"","ip":"8.8.8.8","port":null,"weight":null}],"upstream_https":"default","ip_filter_mode":{"count":"single","geo_filter":"none","order":"none"},"ttl":120}'

اگر سرور اصلی میزبان سایت شما، دارای IPV6 باشد باید از رکورد AAAA استفاده کنید. تنظیم این رکورد در بخش مدیریت رکوردها به‌شکل زیر است:

هم‌چنین برای افزودن رکورد AAAA به‌کمک API می‌توانید از نمونه درخواست زیر استفاده کنید:

curl --location 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/dns-records' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: API KEY 1 2 3 4' \
--header 'content-type: application/json' \
--data '{"type":"AAAA","name":"test","cloud":false,"value":[{"country":"","ip":"2001:0db8:85a3:0000:0000:8a2e:0370:7334","port":null,"weight":null}],"upstream_https":"default","ip_filter_mode":{"count":"single","geo_filter":"none","order":"none"},"ttl":120}'

رکوردهای CNAME و ANAME

وظیفه‌ی رکورد CNAME ارسال درخواست یک نام دامنه به یک نام دامنه‌ی دیگر است. برای نمونه اگر کاربری در مرورگر خود آدرس example.com را وارد کرد درخواست آن به دامنه‌ی example1.com ارسال شود. این رکورد مستقیمن به یک آدرس IP اشاره نمی‌کند.

برای تعریف این رکورد، در بخش عنوان نام دامنه‌ یا زیردامنه‌ای که درخواست‌های کاربران در مرحله‌ی اول به آن ارسال می‌شوند و در بخش مقدار نیز نام دامنه‌ای که درخواست‌های ارسالی کاربران باید به سمت آن فرستاده شوند را وارد کنید.

برای افزودن یک رکورد CNAME از طریق API می‌توانید از درخواست زیر استفاده کنید:

curl --location 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/dns-records' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: API KEY 1 2 3 4' \
--header 'content-type: application/json' \
--data '{"type":"CNAME","name":"test","cloud":false,"value":{"host_header":"source","host":"cname.example.com","port":-1},"upstream_https":"default","ip_filter_mode":{"count":"single","geo_filter":"none","order":"none"},"ttl":120}'

رکورد ANAME را می‌توان ترکیبی از رکورد A و رکورد CNAME دانست. تنها تفاوت این رکورد با CNAME در نوع عملکرد آن است که یک دامنه را مستقیمن به یک آدرس IP دیگر نگاشت می‌کند.

برای ارسال درخواست‌های ریشه‌ی دامنه (دامنه‌ی اصلی) به دامنه دیگر باید از رکورد ANAME استفاده کنید.

هم‌چنین برای افزودن رکورد ANAME به‌کمک API می‌توانید از نمونه درخواست زیر استفاده کنید:

curl --location 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/dns-records' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: API KEY 1 2 3 4' \
--header 'content-type: application/json' \
--data '{"type":"ANAME","name":"test","cloud":false,"value":{"host_header":"source","location":"aname.example.com","port":-1},"upstream_https":"default","ip_filter_mode":{"count":"single","geo_filter":"none","order":"none"},"ttl":120}'

رکورد NS

رکورد NS مشخص‌کننده‌ی DNS Server است که تمام رکوردهای مرتبط با یک دامنه، در آن ذخیره شده‌اند. یک دامنه می‌تواند چند رکورد NS داشته باشد که یکی از آن‌ها به DNS Server اصلی و سایرین به DNS Serverهای پشتیبان این سرور اصلی اشاره دارند.

دقت داشته باشید که تنها در موارد خاص به تعریف این رکورد در بخش مدیریت رکوردهای پنل کاربری ابر آروان نیاز خواهید داشت.

برای افزودن یک رکورد NS از طریق API می‌توانید از نمونه درخواست زیر استفاده کنید:

curl --location 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/dns-records' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: API KEY 1 2 3 4' \
--header 'content-type: application/json' \
--data '{"type":"NS","name":"ns","cloud":true,"value":{"host":"ns1.example.com"},"upstream_https":"default","ip_filter_mode":{"count":"single","geo_filter":"none","order":"none"},"ttl":120}'

رکورد MX

این رکورد مشخص‌کننده‌ی سرور ایمیلی است که ایمیل‌های یک دامنه باید به آن ارسال شوند.

این رکورد همیشه باید به یک نام دامنه و نه یک آدرس IP، اشاره داشته باشد.

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

ثبت رکورد MX با استفاده از API:

curl --location 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/dns-records' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: API KEY 1 2 3 4' \
--header 'content-type: application/json' \
--data-raw '{"type":"MX","name":"@","cloud":true,"value":{"host":"mail.example.com","priority":"10"},"upstream_https":"default","ip_filter_mode":{"count":"single","geo_filter":"none","order":"none"},"ttl":120}'

خروجی دستور dig رکورد MX:

رکورد SRV

رکورد SRV مشخص‌کننده‌ی هاست پشتیبانی‌کننده از یک سرویس خاص است. برای تعریف این رکورد در بخش «رکوردهای DNS»، نوع رکورد را SRV، عنوان را به شکل .service._proto.example.com_@ (برای مثال: .sip_tcp.example.com_@)، در بخش پورت، شماره پورتی که سرویس روی آن در حال اجراست و در بخش مقدار نیز رشته‌ای به فرم exampledomain.com وارد کنید. هم‌چنین اگر قصد تعریف چند رکورد SRV را دارید، می‌توانید از بخش‌های وزن و اولویت متناسب با نیاز خود استفاده کنید.

رکورد SRV مشخص‌کننده‌ی اولویت و وزن سرورهایی است که در آن لیست شده‌اند. مقدار اولویت در یک رکورد SRV امکان اولویت دادن به یک سرور که از یک سرویس مشخص پشتیبانی می‌کند را نسبت به سایر سرورها فراهم می‌کند. سروری که مقدار اولویت پایین‌تری به آن تخصیص داده شده است، ترافیک بیش‌تری نسبت به دیگر سرورها دریافت می‌کند. از سوی دیگر، کارکرد وزن نیز تا اندازه‌ای مشابه است، زیرا در میان چند سرور با وزن یک‌سان، سروری که وزن بیش‌تری دارد، ترافیک بیش‌تری دریافت می‌کند.

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

ثبت رکورد SRV با API:

curl --location 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/dns-records' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: API KEY 1 2 3 4' \
--header 'content-type: application/json' \
--data '{"type":"SRV","name":"_http._tcp.","cloud":true,"value":{"port":"80","priority":"0","target":"example.com","weight":"50"},"upstream_https":"default","ip_filter_mode":{"count":"single","geo_filter":"none","order":"none"},"ttl":120}'

رکورد TXT

رکورد TXT می‌تواند حاوی یک متن باشد که به دلایل مختلفی مورد استفاده قرار می‌گیرد که مهم‌ترین آن احراز هویت Mail و تعریف رکوردهای SPF و DKIM است. هنگام تعریف این رکورد، نوع رکورد را TXT قرار داده، در بخش عنوان @ (که به دامنه‌ی اصلی شما اشاره دارد) و در بخش مقدار نیز رشته‌ای متنی را وارد کنید. اگر قصد تعریف رکوردهای SPF یا DKIM را دارید، می‌توانید از راهنماهای زیر برای شیوه‌ی تولید رشته‌ متنی متناسبی که باید در این بخش قرار گیرد، استفاده کنید:

افزودن رکورد TXT با API:

curl --location 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/dns-records' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: API KEY 1 2 3 4' \
--header 'content-type: application/json' \
--data '{"type":"TXT","name":"txt","cloud":false,"value":{"text":"text-record"},"upstream_https":"default","ip_filter_mode":{"count":"single","geo_filter":"none","order":"none"},"ttl":120}'

رکورد CAA

رکورد CAA برای جلوگیری از صدور گواهی های امنیتی غیر مجاز برای یک دامنه توسعه داده شده است. با استفاده از یک رکورد DNS می‌توان مشخص کرد که کدام مرجع صدور گواهینامه (CA) می‌تواند برای دامنه‌‌، یک گواهی صادر کند. این موضوع باعث افزایش سطح امنیت و یکپارچگی در سازمان می‌شود .

برای ثبت نمونه رکورد در پنل آروان پس از انتخاب دامنه از پنل کاربری، روی رکوردهای DNS کلیک و یک رکورد CAA جدید ایجاد کنید.

  • در قسمت عنوان نام دامنه‌ی مورد نظر خود را وارد کنید. اگر رکورد مربوط به ریشه‌ی دامنه است (root دامنه) باید در فیلد عنوان عبارت "@" وارد شود و اگر مربوط به زیر دامنه‌ی خاصی است باید فقط نام آن وارد شود.

  • در قسمت تگ، رفتار DNS را با رکورد مشخص کنید. این تگ سه وضعیت را معتبر می‌داند:

    • Only Allow Specific Hostnames: این حالت بیان‌کننده‌ی این است که رکورد CAA فقط برای یک هاست‌نیم خاص معتبر است. (هاست‌نیمی که در قسمت عنوان وارد شده است.)
    • Only Allow Wildcard: این حالت بیان‌گر اعتبار رکورد CAA در سطح کل دامنه است که شامل ریشه‌ی دامنه (root دامنه) و تمامی زیردامنه‌های آن می‌شود.
    • Send Violation Report in CAA DNS Record: این ویژگی روشی را برای CAها تعیین می‌کند تا درخواست‌های گواهی نامعتبر را به صاحب دامنه گزارش کنند.
  • در قسمت CA نام CA مورد نظر خود را وارد کنید برای نمونه: (letsencrypt.org)

ساخت رکورد با استفاده از API:

curl --location --request POST 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/dns-records' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: API KEY 1 2 3 4' \
--header 'content-type: application/json;charset=UTF-8' \
--data-raw '{"type":"CAA","name":"@","cloud":true,"value":{"flag":0,"tag":"issuewild","value":"letsencrypt.org"},"upstream_https":"default","ip_filter_mode":{"count":"single","geo_filter":"none","order":"none"},"ttl":120}'

خروجی دستور dig رکورد CAA:

نمونه ‌‌Bind فرمت دستور CAA:

example.com.      120   IN   CAA   0 issuewild "letsencrypt.org"

رکورد TLSA

برنامه‌هایی که از طریق اینترنت ارتباط برقرار می‌کنند، اغلب به جلوگیری از دستکاری یا جعل ارتباطات خود نیاز دارند. پروتکل (Transport Layer Security (TLS این نوع امنیت را به کمک رمزنگاری فراهم می کند.

کیفیت امنیت سیستم‌های رمزنگاری به کلیدهایی که آن‌ها استفاده می کنند بستگی دارد. اگر کلیدهای خصوصی (Private Key) فاش شوند، یا اگر بتوان کلیدهای عمومی (Public Key) را با کلیدهای جعلی جایگزین کرد این رمزگذاری امنیت و کاربرد خود را از دست می‌دهد.

راهکار این مشکل آن است که ابتدا با استفاده از زیرساخت معماری DNSSEC از جعلی نبودن رکوردهای DNS اطمینان حاصل شود. سپس Hash کلید عمومی هاست مورد نظر یا خود کلید عمومی را در DNS سرور به ازای هاست، پورت و پروتکل درخواستی ذخیره کنیم تا هر بار که کاربر در مرورگر خود Public Key را از وب‌سرور درخواست کند آن را با مقدار اعلام شده در DNS سرور مطابقت دهد و از صحت آن اطمینان حاصل کند. رکورد TLSA برای این فرآیند طراحی و پیاده سازی شده است .

بر اساس RFC 6698 این رکورد شامل 4 فیلد Matching Type ،Usage ،Selector و در نهایت گواهینامه‌ی درخواستی است، که ساختار آن Hexadecimal است. هم‌چنین در قسمت عنوان نیز ۳ مقدار پورت، پروتکل و هاست باید وارد شود.

  • عنوان: در قسمت عنوان ابتدا باید به شکل زیر مشخص کرد که گواهی‌نامه‌ برای چه موردی قابل استفاده است. port._protocol.host.domain.com_
  • Selector: این مقدار نشان‌دهنده‌ی نوع گواهی است (Full و همراه با متا دیتا یا قسمتی از کلید عمومی). به عبارت دیگر مشخص می‌کند که کدام قسمت از گواهی TLS ارایه‌شده توسط سرور با داده‌های ارتباطی مطابقت دارد. 0: Full Certificate 1: Subject Public Key
  • Usage: این مقدار، نشان‌دهنده‌ی شیوه‌ی تایید و Trust بودن کلید عمومی است که دارای ۴ حالت است: 0: گواهینامه از CA Root و CA Intermediate استعلام و تایید می‌شود. 1: در رکورد قید شود که از کدام CA باید گواهینامه تایید شود و آن CA حتما باید Trust باشد. 2: فرآیند مشابه عدد یک است با این تفاوت که نیازی به Trust بودن آن نیست. 3: گواهینامه‌ی مورد نظر نیازی به تایید از CA ندارد برای مثال (Self–signed) است.
  • Matching Type: نحوه‌ی ارایه‌ی کلید عمومی مورد نظر را مشخص میکند که شامل ۳ حالت است: 0: کلید عمومی به‌شکل کامل ارایه شده و رمزگذاری نشده است. 1: کلید عمومی با الگوریتم SHA2-256 رمزگذاری شده است . 2: کلید عمومی با الگوریتم SHA2-512 رمزگذاری شده است .

پیشنهاد می‌شود که برای ساخت مقادیر و پارامترهای یک رکورد از ابزار ssl-tools استفاده کنید.

ساخت رکورد TLSA از طریق API:

curl --location --request POST 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/dns-records' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: API KEY' \
--header 'content-type: application/json;charset=UTF-8' \
--data-raw '{"type":"TLSA","name":"_443._tcp.","cloud":true,"matching_type":"0","selector":"0","usage":"0"},"upstream_https":"default","ip_filter_mode":{"count":"single","geo_filter":"none","order":"none"},"ttl":120}'

رکورد PTR

وظیفه‌ی رکورد PTR یا Pointer Record گردآوری اطلاعات برای Reverse DNS است که در نهایت باعث تطبیق نام دامنه با IP آن می‌شود. هرچند که در ابتدا رکورد PTR برای جلوگیری از اسپم شدن ایمیل‌های ارسالی از IPهای مربوطه توسعه داده شد ولی امروزه با استفاده از SPF ،DKIM و DMARC تایید دامنه به‌شکل بهتری انجام می‌شود.

اگر بخواهید که یک IP را در RIPE به نام خود ثبت کنید باید NS‌های RIPE را روی IP خود به‌شکل زیر ثبت کنید.

  • در ابتدا باید اوکتت چهارم IP خود را در قسمت عنوان رکورد ثبت کنید. ( در ساختار IP هر "." جدا کننده یک اوکتت است. برای مثال در IP 192.168.1.1 مقدار 192 بیانگر اوکتت اول، مقدار 168 برابر اوکتت دوم، 1 برابر اوکتت سوم و 1 آخر برابر اوکتت چهارم است.

  • در قسمت مقدار رکورد باید IP خود را به‌شکل <octet_3>.<octet_2>.<octet_1> ثبت کنید.

شما می‌توانید با استفاده از دستور dig از صحت رکورد درخواستی و در دسترس بودن آن اطمینان حاصل کنید:

اگر بخواهید رکورد بالا را از طریق API اضافه کنید باید درخواست خود را به‌شکل زیر ارسال کنید:

curl --location --request POST 'https://napi.arvancloud.ir/cdn/4.0/domains/3.2.1.in-addr.arpa/dns-records' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: Apikey 1-2-4-5' \
--header 'Content-Type: application/json' \
--data-raw '{"type":"PTR","name":"5","value":{"domain":"example.com"},"ttl":120}'