环顾四周后,似乎在云提供商上运行 Freeswitch 存在一些问题。到目前为止,有关于running it on Amazon EC2 的官方文档,它说它不受官方支持。我会尝试使其适应谷歌云平台,也许这对你有用。
1 - 创建一个 Debian Jesse 8 实例
gcloud compute instances create freeswitch-test --image-family debian-8 --image-project debian-cloud --tags=freeswitch
2 - 创建所需的防火墙规则以打开它需要运行的端口。从文档看起来应该是UPD:16384-32768,TCP:8081-8082,TCP/UDP:5060,UDP:4569,TCP/UDP:8000
gcloud compute firewall-rules create freeswitch-policy --allow UDP:16384-32768,TCP:8081-8082,TCP:5060,UDP:5060,UDP:4569,TCP:8000,UDP:8000 --source-ranges=0.0.0.0/0 --target-tags=freeswitch
然后你希望 freeswitch 在启动时能够知道它的外部 IP。我认为最好的方法可能是保留一个静态 IP,然后创建一个转发规则:
gcloud compute addresses create freeswitch-ip --region us-east1
gcloud compute target-pools create freeswitch --region us-east1
gcloud compute target-pools add-instances freeswitch --instances freeswitch-test --instances-zone us-east1-b
gcloud compute forwarding-rules create freeswitch-forwarding --address freeswitch-ip --region us-east1 --target-pool freeswitch
现在在freeswitch上配置静态IP:
conf/vars.xml
<X-PRE-PROCESS cmd="exec-set" data="bind_server_ip=[YOUR-IP]">
<X-PRE-PROCESS cmd="exec-set" data="[YOUR-IP]"/>
<X-PRE-PROCESS cmd="exec-set" data="[YOUR-IP]"/>
conf/sip_profiles/internal.xml
<param name="aggressive-nat-detection" value="true"/>
<param name="multiple-registrations" value="true"/>
<param name="ext-rtp-ip" value="$${external_rtp_ip}"/>
<param name="ext-sip-ip" value="$${external_sip_ip}"/>
<param name="NDLB-received-in-nat-reg-contact" value="true"/>
<param name="NDLB-force-rport" value="true"/>
<param name="NDLB-broken-auth-hash" value="true"/>
<param name="enable-timer" value="false"/>
<param name="auth-calls" value="true"/>
conf/sip_profiles/external.xml
<param name="aggressive-nat-detection" value="true"/>
<param name="ext-rtp-ip" value="$${external_rtp_ip}"/>
<param name="ext-sip-ip" value="$${external_sip_ip}"/>
<param name="NDLB-force-rport" value="true"/>
conf/autoload/switch.conf.xml
=============================
<param name="rtp-start-port" value="16384"/>
<param name="rtp-end-port" value="32768"/>