フリヌスむッチ抵抗が最小の経路

いく぀かの歌詞


私がシステム管理者の怅子に座っおいるこずを芚えおいる限りそしお、党䜓の経隓はすでに15歳に近づいおいたす、オフィステレフォニヌの倚くの問題は、カリフォルニア州RHCPのカリフォルニケむションのハヌドコア゜フトポルノのラむンずしお認識されたした。 テレフォニヌは垞に䞊行枬定のように芋えたしたが、その管理ず構成に入らないようにしたした。 より正確には、䞀般的にこれらすべおの電話問い合わせを広い範囲で回避し、そのようなタスクをすべお「特別に蚓緎された人々」に任せたす。

しかし、よくあるこずですが、終わりはありたせん...新しい組織に就職した埌、私ぱリク゜ンのデゞタルアナログPBXずCisco 2911の「統合サヌビスルヌタヌ」の倚くの「幞せな」管理者になりたした。数十台のデゞタル゚リク゜ンず2〜3ダヌスのIP電話Ciscoず゚リク゜ン。 この玠晎らしさはすべお、か぀おハヌドコア゜フトポルノの同じ専門家によっお調敎されおいたしたが、今日たで、䞀般的な甚語でしか想像できたせん。 ただし、堎合によっおは、拡匵機胜ずは䜕か、条件付きおよび無条件の転送がどのように線成されるか、IVRがどのように配眮されるか、DIDがどのようになるかなど、私はただ調べなければなりたせんでした。 そしお、私は習埗した知識に熱心ではありたせんでしたはい、有甚なものすべおが面癜くお楜しいわけではありたせん。 構成の論理を理解した埌、tsiskaだけが倚少なりずも心地よい鉄片になりたした。

ある時点で、電話はただシステム管理者の家庭に䞍可欠な郚分であるずいう謙虚さが生たれたした。

そしお雷が打たれた


私が働いおいる組織は別の建物に移動したす。 もちろん、すべおのアナログおよびデゞタル経枈は氞遠の登録の堎所に残りたす。 2911の準備におけるTsiskovsky VoIPは50回線を提䟛し、Cisco電話の䟡栌は完党に非人道的です。 そしお、すでに来た謙虚さのおかげか、知識に察する生来の枇望のおかげか、たたはこれら2぀の芁因の組み合わせのおかげで、私は自分自身で新しい堎所で電話を䞊げるこずにしたした。

芁件はシンプルでした安いが、無料でより良い、 そしお理想的には、䜙分に支払うには、150回線以䞊から基本的な機胜埓業員、IVR、コヌル転送、䌚議、コヌル転送のための盎接の郜垂番号を提䟛したす。 最初に思い぀いた蚀葉は「SIP」、2番目は「アスタリスク」、3番目は「Google」でした。

AsteriskNOWがダりンロヌドされ、展開されたした。 tun然ずしたWebむンタヌフェむスに぀たずいた。 hardcornsoftporn'ovskimロゞック電話オペレヌタヌをもう䞀床評䟡し、再びGoogleにアクセスしたした。 そしお、偶然「FreeSWITCH」ずいう蚀葉に出䌚いたした。 新しい単語、新しい怜玢。 安定性、構成の容易さどこでもXML、少ないリ゜ヌス芁件、すぐに䜿える操䜜、さらに音声歪みのない数癟たたは数千の回線を備えた仮想環境で完璧に働く「人」の称賛に倀する開発者は仮想環境を掚奚したせんがリアルタむムでCPUにアクセスできないため。 わかった やっおみたす。
掚奚されるDebian 8 x64、1コア2 GHz、2ギガRAM、16ギガディスクの䞋で仮想マシンを䞊げたす。 私たちは、指瀺 1000 に埓っおむンストヌルを実行したす。 ゜フトフォンをセットアップしたした3CXのタむツが奜きでした 。

゜フトフォンが登録されたした。 テストコヌルは終了したした。 リャポタ。 Ericsson Dialog 4422も登録され、呌び出し音が鳎り、䞡方向に音声が聞こえたす。 リャポタ。 Cisco 7945にはSIP察応ファヌムりェアの予防接皮が行われ、SCCPの蚭定を比范的短期間螊った埌、デバむスも登録され、コヌルは問題なく行われたした。 リャポタ。 生産䞭のFreeSWITCH

歌詞を止める


゜ヌスデヌタ

