−25%

د Windows پر کلنۍ تادیه، تر ۳۱ اکتوبر. پلانونه وګورئ

EQVPS
پیل وکړئ

د WebRTC لپاره د TURN سرور (coturn) VPS

هغه کالونه چې د سخت NAT شاته ناکامېږي، TURN ریلې ته اړتیا لري. د خپل IPv4 سره سرور کې coturn: پورټونه، لنډمهاله پېژندنه، ازمول شوی ترتیب او پلان.

ستاسو WebRTC اپ په خپل Wi-Fi کار کوي او یوازې د هغه پېرودونکي لپاره ناکامېږي چې له هوټل زنګ وهي. د ملګري-ملګري رسنۍ د دواړو خواوو ترمنځ لارې ته اړتیا لري؛ کله چې دواړه د سخت NAT شاته وي، یا فایروال UDP وغورځوي، لار نشته او کال بس نه نښلي. هېڅوک تېروتنه نه ویني — یوازې نه ختمېدونکی «نښلول کېږي…».

‏TURN سرور همدې کالونو ته بدیله لار ده: دواړه خواوې خپلې رسنۍ ورته لېږي، او هغه یې ریلې کوي. که په یوه اپ کې ویډیو یا غږ اچوئ، د ټیم لپاره Matrix یا Jitsi چلوئ، یا د لوبې لپاره غږیز چټ جوړوئ، یو ته اړتیا لرئ. coturn معیاري خلاص سرچینې پلي کول دي، او سپک دي.

کوم پلان

‏TURN لږ CPU او حافظه لګوي. هغه څه چې کاروي یې بانډوېډ دی: هره ریلې شوې جریان دوه ځله له سرور تېرېږي، ننوتل او وتل. زموږ په پلانونو کې ټرافیک په 1 Gbit/s بې حده دی، نو پوښتنه دا ده چې په یو وخت کې څو ریلې شوي کالونه روان وي، نه دا چې څومره بیل به درته راشي.

په یو وخت ریلې شوي کالونهپلان
یو څو — یو ټیم، یو کوچنی اپNano-IP: ۲ vCPU، ۱ GB، ۱۵ GB ($8/میاشت)
لسګونهMicro-IP: ۲ vCPU، ۲ GB، ۲۵ GB ($10/میاشت)
ډېر، یا TURN د اپ سرور ترڅنګSmall-IP: ۴ vCPU، ۴ GB، ۳۵ GB ($16/میاشت)

پلان باید خپل IPv4 ولري — TURN ټول د ډېرو پورټونو پر راتلونکو نښلونو ولاړ دی، او NAT پلانونه له بهر یوازې SSH مني. زموږ د ځانګړي IP پلانونو کې عامه پته مستقیم د سرور پر انټرفېس ده، نو coturn یې د external-ip کرښې پرته مومي. سرور خپلو کاروونکو ته نږدې کېږدئ: آلمان یا فنلنډ، شتون د امر پر مهال ښکاري. که ستاسو لپاره مهم وي، په کریپټو تادیه، له KYC پرته.

پرانیستلو ته پورټونه: 3478 UDP او TCP، د ریلې شوو رسنیو لپاره 49152–65535 UDP، او که TLS زیاتوئ 5349 TCP.

نصب او ترتیب

پر Ubuntu 24.04 یا Debian 12 د root په توګه:

apt install -y coturn
ip -4 addr    # ستاسو عامه IP باید په انټرفیس کې ښکاره شي

ترتیب د یوه نوي ګډ راز سره ولیکئ:

SECRET=$(openssl rand -hex 32)
cat > /etc/turnserver.conf <<EOF
listening-port=3478
fingerprint
use-auth-secret
static-auth-secret=$SECRET
realm=turn.example.com
min-port=49152
max-port=65535
no-cli
no-multicast-peers
denied-peer-ip=0.0.0.0-0.255.255.255
denied-peer-ip=10.0.0.0-10.255.255.255
denied-peer-ip=100.64.0.0-100.127.255.255
denied-peer-ip=127.0.0.0-127.255.255.255
denied-peer-ip=169.254.0.0-169.254.255.255
denied-peer-ip=172.16.0.0-172.31.255.255
denied-peer-ip=192.168.0.0-192.168.255.255
EOF
echo "$SECRET"    # ستاسو بیک اېنډ دې ارزښت ته اړتیا لري
systemctl restart coturn
ufw allow 22/tcp && ufw allow 3478 && ufw allow 49152:65535/udp && ufw enable

