سرورهای STUN و TURN چه کاری انجام میدهند
WebRTC پشتوانه تماسهای تصویری، اشتراک صفحه و انتقال فایل بین مرورگرهاست. پیش از آنکه دو دستگاه بتوانند مستقیم با هم ارتباط بگیرند، هرکدام باید بداند دیگری از چه آدرسی در دسترس است. اما بیشتر دستگاهها پشت مودم خانگی یا فایروال سازمانی و با آدرسهای خصوصی قرار دارند که NAT آنها را ترجمه میکند. سرورهای STUN و TURN این مشکل را حل میکنند:
- STUN به دستگاه میگوید از دید اینترنت چه شکلی دارد: آدرس IP عمومی و پورت آن. با این اطلاعات، دو طرف اغلب میتوانند مستقیم به هم وصل شوند.
- TURN وقتی اتصال مستقیم ممکن نیست، مثلاً پشت NAT متقارن، فایروالهای سختگیر یا شبکههایی که فقط TCP را مجاز میدانند، نقش رله را بازی میکند.
اجرای تست
- آدرس سرور را با پیشوند stun:، turn: یا turns: وارد کنید (مثلاً stun:server.example.com:3478 یا turn:server.example.com:3478?transport=tcp).
- برای سرورهای TURN، نام کاربری و اعتبارنامه را وارد کنید. اگر از اعتبارنامههای زماندار استفاده میکنید، مطمئن شوید منقضی نشده باشند.
- در صورت نیاز سرورهای بیشتری اضافه کنید و تست را اجرا کنید. مرورگر شما کاندیداهای ICE را جمعآوری کرده و هرکدام را با نوع، آدرس، پروتکل و مدت زمان رسیدنش فهرست میکند.
اگر سرور شخصی ندارید، از گزینه تست سرورهای ما استفاده کنید تا ببینید یک نتیجه سالم چه شکلی دارد.
خواندن انواع کاندیدا
هر ردیف در نتیجه یک کاندیدای ICE است. معنای آن به نوعش بستگی دارد:
- host: آدرس محلی خود دستگاه. مرورگرهای امروزی برای حفظ حریم خصوصی آن را پشت یک نام تصادفی .local پنهان میکنند.
- srflx: آدرس عمومی که سرور STUN گزارش داده است. اگر آن را میبینید، STUN کار میکند.
- relay: آدرس رلهای که سرور TURN اختصاص داده است. اگر آن را میبینید، TURN و احراز هویت کار میکنند.
- prflx: آدرسی که حین بررسیهای اتصال کشف میشود؛ در تست یکطرفه بهندرت دیده میشود.
ستون زمان نشان میدهد هر کاندیدا چند میلیثانیه پس از شروع رسیده است. این عدد تصوری از فاصله و بار سرور میدهد؛ زمانهای چندصد میلیثانیهای میتوانند برقراری تماس را بهطور محسوسی کند کنند.
مشکلات رایج
- کاندیدای relay وجود ندارد: نام کاربری یا رمز عبور اشتباه، ناهماهنگی static-auth-secret روی سرور، یا مسدود بودن پورت TURN توسط فایروال.
- فقط روی UDP کار میکند: برای کاربران شبکههای محدود، ?transport=tcp یا turns: (TLS) روی پورت 443 را اضافه کنید.
- turns: کار نمیکند ولی turn: کار میکند: ممکن است گواهی TLS نامعتبر یا منقضی باشد یا با نام میزبان مطابقت نداشته باشد.
- آدرس srflx غیرمنتظره: با CGNAT یا VPN، آدرس عمومی متعلق به ISP یا ارائهدهنده VPN شماست.
تست کاملاً در مرورگر شما اجرا میشود؛ اعتبارنامههایی که وارد میکنید فقط توسط مرورگرتان برای اتصال به سروری که مشخص کردهاید به کار میروند. برای دیدن IP عمومی و وضعیت نشت WebRTC، به صفحه IP من چیست بروید. برای اندازهگیری Packet Loss واقعی روی یک کانال داده WebRTC، تست Packet Loss را امتحان کنید و پیش از بهینهسازی کیفیت تماس در برنامه خودتان، تأخیر پایه را با تست پینگ بسنجید.