1階のスむッチング機噚

  1. スむッチはMTSが所有しおおり、MTSにはポヌトのグルヌプが割り圓おられおいたす。 それからむンタヌネットを利甚し、SIPテレフォニヌを利甚したす。 タグ付きトラフィックvlan4
  2. スむッチには、vlanが割り圓おられおいるポヌトの専甚グルヌプがありたす。 むンタヌネットは、MTSのこれらのポヌトポヌト2-vlan2、Miralogicのむンタヌネットポヌト3-vlan3、MTSのSIPポヌト4-vlan4から来おいたす。 ポヌト1もトランクの䞋に割り圓おられ、ケヌブルは4階のサヌバヌルヌムに接続されたす。

4階のサヌバヌ機噚

  1. 1階からトランクを受け入れるスむッチ。 ポヌト1-トランク着信1階から。ポヌト2-トランク発信サヌバヌぞ。
  2. サヌバヌはVMware vSphere 6を実行しおいたす。このホストには、ゲヌトりェむおよびファむアりォヌルずしお機胜するMikrotik RouterOSを備えたゲストマシンがありたす。 このホストには、FreeSWITCHを備えたゲストマシンもありたす。 VSwitchがホスト䞊で構成され、察応するトラフィックのタグ付けされたポヌトが远加されたすvlan2、vlan3、vlan4。

E1を介したテレフォニヌは、MTSによっお提䟛されたす。 MTSから、テスト甚にSIPトランクが提䟛されたした。
これらの蚭定は、MTS゚ンゞニアから送られおきたした。

 !  SIP     9  5555555 ip-: 172.16.160.154 : 255.255.255.252 : 172.16.160.153   ,  -  sip-: 172.16.253.3, port: 5060 UDP media-: 172.16.253.4, port: 10000 - 30000 UDP : G711a/u   DTMF: rfc-2833 

FreeSWITCHを搭茉したマシンには、1぀のネットワヌクむンタヌフェむス、ネットワヌク蚭定がありたす。

 IP: 172.18.253.1 Netmask: 255.255.0.0 GW: 172.18.1.254 

フラむ、ミクロティック


Mikrotikでゲストマシンを消滅させ、別のネットワヌクむンタヌフェむスを远加しお、vlan4を割り圓おたす。 ゲストマシンの電源を入れるず、Mikrotikが起動し、新しいむンタヌフェむスが衚瀺されたす。

カスタマむズ可胜。
Mikrotikのむンタヌフェむス蚭定
利甚可胜なむンタヌフェむスをリストしたす。
/interface ethernet print

新たに远加されたむンタヌフェむスは、 ether6ずいう名前のむンタヌフェむスであるこずがわかりたす。
名前をif-sipに倉曎したす。
/interface ethernet set [ find default-name=ether6 ] name=if-sip

アドレスを構成したす。
/ip address add address=172.16.160.154/30 comment=mts-sip interface=if-sip network=172.16.160.152

Mikrotikでルヌティングを構成する
マングルを構成したすトラフィックが垌望どおりにマヌクされ、トラフィックがこれらのラベルに基づいお必芁なむンタヌフェむスのみを通過するように。
/ip firewall mangle add action=mark-routing chain=prerouting comment="mark sip traffic" new-routing-mark=sip src-address=172.18.253.1

ルヌティングを構成したす。
/ip route add comment=mts-sip distance=1 dst-address=172.16.0.0/16 gateway=172.16.160.153 routing-mark=sip

MikrotikでファむアりォヌルずNATを構成する
ファむアりォヌルを䜿甚しおフィルタリングを行わないように構成したすこの段階では、MTS PANアドレスからのSIPトランクからの悪意のあるハッカヌを恐れおいたせん。
/ip firewall filter
add chain=forward comment="allow any to mts-sip" dst-address=172.16.0.0/16 in-interface=if-local out-interface=if-sip src-address=172.18.253.1
add chain=forward comment="allow any from mts-sip" dst-address=172.18.253.1 in-interface=if-sip out-interface=if-local src-address=172.16.0.0/16


これら2぀の有効化ルヌルがルヌルリストの䞀番䞊にあるこずを確認しおください。 これにより、ファむアりォヌルの負荷が軜枛されたす。

私自身は、SIPゲヌトりェむがロヌカルネットワヌク䞊にあるこずを決定したした。

  • 個々の電話がNATの背埌にあるゲヌトりェむで動䜜するこずに抵抗があるため、trahomudiyaを䜿甚しないでください。
  • 内郚トラフィックは、発信ず着信の合蚈よりも10倍高く、
    圌をミクロティックに通す必芁はありたせん。
  • そしお䞀般に、ゲヌトりェむを䞀床セットアップするこずは、異なるファヌムりェアを備えた倚くの電話数癟台ず戊うよりも、将来的には異なるメヌカヌのものず戊うよりも先芋の明があるでしょう。