کرښې denied-peer-ip مه پرېږدئ. له دوی پرته هر څوک چې باوري پېژندنه ولري ستاسو له ریلې څخه شخصي پتو ته رسېدای شي — حتی د سرور د خپل داخلي اړخ خدمتونو ته. موږ وکتل: د دې کرښو سره شخصي پتې ته ریلې د «403 Forbidden IP» سره ردېږي.

پېژندنه چې پای ته رسېږي

د use-auth-secret سره coturn داسې کارن نوم مني چې د پای وخت پکې وي، او داسې پټنوم چې د هغه HMAC وي. دا ستاسو بک‌اینډ جوړوي؛ راز هېڅکله د سرور اړخ نه پرېږدي. په Node.js کې:

const crypto = require("crypto");

// د TURN لپاره لنډمهاله کارن‌نوم/پټنوم (د TURN REST API طرحه چې coturn یې د use-auth-secret له لارې پوهېږي).
function turnCredentials(secret, user, ttlSeconds = 3600) {
  const username = `${Math.floor(Date.now() / 1000) + ttlSeconds}:${user}`;
  const credential = crypto.createHmac("sha1", secret).update(username).digest("base64");
  return { username, credential };
}

console.log(JSON.stringify(turnCredentials(process.env.TURN_SECRET, "alice")));

په براوزر کې له بک‌اینډ څخه نوې جوړه وغواړئ او RTCPeerConnection ته یې ورکړئ:

const { username, credential } = await fetch("/api/turn-credentials").then((r) => r.json());

const pc = new RTCPeerConnection({
  iceServers: [
    { urls: "stun:turn.example.com:3478" },
    {
      urls: ["turn:turn.example.com:3478?transport=udp", "turn:turn.example.com:3478?transport=tcp"],
      username,
      credential,
    },
  ],
});

ازموینه

له سرور څخه، په همدې طریقه د openssl په کارولو (دا دقیق هماغه پټنوم جوړوي چې د Node.js کوډ یې جوړوي — موږ پرتله کړل):

U="$(( $(date +%s) + 3600 )):test"
P=$(echo -n "$U" | openssl dgst -binary -sha1 -hmac "$SECRET" | base64)
turnutils_uclient -y -n 10 -u "$U" -w "$P" YOUR_SERVER_IP

په پای کې باید «Total lost packets 0» ووینئ. د غلط پټنوم سره پیرودونکی په «Cannot complete Allocation» ودرېږي — دا سرور دی چې خپل کار کوي.

موږ له ریښتیني Chromium هم وکتل: د iceTransportPolicy: "relay" او تازه پېژندنې سره براوزر له سرور relay کاندیدان ترلاسه کړل؛ د خراب پټنوم سره یو هم نه. که غواړئ خپل ترتیب همداسې وازمویئ، دا انتخاب د یوې شېبې لپاره فعال کړئ — هر کال د TURN له لارې تېرېدو ته اړ باسي.

‏TLS، که اړتیا وي

ځینې شبکې UDP بندوي او له ساده TCP سره سختي کوي؛ د TLS پر سر TURN له ډېرو یې تېرېږي. د turn.example.com لپاره سند واخلئ (certbot بس دی). د هغه فایلونه یوازې root لوستلی شي، خو coturn د turnserver کاروونکي په توګه چلېږي، نو coturn ته خپله کاپي ورکړئ:

mkdir -p /etc/coturn
cp /etc/letsencrypt/live/turn.example.com/fullchain.pem /etc/letsencrypt/live/turn.example.com/privkey.pem /etc/coturn/
chown turnserver: /etc/coturn/*.pem && chmod 640 /etc/coturn/privkey.pem
cat >> /etc/turnserver.conf <<'EOF'
tls-listening-port=5349
cert=/etc/coturn/fullchain.pem
pkey=/etc/coturn/privkey.pem
EOF
systemctl restart coturn && ufw allow 5349/tcp

لست urls ته turns:turn.example.com:5349?transport=tcp زیات کړئ. سندونه لنډمهاله دي، نو کاپي کول د certbot په deploy hook کې کېږدئ — که نه نو TLS به په لومړي نوي کولو کې په چوپتیا مات شي.

د پوهېدو وړ

  • ‏TURN خراب اتصال ښه نه کوي. یو ګام زیاتوي، نو سرور هغو خلکو ته نږدې کېږدئ چې ورته اړتیا لري.
  • که SFU چلوئ — لکه د Jitsi videobridge — هغه جلا برخه ده. TURN له هغو پیرودونکو سره مرسته کوي چې مستقیم ورته نشي رسېدای.
  • ټول امنیتي ماډل همدا راز دی. له فرنټ‌اینډ یې لرې وساتئ، او که کله هم ووت، بدل یې کړئ.

اړوند

د ځای پرځای کولو لپاره چمتو یاست؟ په crypto تادیه، بې KYC — شاوخوا یوه دقیقه کې چمتو.

اوس ځای پرځای کړئ →

پوښتنې

ولې د WebRTC کالونه اصلاً TURN سرور ته اړتیا لري؟

‏WebRTC هڅه کوي ګډونوال مستقیم سره ونښلوي، او معمولاً بریالی کېږي. کله چې دواړه خواوې د symmetric NAT یا هغه فایروال شاته وي چې UDP غورځوي — د هوټل Wi-Fi، د دفتر شبکې، ځینې ګرځنده شرکتونه — مستقیمه لار نه وي او کال په چوپتیا ناکامېږي. TURN سرور همدې کالونو ته رسنۍ ریلې کوي؛ هغه برخه چې ډېر یادېږي له لسو کالونو څخه شاوخوا یو دی.

ایا TURN په NAT پلان چلېدای شي؟

نه. پیرودونکي UDP او TCP 3478 او د ریلې پورټونو لړۍ ته نښلي، او NAT پلان له بهر یوازې ستاسو SSH پورټ مني. تاسو داسې پلان ته اړتیا لرئ چې خپل IPv4 ولري.

څومره بانډوېډ لګوي؟

هره ریلې شوې جریان دوه ځله له سرور تېرېږي — له یوې خوا دننه، بلې خوا ته بهر. په هر لوري د 1–2 Mbit/s یو په یو ویډیو کال پر سرور یو څو Mbit/s کېږي. CPU او RAM یې په سختۍ احساسوي؛ اصلي سقف د 1 Gbit/s پورټ دی.

ولې په اپ کې یو ثابت کارن نوم او پټنوم ونه ږدم؟

ځکه هر څه چې د براوزر په JavaScript کې وي عامه دي، او هغه TURN سرور چې پټنوم یې معلوم وي د ټول انټرنیټ لپاره وړیا ریلې ده. د use-auth-secret سره ستاسو بک‌اینډ داسې پېژندنه ورکوي چې پای ته رسېږي، د داسې راز سره لاسلیک شوې چې براوزر یې هېڅکله نه ویني.

ایا په 5349 پورټ TLS ته اړتیا لرم؟

په هغو شبکو کې مرسته کوي چې UDP بندوي او له ساده TCP سره سختي کوي. کله چې ساده TURN کار وکړ، بیا یې زیات کړئ: coturn ته د TURN کوربه نوم سند ورکړئ او 5349/tcp پرانیزئ. موږ د TLS له لارې ریلې هم ازمویلې.

تبصرې

لا تبصرې نشته. لومړی اوسئ.

یوه تبصره پریږدئ

تبصرې د ښکاره کیدو مخکې اعتدال کیږي.