Kendi VPS Sunucunuzda Asterisk ve FreePBX Kurulumu
Kendi VoIP sunucunuzu kurarken SIP trunk ayarları, RTP port aralıkları ve güvenlik duvarı yapılandırması ile toll fraud riskini önleme yöntemlerini bu rehberde bulabilirsiniz.
Self-hosted VoIP sunucusu nedir
Self-hosted VoIP sunucusu, kontrolünüz altındaki bir VPS üzerinde çalışan bir SIP sunucusudur; bu sayede aramalarınız barındırılan bir telefon hizmeti yerine kendi makineniz üzerinden yönlendirilir. VoIP (voice over IP), konuşmaları UDP paketleri olarak iletir. SIP (session initiation protocol), bir aramayı başlatan ve sonlandıran sinyalleşme protokolüdür. Ses verisi SIP üzerinden iletilmez; bu durum aşağıda belirtilen sorunların çoğunun temel nedenidir.
Çalışan bir sistem dört parçadan oluşur.
- PBX (private branch exchange) yazılımı. Asterisk yaygın bir tercihtir. Dahili numaraları ve arama planını (dialplan) yönetir.
- Uç noktalar. Bir kullanıcı adı ve parola ile PBX'e kayıt olan masaüstü telefonlar veya yazılım tabanlı telefonlar (softphone).
- SIP trunk. Sizi kamu telefon ağına bağlayan ve gerçek telefon numaraları kiralayan bir sağlayıcı ile yapılan ücretli hesap.
- Medya yolu. Ses verisini kendi UDP portları üzerinden taşıyan RTP (real-time transport protocol) akışları.
PBX'i kendi sunucunuzda barındırmak, telefon numaralarını da kendi sunucunuzda barındırdığınız anlamına gelmez. Numaralar bir operatörden gelir ve numara başına veya dakika başına ücret ödemeye devam edersiniz. Sahip olduğunuz şey; arama yönlendirme, sesli mesaj, kayıtlar ve dahili numara listesidir. Ayrıca, kötü niyetli kişilerin maddi kazanç sağlamak amacıyla saldırdığı bir hizmetin güvenliğinden de siz sorumlusunuz.
Kendi kendine barındırılan bir VoIP sunucusu hangi portlara ihtiyaç duyar?
SIP sinyalleşmesi, UDP ve TCP için 5060 numaralı portu, SIP over TLS (taşıma katmanı güvenliği) için ise 5061 numaralı portu kullanır. Bu portlar yalnızca çağrı kurulumunu taşır. Her çağrının ses verisi, RTP aralığından alınan bir porta gönderilen ayrı bir UDP akışıdır. Asterisk, rtpstart=10000 ve rtpend=20000 değerlerini belirleyen bir örnek rtp.conf ile gelir; derleme aşamasındaki varsayılan değerler ise 5000 ve 31000'dir. Her çağrı, biri RTP diğeri RTCP (RTP kontrol protokolü) için olmak üzere bu aralıktan iki port kullanır.
Bu ayrım, ilk denemelerin çoğunun başarısız olduğu noktadır. Çağrı bağlanır, her iki telefon da çağrıyı yanıtlanmış olarak gösterir ancak taraflardan hiçbiri ses alamaz; çünkü güvenlik duvarı 5060 numaralı porta izin verirken tüm RTP paketlerini düşürür. Sinyalleşme ve medya ayrı akışlardır, bu nedenle ayrı güvenlik duvarı kurallarına ihtiyaç duyarlar. Eğer bu ayrım sizin için yeniyse, herhangi bir portu açmadan önce Linux üzerinde portların ve dinleme soketlerinin nasıl çalıştığı konusunu okumanız faydalı olacaktır.
Aralığı açmadan önce daraltın. Yirmi bin port, küçük bir sistemin ihtiyaç duyduğundan çok daha fazladır. Çağrı başına iki port, iki yüzlük bir aralığın aynı anda yüz çağrıyı karşılayabileceği anlamına gelir.
[general]
rtpstart=10000
rtpend=10200Bunu sudo asterisk -rx "core reload" ile uygulayın.
Asterisk mi yoksa FreePBX mi kurmalısınız?
Asterisk bir motordur. Yapılandırmasını /etc/asterisk içindeki metin dosyalarıyla yapar ve dialplan'ı kendiniz yazarsınız. FreePBX ise Asterisk üzerinde çalışan, PHP ve JavaScript ile yazılmış bir web arayüzüdür; bu dosyaları sizin yerinize oluşturur ve sesli mesaj ile çağrı kuyrukları için modüller ekler.
Bir VPS üzerinde önemli olan fark, makinenin sahipliğidir. Ağustos 2026 itibarıyla resmi FreePBX 17 yükleyicisi, temiz bir Debian 12 sistemi bekler ve Asterisk, bir web sunucusu, bir veritabanı sunucusu ve PHP kurar. Bunu halihazırda başka servislerin çalıştığı bir sunucuya yönlendirirseniz sonuçtan memnun kalmazsınız. FreePBX'e kendi VPS'ini ayırın.
wget https://github.com/FreePBX/sng_freepbx_debian_install/raw/master/sng_freepbx_debian_install.sh -O /tmp/sng_freepbx_debian_install.sh
sudo bash /tmp/sng_freepbx_debian_install.shKurulum günlüğü /var/log/pbx/freepbx17-install.log dizinine kaydedilir; betik erken sonlandığında bakılması gereken ilk yer burasıdır.
FreePBX, oluşturduğu yapılandırma dosyalarının sahibidir. Bir FreePBX sunucusunda pjsip.conf dosyasını elle düzenlerseniz, GUI dosyayı bir sonraki kez yazdığında yaptığınız değişiklik kaybolur. FreePBX, elle yazılan yapılandırmalar için isminde _custom geçen ayrı dosyaları okur ve bunlara dokunmaz.
Dürüst bir kıyaslama şöyledir: FreePBX size bir GUI sunar ve telefon sisteminiz için internete açık bir giriş sayfası oluşturur. Ham Asterisk'in hiçbir web arayüzü yoktur ve her ayar, bir dosyada okuyabileceğiniz ve git üzerinde tutabileceğiniz belgelenmiş bir direktiftir. Eğer FreePBX kuracaksanız, web portunu kendi adresinizle kısıtlayın veya sisteme bir VPN üzerinden erişin; çünkü bir PBX yönetim arayüzü, doğrudan maddi kayba yol açabilecek bir saldırı hedefidir.
Sürüm notu, Ağustos 2026 itibarıyla doğrudur: Asterisk 22, Ekim 2024'te yayınlanan ve Ekim 2028'e kadar güvenlik yamaları alacak olan mevcut uzun süreli destek (LTS) sürümüdür. Asterisk 23 standart sürümdür. Ubuntu 24.04, universe deposunda Asterisk 20.6.0 sürümünü barındırır.
Ubuntu 24.04 uzerine Asterisk kurulumu
Dagitim paketi en hizli yoldur. Ubuntu paketi yamalar ve servis systemd altinda kendiliginden baslar.
sudo apt update
sudo apt install -y asterisk
sudo asterisk -rx "core show version"Kaynak koddan derleme yapmak, size mevcut uzun sureli destek (LTS) surumunu saglar.
sudo apt update
sudo apt install -y build-essential wget
cd /usr/local/src
sudo wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-22-current.tar.gz
sudo tar -xzf asterisk-22-current.tar.gz
cd asterisk-22.*
sudo contrib/scripts/install_prereq install
sudo ./configure
sudo make menuselect
sudo make -j"$(nproc)"
sudo make install
sudo make samples
sudo make config
sudo ldconfiginstall_prereq install komutu dagitiminiz icin gerekli derleme bagimliliklarini indirir, install_prereq test ise herhangi bir degisiklik yapmadan calistiracagi komutlari listeler. make menuselect modul secim ekranini acar; burada Codec Translators altinda codec_opus secenegini etkinlestirmeniz gerekir. make samples komutunu yalnizca temiz bir kurulumda calistirin, cunku bu komut ornek yapilandirma dosyalarini /etc/asterisk dizinine yazar. make config komutu init betigini /etc/init.d/asterisk yoluna kurar; systemd bunu SysV uyumluluk katmani uzerinden yonettigi icin sonrasinda sudo systemctl enable --now asterisk komutu calisir.
Hangi yolu izlerseniz izleyin, sudo asterisk -rvvv komutu calisan daemon'a baglanir ve size CLI arayuzunu sunar. Burada core show version komutunu calistirmak, sistemde kurulu olan surumu gosterir.
Bir SIP trunk ve bir dahili numara yapılandırma
PJSIP, güncel Asterisk sürümündeki SIP kanal sürücüsüdür. Yapılandırması /etc/asterisk/pjsip.conf dosyasında tutulur ve birbirine isimleriyle referans veren küçük, tiplendirilmiş bölümlerden oluşturulur. Farklı türdeki bölümler aynı ismi paylaşabilir; bu nedenle aşağıdaki her blok mytrunk olarak adlandırılmıştır.
[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0
[mytrunk]
type=registration
outbound_auth=mytrunk
server_uri=sip:sip.example.com
client_uri=sip:1234567890@sip.example.com
retry_interval=60
[mytrunk]
type=auth
auth_type=userpass
username=1234567890
password=REPLACE_WITH_A_LONG_RANDOM_SECRET
[mytrunk]
type=aor
contact=sip:sip.example.com:5060
[mytrunk]
type=endpoint
context=from-trunk
disallow=all
allow=ulaw
outbound_auth=mytrunk
aors=mytrunk
[mytrunk]
type=identify
endpoint=mytrunk
match=sip.example.comregistration nesnesi, sağlayıcınıza çağrılarınızı nereye ileteceğini bildiren REGISTER mesajını gönderir. identify nesnesi ise sağlayıcıdan gelen bir çağrının kaynak adresine göre bu uç noktayla nasıl eşleştirileceğini belirler; sağlayıcılar genellikle burada listelenmesi gereken birkaç adres yayınlar. Giden kayıt (outbound registration) ve uç nokta (endpoint) nesneleri kasıtlı olarak ayrı tutulmuştur: biri sağlayıcıya nerede olduğunuzu söyler, diğeri ise çağrılara ne yapılacağına karar verir.
Bir masaüstü telefonun üç nesneye daha ihtiyacı vardır.
[6001]
type=endpoint
context=internal
disallow=all
allow=ulaw
auth=auth6001
aors=6001
direct_media=no
[auth6001]
type=auth
auth_type=userpass
username=6001
password=REPLACE_WITH_A_LONG_RANDOM_SECRET
[6001]
type=aor
max_contacts=1direct_media=no, Asterisk'i medya yolunda tutar. Bu ayarı çıkarırsanız Asterisk, iki uç noktanın RTP trafiğini doğrudan birbirine göndermesini sağlamaya çalışır; bu durum, telefon bir ev yönlendiricisindeki NAT (ağ adresi çevirisi) arkasında olduğunda başarısız olur. Parolanın dahili numara ile aynı olmasına asla izin vermeyin. Yukarıdaki örnek, okunabilirliği korumak için 6001 numaralı dahili hat için password=6001 kullanır; ancak tarayıcılar ilk olarak tam olarak bu kalıbı dener.
/etc/asterisk/extensions.conf içindeki arama planı (dialplan), her bağlamın (context) ne yapmasına izin verildiğine karar verir.
[internal]
exten => 6001,1,Dial(PJSIP/6001,20)
exten => _9X.,1,Dial(PJSIP/${EXTEN:1}@mytrunk,60)
[from-trunk]
exten => 1234567890,1,Dial(PJSIP/6001,20)
same => n,Hangup()Bu iki bağlam bir güvenlik sınırıdır. from-trunk, sağlayıcıdan gelen çağrıları yönetir ve yalnızca 6001 numaralı dahili hattı çaldırabilir. _9X. kalıbına erişemez, bu nedenle dışarıdan gelen bir çağrı trunk hattınız üzerinden tekrar dışarıya arama yapamaz. Bağlamları birleştirirseniz, klasik ücretli dolandırıcılık yolunu oluşturmuş olursunuz: bir yabancı numaranızı arar, arama planınız hesabınız üzerinden dışarıyı arar ve faturasını siz ödersiniz.
Yapılandırmayı uygulayın ve kontrol edin.
sudo asterisk -rx "pjsip reload"
sudo asterisk -rx "pjsip show registrations"
sudo asterisk -rx "pjsip show endpoints"pjsip show registrations, Registered durumuyla mytrunk listesini göstermelidir. Rejected, sağlayıcının kimlik bilgilerinizi reddettiği anlamına gelir. Unregistered, REGISTER mesajınızın yanıtsız kaldığı anlamına gelir; bu durumda bir sonraki adımda güvenlik duvarını kontrol edin.
SIP ve RTP için güvenlik duvarı kuralları
Sinyalleşme ve medya farklı riskler taşıdığı için farklı şekilde ele alınmalıdır. 5060 numaralı portu yalnızca servis sağlayıcınızın gerçekten kullandığı adreslerle ve telefonlarınızın bulunduğu ağlarla sınırlandırın.
sudo ufw allow proto udp from 203.0.113.10 to any port 5060
sudo ufw allow proto tcp from 203.0.113.10 to any port 5060
sudo ufw allow 10000:10200/udp
sudo ufw status verboseRTP aralığı, medya trafiği genellikle sinyalleşmeden farklı bir adresten geldiği için daha fazla daraltamayacağınız kısımdır. Servis sağlayıcınızdan medya alt ağlarını isteyin ve eğer yayınlıyorlarsa erişimi bu ağlarla sınırlandırın. Aralığı yalnızca en yoğun saatinizin gerektirdiği büyüklükte tutun. Varsayılan politikalar, kural sıralaması ve ufw modelinin geri kalanı VPS için ufw güvenlik duvarı temel kılavuzu içerisinde ele alınmıştır.
IPv6 ayarlarını da kontrol edin. Eğer IPV6=no değeri /etc/default/ufw içerisinde ayarlanmışsa, ufw IPv6 trafiğini hiçbir şekilde filtrelemez; bu durumda :: adresine bağlı bir daemon, yukarıdaki kuralların hiçbiri uygulanmadan IPv6 üzerinden erişilebilir hale gelir. ufw ile IPv6 için port açma kılavuzu, bu iki protokol ailesinin nasıl farklılık gösterdiğini açıklar. Çoğu servis sağlayıcı, kontrol panelinde ayrıca bir ağ güvenlik duvarı sunar; bu güvenlik duvarı paketleriniz VPS'e ulaşmadan önce devreye girer, bu nedenle bir portun her iki yerde de açık olması gerekir.
SIP kaba kuvvet saldırıları ve ücretli dolandırıcılık isteğe bağlı sorunlar değildir
5060 numaralı portu genel bir IP adresine açtığınız anda taramalar başlar. Model sabittir: Birçok kaynak adresten gelen REGISTER ve INVITE istekleri, yaygın dahili numaraları ve yaygın parolaları dener. Asterisk her başarısızlığı günlüğe kaydeder ve satır şu şekildedir:
Request 'REGISTER' from '<sip:1000@198.51.100.20>' failed for '198.51.100.20:5060' (callid: 5f1a5c0d) - No matching endpoint foundBu konunun ciddi bir çaba gerektirmesinin nedeni paradır. Çalınan bir dahili numara, genellikle saldırgana pay ödeyen yüksek ücretli uluslararası numaraları aramak için kullanılır ve aramalar sizin kimlik bilgilerinizi taşıdığı için fatura size çıkar. Bu süreç makine hızında çalışır ve genellikle gece boyunca devam eder.
Altı kontrol mekanizması, isteğe bağlı değil, zorunlu bir sıkılaştırma adımıdır.
- Parolası kendi numarası veya kısa bir kelime olan bir dahili numara asla oluşturmayın.
openssl rand -base64 24ile bir parola oluşturun ve yapıştırın. - Anonim gelen aramaları kapalı tutun. PJSIP, tanımlanamayan aramaları varsayılan olarak reddeder ve yalnızca
anonymousadında bir uç nokta oluşturursanız kabul eder. Böyle bir uç nokta oluşturmayın. - Trunk bağlamını, yukarıda gösterildiği gibi dış arama yapabilen herhangi bir bağlamdan ayrı tutun.
- Sinyal trafiğini hem ufw üzerinde hem de servis sağlayıcınızın ağ güvenlik duvarında kaynak adresine göre kısıtlayın.
- SIP trunk sağlayıcınızda bir harcama limiti belirleyin ve asla aramadığınız uluslararası destinasyonları devre dışı bırakın. Diğer kontroller başarısız olduğunda zararı sınırlayan tek mekanizma budur.
- Asterisk günlüğü üzerinde fail2ban çalıştırın.
Asterisk ayrıca, tek bir adresten gelen tekrarlanan eşleşmemiş isteklerden sonra bir güvenlik olayı oluşturabilir. pjsip.conf dosyasının [global] bölümü, varsayılan değeri 5 olan unidentified_request_count ve varsayılan değeri 5 saniye olan unidentified_request_period parametrelerini alır. Bunlar birlikte, beş saniye içinde tek bir adresten gelen beş eşleşmemiş isteğin, fail2ban'in müdahale edebileceği bir güvenlik olayı oluşturduğu anlamına gelir.
Tarayıcıları fail2ban ile engelleyin
fail2ban, halihazırda yazılmış bir asterisk jail ile birlikte gelir. Bu jail, 5060 ve 5061 numaralı portları kapsar, /var/log/asterisk/messages dosyasını okur ve varsayılan olarak maxretry = 10 değerini kullanır. Jail, siz /etc/fail2ban/jail.local dosyasında etkinleştirene kadar kapalı kalır.
[asterisk]
enabled = true
maxretry = 5
findtime = 600
bantime = 86400sudo systemctl restart fail2ban
sudo fail2ban-client status asteriskSağlıklı bir sonuç, jail'in günlük dosyasını ve halihazırda yasaklanmış adreslerin sayısını listeler. Herkese açık bir 5060 portunda bu sayı bir gün içinde sıfırdan farklı bir değere ulaşır. Sunulan filtre, yukarıdaki No matching endpoint found bildirimleriyle eşleşir ve ayrıca Asterisk'in yapılandırılmış SecurityEvent satırlarıyla da uyumludur. Bu olaylar, /etc/asterisk/logger.conf dosyasında yorum satırı haline getirilmiş ayrı bir günlük kanalına gönderilir; bu nedenle, eğer bu kayıtları istiyorsanız ilgili kanalı orada etkinleştirin ve dosyayı jail'in logpath kısmına ekleyin.
[logfiles]
console => notice,warning,error
messages.log => notice,warning,error
security.log => securityGünlük tutucuyu sudo asterisk -rx "logger reload" ile yeniden yükleyin. Filtre ayrıca asterisk.service için bir journalmatch içerir, bu sayede günlük dosyalarını tutmak istemiyorsanız journal arka ucu da çalışacaktır. Kurulum, jail.local yapısı ve yanlışlıkla kilitlediğiniz bir adresin engelini kaldırma işlemleri Ubuntu 24.04 için fail2ban rehberi içerisinde ele alınmıştır.
Uzak bir VPS üzerinde gecikme ve kodek seçimi
Gecikme coğrafi konum tarafından belirlenir ve yapılandırma ile giderilemez. ITU-T G.114, normal bir görüşme için tek yönlü gecikmenin 150 ms altında tutulmasını önerir ve 400 ms'ye kadar olan süreyi hala kullanılabilir kabul eder. Telefondan gelen ses önce VPS'nize, ardından trunk sağlayıcınıza gider; bu nedenle yanlış bölgedeki bir VPS bu yolu iki kez kat eder. Sunucuyu telefonlara veya sağlayıcıya yakın bir yere yerleştirin. İkisi farklı yönlerdeyse telefonlara yakınlığı tercih edin; çünkü bu bacak genellikle jitter'ın en yoğun olduğu tüketici interneti üzerinden çalışır.
Kodek seçimi, çağrı başına bant genişliğini belirler. Buradaki her kodek 20 ms'de bir paket gönderir; bu da saniyede 50 paket demektir. Her paket, ses yüküne ek olarak 40 baytlık IP, UDP ve RTP başlığı taşır.
The data behind this chart
[
{
"label": "G.711 ulaw",
"payload_kbps": 64,
"ip_kbps": 80
},
{
"label": "G.722",
"payload_kbps": 64,
"ip_kbps": 80
},
{
"label": "Opus at 24 kbps",
"payload_kbps": 24,
"ip_kbps": 40
},
{
"label": "G.729",
"payload_kbps": 8,
"ip_kbps": 24
}
]G.711 ulaw, çoğu trunk üzerinde varsayılan değerdir. Yükü 64 kbps'dir ve başlıklarla birlikte devam eden bir çağrı her yönde 80 kbps maliyet oluşturur. 24 kbps hızındaki Opus 40 kbps seviyesindeyken, G.729 ses kalitesi ve CPU süresi pahasına 24 kbps değerine düşer. Bu rakamlar ölçümden ziyade başlık aritmetiğidir: yük hızı artı saniyede 50 paket üzerinden paket başına 40 bayt. Ethernet veya VLAN çerçeveleme, hat üzerinde biraz daha fazla yük ekler.
Transcoding (kod dönüştürme) CPU tüketir. Telefonlarınız ve trunk hattınız ulaw kullanıyorsa, yalnızca ulaw'a izin verin; böylece Asterisk sesi değiştirmeden iletir. Opus, kayıplı bağlantılarda iyi performans gösterir ancak Opus ile G.711 arasında kod dönüştürme yapmak için make menuselect içerisinde seçilen ve varsayılan olarak derlenmeyen harici codec_opus modülü gerekir.
Neler bozulur ve göreceğiniz hata dizisi
Arama bağlanıyor ancak ses gelmiyor. RTP paketleri ulaşmıyor. rtp.conf içindeki aralığın güvenlik duvarında açtığınız aralıkla aynı olduğunu doğrulayın, ardından bir arama yaparken sudo tcpdump -ni any udp portrange 10000-10200 ile paketleri izleyin. Hiç paket görünmüyorsa, güvenlik duvarınız veya servis sağlayıcınızın ağ güvenlik duvarı paketleri engelliyordur.
Ses yalnızca tek taraflı. Bir taraf, RTP paketlerini alamayacak bir adrese gönderiyor; bu bir port sorunu değil, adresleme sorunudur. VPS'nizin genel IP adresi doğrudan arayüzünde tanımlıysa NAT yapılandırmasına gerek yoktur. Eğer servis sağlayıcı VPS'ye bire bir eşlemeli özel bir IP adresi veriyorsa, transport kısmına genel adresi tanımlayın ve özel IP aralığınızı local_net içinde listeleyin.
[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0
local_net=10.0.0.0/8
external_media_address=198.51.100.5
external_signaling_address=198.51.100.5Log dosyasında No matching endpoint found hatası. İstek, IP adresi veya kullanıcı adı bazında hiçbir uç nokta (endpoint) ile eşleşmedi. Bir tarayıcıdan (scanner) geliyorsa bu normaldir ve fail2ban bunu engelleyecektir. Kendi servis sağlayıcınızdan geliyorsa, bu durum identify bölümünde sizi aradıkları adresin listelenmediği anlamına gelir.
Kayıt durumu Rejected olarak görünüyor. Servis sağlayıcı, auth bölümündeki kimlik bilgilerinizi reddetti. CLI üzerinde pjsip set logger on komutunu çalıştırın, bir REGISTER isteğini ve buna gelen yanıtı izleyin, ardından client_uri ve username değerlerini servis sağlayıcınızın size verdiği bilgilerle karşılaştırın.
Log dosyasında hiçbir yararlı bilgi yok. Asterisk varsayılan olarak notice seviyesi ve üzerindeki kayıtları messages.log dosyasına yazar. Sorunu yeniden oluştururken core set verbose 4 ve pjsip set logger on komutlarıyla seviyeyi yükseltin, ardından işlemi bitirince her ikisini de kapatın; çünkü SIP logger her paketi kaydeder.
Dış dünyaya açmadan önce
Bir PBX, kendi sunucunuzda barındırdığınız diğer uygulamalardan farklıdır. Hatalı bir web uygulaması yalnızca bir sayfanın açılmamasına neden olur. Hatalı bir PBX ise siz uyurken saatler içinde yüksek bir telefon faturasına yol açar. PBX'i başka hiçbir iş yapmayan bir VPS üzerinde çalıştırın, 5060 numaralı portu yalnızca bilinen adreslerle kısıtlayın, her dahili hat için rastgele bir parola belirleyin ve trunk hesabı için bir harcama limiti koyun. Sunucunun geri kalanı, VPS barındırma hizmetlerinin gerçek güvenliğini inceleyen bu rehberde belirtilen standart sunucu güvenliği gereksinimlerini karşılamalıdır.
FAQ
Kendi kendine barındırılan bir VoIP sunucusu için hangi portları açmam gerekir?
UDP ve TCP üzerinden SIP sinyalleşmesi için 5060 numaralı port, TLS üzerinden SIP kullanıyorsanız 5061 numaralı port ve RTP medyası için bir UDP port aralığı gereklidir. Asterisk'in örnek rtp.conf dosyası 10000 ile 20000 arasını kullanır; derlenmiş varsayılan değerler ise 5000 ile 31000 arasındadır. Her çağrı bu aralıktan iki port tüketir, bu nedenle iki yüz portluk bir aralık yüz eşzamanlı çağrıyı karşılar. RTP aralığını UDP olarak açın ve 5060 numaralı portu herkese açık bırakmak yerine servis sağlayıcınızın adresleri ve kendi ağlarınızla sınırlandırın.
Asterisk'i tek başına mı kurmalıyım yoksa FreePBX mi kullanmalıyım?
Daha küçük bir saldırı yüzeyi ve git üzerinde tutabileceğiniz yapılandırma dosyaları istiyorsanız, ayrıca dialplan yazmaya istekliyseniz ham Asterisk kurun. Dahili numaralar, sesli mesaj ve çağrı kuyrukları için bir grafik arayüz istiyorsanız FreePBX kurun. Ağustos 2026 itibarıyla FreePBX 17 yükleyicisi, temiz bir Debian 12 makinesi bekler ve Asterisk, web sunucusu, veritabanı sunucusu ve PHP kurulumlarını gerçekleştirir; bu nedenle ona özel bir VPS ayırın. FreePBX yönettiği yapılandırma dosyalarını yeniden oluşturur, bu yüzden manuel düzenlemeler yalnızca ilgili _custom dosyalarında yapılmalıdır.
Çağrı bağlandıktan sonra neden ses gelmiyor?
Sinyalleşme başarılı olmuş ancak medya akışı gerçekleşmemiştir. SIP çağrıyı 5060 numaralı port üzerinden kurmuştur; ses ise RTP aralığındaki bir porta giden ayrı bir UDP akışıdır ve bir şey bu akışı engellemektedir. rtp.conf içindeki aralığın güvenlik duvarınızda açık olan aralıkla eşleştiğini doğrulayın; ayrıca sunucudaki güvenlik duvarının yanı sıra servis sağlayıcınızın ağ güvenlik duvarını da kontrol edin. Bir çağrı sırasında sudo tcpdump -ni any udp portrange 10000-10200 komutunu çalıştırın: paket görünmüyorsa, bu paketler sunucuya ulaşmadan önce engelleniyor demektir.
SIP kaba kuvvet saldırılarını ve ücretli dolandırıcılığı nasıl durdurabilirim?
Her dahili numaraya, numaranın kendisiyle eşleşmeyen uzun ve rastgele bir parola atayın. Trunk hattınızın kullandığı bağlamı (context), dış arama yapabilen herhangi bir bağlamdan ayrı tutun; böylece gelen bir çağrı sizin hesabınız üzerinden dışarıya arama yapamaz. 5060 numaralı portu servis sağlayıcınızın adresleriyle sınırlandırın. /var/log/asterisk/messages dosyasını okuyan ve No matching endpoint found hataları üreten adresleri engelleyen fail2ban içindeki asterisk jail'ini etkinleştirin. Son olarak, bir harcama limiti belirleyin ve servis sağlayıcınız üzerinden kullanılmayan uluslararası destinasyonları engelleyin; çünkü geri kalan tüm önlemler başarısız olduğunda zararı sınırlayacak tek kontrol budur.
Uzak bir bölgedeki VPS çağrı kalitesini düşürür mü?
Evet, çünkü ses iki aşamadan oluşur: telefondan VPS'e ve VPS'ten trunk sağlayıcısına. ITU-T G.114, tek yönlü gecikmenin 150 ms altında olmasını önerir; yanlış konumlandırılmış bir VPS, bu bütçenin büyük kısmını sadece mesafe nedeniyle tüketebilir. Telefonlara yakın bir bölge seçin, çünkü bu aşama genellikle jitter (titreşim) sorununun en yoğun olduğu tüketici interneti üzerinden gerçekleşir. Kodek seçimi gecikmeyi düzeltmez, yalnızca bant genişliğini değiştirir; bu nedenle G.729 bayt tasarrufu sağlar ancak 200 ms'lik bir yolu kurtaramaz.