このため、 11 NATを構成したす 。
/ip firewall nat
add action=netmap chain=srcnat comment="source NAT for sip" src-address=172.18.253.1 to-addresses=172.16.160.154
add action=netmap chain=dstnat comment="destination NAT for sip" dst-address=172.16.160.154 to-addresses=172.18.253.1

サヌビスポヌトを無効にした堎合、sip backを有効にしたす。
/ip firewall service-port set sip ports=5060,5061,5080,5081 disabled=no

ゲヌトりェむ172.16.160.153をpingし、SIPゲヌトりェむ172.16.253.3をpingし、メディアゲヌトりェむ172.16.253.4をpingしたす。 pingが行きたす。 玠晎らしい。

これで、簡単で理解できる郚分が終わりたした。

フラむ、FreeSWITCH


「倖出」のために、電話に出䌚ったこずのないIT専門家の耳には銎染みのない次のこずを行う必芁がありたす。

免責事項 FreeSWITCHがデフォルトフォルダにむンストヌルされおいるこずを前提ずしおいたす / etc / freeswitch

最初に行うこずは、デフォルトのパスワヌドを倉曎するこずです。 しかし、あなたが思ったからではありたせん。 しかし、したがっお、あたりにも。 パスワヌドはダむダルプランによっお怜蚌され、パスワヌドがデフォルトず䞀臎する堎合、接続の前に10秒の䞀時停止が挿入されたす。 したがっお、最初にパスワヌドを倉曎したす。
ファむル /etc/freeswitch/vars.xml
 <X-PRE-PROCESS cmd="set" data="default_password=ballsofsteel"/> 

たたは、パスワヌド「1234」が本圓に奜きな堎合は、察応するブロックを線集するだけで、ダむダルプランから䞀時停止を削陀できたす。
ファむル /etc/freeswitch/dialplan/default.xml
 <condition field="${default_password}" expression="^1234$" break="never"> <action application="log" data="Fuck pretense just let's dance"/> <action application="log" data="Never Open $${conf_dir}/vars.xml and change default password."/> </condition> 

IPアドレス蚭定
ファむル /etc/freeswitch/sip_profiles/external.xml
 <param name="ext-rtp-ip" value="172.16.160.154"/> <param name="ext-sip-ip" value="172.16.160.154"/> 

地域蚭定
ファむル /etc/freeswitch/vars.xml
 <X-PRE-PROCESS cmd="set" data="outbound_caller_name=3435555555"/> <X-PRE-PROCESS cmd="set" data="outbound_caller_id=3435555555"/> <X-PRE-PROCESS cmd="set" data="default_areacode=343"/> <X-PRE-PROCESS cmd="set" data="default_country=RU"/> 

オペレヌタヌからの詳现
ファむル /etc/freeswitch/vars.xml
 <X-PRE-PROCESS cmd="set" data="default_provider=172.16.253.3"/> <X-PRE-PROCESS cmd="set" data="default_provider_username=3435555555"/> <X-PRE-PROCESS cmd="set" data="default_provider_password=not-used"/> <X-PRE-PROCESS cmd="set" data="default_provider_from_domain=172.16.253.3"/> <X-PRE-PROCESS cmd="set" data="default_provider_register=true"/> <X-PRE-PROCESS cmd="set" data="default_provider_contact=73435555555"/> 

最も泚意深い発蚀
おそらく、 default_provider_registerパラメヌタヌの倀が、オペレヌタヌが発行した蚭定 登録なしの接続、ポむントツヌポむント に適合しないこずに気付いたでしょう。 ただし、MTSの堎合、登録が必芁でしたが、それなしでは、倖郚から内郚ぞの呌び出しは通過したせんでした。 登録なしでは、内郚から呌び出すこずはかなり可胜でしたずいう事実にもかかわらず。 この機胜は、私がそれを手に入れお捕たえる前に、倧量の血を私に飲んだ。

承認が必芁な兞型的な兆候は、 407 Proxy Authentication Required゚ラヌです。

この゚ラヌは、SIPトレヌスを有効にするこずでキャッチされたす。
sofia global siptrace on

トレヌスはそれぞれオフになりたす
sofia global siptrace off

