Gambar yang akrab?[root@pbx scripts]
Host dnsmgr Username Refresh State Reg.Time
sipnet.ru:5060 Y XXXXXXXXXXX 102 Request Sent Fri, 20 Mar 2020 09:19:31
87.103.236.26:5060 N XXXXXX 105 Request Sent Fri, 20 Mar 2020 09:20:55
sbc.megafon.ru:5060 Y XXXXXXXXXXX@ 165 Request Sent Fri, 20 Mar 2020 09:20:28
login.mtt.ru:5060 Y XXXXXXXXXXXXXX 105 Request Sent Fri, 20 Mar 2020 09:19:50
Begitu dia mendapatkan saya juga, dan saya menulis naskah.Saya mencoba mencari resep yang sudah jadi, yang sebagian besar menjadi begini: Saya mendapat ping alamat, menyalakan debug dan melihat di dalamnya persis apa yang dikatakan dalam kalimat pertama dari kutipan "paket pergi, tetapi jawabannya tidak datang." Tapi kenapa? Poin nomor 1 dikesampingkan SD. Poin nomor 2 - juga, karena koneksi uji dari alamat IP yang sama tetapi host internal yang berbeda bekerja. Poin nomor 4 adalah mutlak "zhost". Tetapi nomor 3 sudah lebih dekat. Itu hanya tidak memblokir, tetapi untuk beberapa alasan itu tidak memungkinkan host untuk bertukar paket dengan Asterisk. Dan ini terjadi pada 99% kasus setelah poin 2, ketika sesi PPPoE pecah. Sesi ini kemudian dipulihkan, dan akses ke Internet dari LAN juga tersedia, tetapi sesi UDP macet. Inilah yang dikatakan Mikrotik kepada kami melalui sesi mana ini:, .
1) .
2)
3)
4) .
..
[admin@MikroTik] > /ip firewall connection print where dst-address~":5060" and srcnat
Flags: E - expected, S - seen-reply, A - assured, C - confirmed, D - dying, F - fasttrack, s - srcnat, d - dstnat
0 SAC s udp 10.X.X.X:5060 80.75.130.83:5060 59m48s 0bps 0bps 2 172 2 191 1 358 335
1 SAC s udp 10.X.X.X:5060 193.201.229.35:5060 59m47s 0bps 0bps 1 611 1 662 996 786
2 SAC s udp 10.X.X.X:5060 212.53.40.40:5060 59m44s 0bps 0bps 1 837 1 830 1 114 259
3 SAC s udp 10.X.X.X:5060 87.103.236.26:5060 59m21s 0bps 0bps 2 501 2 509 1 614 239
Ini adalah keadaan sesi dalam mode normal ketika semuanya bekerja. Dengan tidak adanya registrasi, jika ingatanku benar, tidak ada flag S - seen-reply.Kami mencoba mengurangi sesi yang macet dengan perintah:[admin@MikroTik] > ip firewall connection remove [find where dst-address~":5060" and srcnat]
Dan, lihatlah, secara harfiah dalam batang kedua dipulihkan, panggilan berlanjut, kehidupan mekar dengan warna-warna cerah! Jadi kami sedang menulis naskah!Pertama, kita perlu mengendalikan Mikrot berdasarkan informasi dari Asterisk. Oleh karena itu, skrip akan dijalankan di cron setiap 5 menit pada host dengan Asterisk, dan kami akan mengelola Mikrot via ssh dengan sertifikat. Di sini semuanya dicat dengan sempurna - cara membuat kunci dan mengikatnya ke pengguna baru di mikrotia.Nah, skrip itu sendiri:#!/bin/sh
if /usr/sbin/asterisk -x "sip show registry" | grep -q "Request Sent"; then
echo "$(date) Resetting UDP connections on Mikrotik" >> /var/log/asterisk/mikrotik
ssh -l admin-ssh -i /XXXX/.ssh/id_dsa 10.X.X.X 'ip firewall connection remove [find where dst-address~":5060" and srcnat]'
sleep 2
asterisk -x "sip reload"
fi
Untuk jaga-jaga, 2 detik setelah reset dari sesi yang digantung, kami memperbarui pendaftaran - sehingga pasti berfungsi!Dari 4 September 2019, skrip bekerja 273 kali, dilihat dari log. Anda dapat menghitung berapa banyak dia menghemat waktu saya, dan para manajer serta klien mereka gelisah.PS Situasi serupa terjadi pada semua router yang saya temui bersamaan dengan Asterisk. Dan hanya Mikrot yang dapat memecahkan masalah tanpa mempengaruhi layanan lain. Sisa router harus dibebani dengan bodoh.