加入者番号を远加する内線
/ etc / freeswitch / directory / defaultフォルダヌに任意の名前のxmlファむルを䜜成したす。 番号ず䞀臎する名前のファむルを䜜成したした。
ファむル /etc/freeswitch/directory/default/4545.xml
 <include> <user id="4545"> <params> <param name="password" value="$${default_password}"/> <param name="vm-password" value="4545"/> </params> <variables> <variable name="toll_allow" value="domestic,international,local"/> <variable name="accountcode" value="4545"/> <variable name="user_context" value="default"/> <variable name="effective_caller_id_name" value=" .."/> <variable name="effective_caller_id_number" value="4545"/> <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/> <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/> <variable name="callgroup" value="techsupport"/> </variables> </user> </include> 

ゲヌトりェむを䜜成する
ほずんどの堎合、IPアドレスの蚭定を完了し、オペレヌタヌが提䟛した詳现をvars.xmlのフィヌルドに入力するず、問題なくオペレヌタヌのゲヌトりェむで登録が行われたす。

しかし、MTSは詳现を送信し、内線番号3435555555を取埗しなかったため、「問題なく」成功したせんでした。 セットアップのオペレヌタヌを疑う前に、ゲヌトりェむを構成するための無数のオプションを詊しおみたした。 ただし、その結果、オペレヌタヌは自分のSIPゲヌトりェむで加入者番号を䜜成し、デフォルト蚭定ではない堎合は近い蚭定ですべおが起動したした。 external.xmlファむルの名前を倉曎しお取埗したmts.xmlファむルのリストを次に瀺したす。
ファむル /etc/freeswitch/directory/default/mts.xml
 <include> <user id="$${default_provider}"> <gateways> <gateway name="$${default_provider}"> <param name="username" value="$${default_provider_username}"/> <param name="password" value="$${default_provider_password}"/> <param name="from-user" value="$${default_provider_username}"/> <param name="from-domain" value="$${default_provider_from_domain}"/> <param name="expire-seconds" value="600"/> <param name="register" value="$${default_provider_register}"> <param name="retry-seconds" value="30"/> <param name="extension" value="$${default_provider_contact}"/> <param name="context" value="public"/> </gateway> </gateways> <params> <param name="password" value="$${default_provider_password}"/> </params> </user> </include> 

ここで、ドメむンずネットワヌクにアクセス蚱可を远加しお、FreeSWITCHがドメむンずオペレヌタヌのネットワヌクからの接続を確立する詊みをブロックしないようにしたす。 そしお、はい、この段階で、すべおを簡単に解決できたす。 私の仕事は、最終的に組織倖に電話をかけるこずです。
ファむル /etc/freeswitch/autoload_configs/acl.conf.xml
これはできたせん
 <list name="lan" default="allow"> <node type="allow" cidr="172.18.0.0/16"/> <node type="allow" cidr="172.16.0.0/16"/> </list> <list name="domains" default="allow"> <node type="allow" domain="172.18.253.1"/> <node type="allow" domain="172.16.253.3"/> <node type="allow" cidr="172.16.0.0/16"/> <node type="allow" cidr="172.18.0.0/16"/> </list> 

 <list name="lan" default="allow"> </list> <list name="domains" default="deny"> <node type="allow" cidr="172.16.253.3/32"/> </list> 

泚意しおください
  1. ACLは、ドメむンおよびネットワヌクプロバむダヌのみを察象ずしおいたす。 ドメむンリストはデフォルトで拒吊する必芁がありたす。 ドメむン倉数の䜿甚は避けるべきであり、代わりに、/ 32マスクを持぀オペレヌタヌのゲヌトりェむのcidrずIPアドレスを䜿甚する必芁がありたす。 これらの基本的なルヌルに埓わないず、プロバむダヌのゲヌトりェむに着信コヌルのナヌザヌずパスワヌドを䜿甚しお匷制的にログむンさせダむゞェスト認蚌、間違ったコンテキストで内郚加入者番号を取埗するずいう圢で予期せぬ結果をもたらしたすダむゞェストの代わりに、ダむダルプランの䞭断など。
  2. これはファむアりォヌルではありたせん。 トラフィックフィルタリングは発生したせん。 これらは、FreeSWITCHサヌビスのアクセスリストです。

おめでずうございたす 成功した成功しないこずを確認できたす。
FreeSWITCHコン゜ヌルを起動したす。
fs_cli -rRS
xml'kiを再起動したす。
reloadxmlたたはF6をクリックしたす。
ACLを再起動したす。
reloadacl
電話接続を担圓するSofiaモゞュヌルを再起動したす。
reload mod_sofia
ゲヌトりェむぞの接続で䜕が埗られるかを調べたす。
freeswitch@phone> sofia status
Name Type Data State
=================================================================================================
external profile sip:mod_sofia@172.16.160.154:5080 RUNNING (0)
external::172.16.253.3 gateway sip:3435555555@172.16.253.3 REGED
172.18.253.1 alias internal ALIASED
internal profile sip:mod_sofia@172.18.253.1:5060 RUNNING (0)
=================================================================================================
2 profiles 1 alias

いいね オペレヌタヌのゲヌトりェむでの登録が成功したした。
詳现を確認したす。
sofia status gateway 172.16.253.3
freeswitch@phone> sofia status gateway 172.16.253.3
==============================================================
Name 172.16.253.3
Profile external
Scheme Digest
Realm 172.16.253.3
Username 3432788299
Password yes
From <sip:3435555555@172.16.253.3>
Contact <sip:gw+172.16.253.3@172.16.160.154:5080;transport=udp;gw=172.16.253.3>
Exten 73435555555
To sip:3435555555@172.16.253.3
Proxy sip:172.16.253.3
Context public
Expires 600
Freq 600
Ping 0
PingFreq 0
PingTime 0.00
PingState 0/0/0
State REGED
Status UP
Uptime 3932s
CallsIN 1
CallsOUT 1
FailedCallsIN 0
FailedCallsOUT 0
==============================================================

それは小さな問題でした。

ダむダルプラン
倖郚ぞの呌び出しの堎合、 mts.xmlファむルを最初から䜜成したす。/etc/freeswitch/dialplan/defaultフォルダヌ内の他のすべおのファむルは、拡匵子を倉曎しお名前を倉曎したり、別の堎所に移動したりするこずができたす。
ファむル /etc/freeswitch/dialplan/default/mts.xml
 <include><extension name="outbound-city-call"> <condition field="${toll_allow}" expression="local"/> <condition field="destination_number" expression="^(\d{7})$"> <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}"/> <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}"/> <action application="bridge" data="sofia/gateway/${default_gateway}/8${default_areacode}$1"/> </condition> </extension> <extension name="outbound-country.cellular-call"> <condition field="${toll_allow}" expression="domestic"/> <condition field="destination_number" expression="^8(\d{10})$"> <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}"/> <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}"/> <action application="bridge" data="sofia/gateway/${default_gateway}/8$1"/> </condition> </extension> <extension name="outbound-international-call"> <condition field="${toll_allow}" expression="international"/> <condition field="destination_number" expression="^(810\d+)$"> <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}"/> <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}"/> <action application="bridge" data="sofia/gateway/${default_gateway}/810$1"/> </condition> </extension> </include> 

倖郚から内郚ぞの呌び出しの堎合、 / etc / freeswitch / dialplan / publicフォルダヌにmts_inbound.xmlファむルを䜜成したす。 䞊蚘の類掚により、このフォルダヌの残りの郚分は、 * .bckたたは* .noloadに名前を倉曎できたす。
ファむル /etc/freeswitch/dialplan/public/mts_inbound.xml
 <include> <extension name="public_did"> <condition field="destination_number" expression="^(73435555555)$"> <action application="set" data="domain_name=$${domain}"/> <action application="transfer" data="4545 XML default"/> </condition> </extension> </include> 

たあ䜕。 指を亀差させお、確認しおください。

FreeSWITCHコン゜ヌルを再床起動したす。
fs_cli -rRS
xml'kiを再起動したす。
reloadxmlたたはF6をクリックしたす
電話接続を担圓するダむダルプランモゞュヌルを再起動したす。
reload mod_dialplan_xml
内偎からダむダルしおみたす。 倖偎から内偎にダむダルしおみたす。 「1回、2回、2回」ずいうテストを喜んで繰り返したす。サりンドは双方向に進むず確信しおいたす。 䞡方向の終了信号の通過を確認したす。

゜フトポルノに参加できおうれしいです。

PS特定の線集の意味の解読を意図的に避けたした。 郚分的には、パラメヌタヌの名前ずシステム倉数が非垞にわかりやすいためです。 郚分的には、テレフォニヌのタヌボロヌンチを各バンチの蚀い蚳で混乱させないためです。

PPSこのテキストの執筆は、同じタスクが解決されるテキストが統合されたわかりやすいマニュアルを芋぀けるこずができなかったずいう恐怖によっお指瀺されたしたポむントツヌポむント認蚌で電話を䞊げるために、できるだけ簡単に。 䜕らかの理由で文曞が豊富であるこずには、議論や実䟋が豊富に含たれおいたせん。 たたは、たたたた私がうたくいく「同じ䟋」をグヌグル怜玢するよりも早くすべおを読み終えたのです。 いずれにせよ、将来のために私ず同僚のためのチヌトシヌトにしおください。

Source: https://habr.com/ru/post/J348458/


All Articles