Opening Firewall Ports: Amazon - EC2
Opening Firewall Ports: Amazon - EC2
Opening Firewall Ports: Amazon - EC2
Contents
1 Getting Started 1.1 Opening Firewall Ports 1.1.1 SIP 1.1.2 RTP 1.1.3 Additional EC2 NAT Notes 1.2 Sofia External IP Config 1.3 Updating Kernel Timer to 1000HZ 2 FAQ 2.1 Q: What distro should I use? 2.2 Q: Are there any public AMI images with FreeSWITCH pre-installed? 2.3 Q: Can I run this as a production switch? 3 External Links
Getting Started
There is not much difference between running on Amazon Elastic Cloud than any other Linux server, but here are a few things to keep in mind.
RTP
ec2-authorize default -P udp -p 16384-32768
The RTP port range given should match your configuration in switch.conf.xml.
Additional EC2 NAT Notes For SIP, setup a security group with the following ports enabled (easiest to do with Elasticfox):
udp udp udp tcp udp tcp tcp udp 16384:32768 4569 5060 5060 5080 5080 8000 8000
Contents
Amazon_EC2 Make sure you make the security group, and apply it before you boot the instance. After this, the quick and dirty install guide worked just fine for me. You'll just need to tweak the default dialplan to your needs. You may also need to make some of the following changes, particularly the external sip and RTP IPs (for which you will need to create an Elastic IP and attach it to your Instance.) conf/vars.xml
<X-PRE-PROCESS cmd="set" data="bind_server_ip=<AWS EIP>"/> <X-PRE-PROCESS cmd="set" data="external_rtp_ip=<AWS EIP>"/> <X-PRE-PROCESS cmd="set" data="external_sip_ip=<AWS EIP>"/>
conf/sip_profiles/internal.xml
<param <param <param <param <param <param <param <param <param name="aggressive-nat-detection" value="true"/> name="multiple-registrations" value="true"/> name="ext-rtp-ip" value="$${external_rtp_ip}"/> name="ext-sip-ip" value="$${external_sip_ip}"/> name="NDLB-received-in-nat-reg-contact" value="true"/> name="NDLB-force-rport" value="true"/> name="NDLB-broken-auth-hash" value="true"/> name="enable-timer" value="false"/> name="auth-calls" value="true"/>
conf/sip_profiles/external.xml
<param <param <param <param name="aggressive-nat-detection" value="true"/> name="ext-rtp-ip" value="$${external_rtp_ip}"/> name="ext-sip-ip" value="$${external_sip_ip}"/> 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"/>
Amazon_EC2
aptitude -y build-dep linux-image-$(uname -r)
aptitude -y install libncurses5 libncurses5-dev libelf-dev asciidoc binutils-dev kernel-package c cd /usr/src # This is 700mb so it takes a while to download and set up git clone git://kernel.ubuntu.com/ubuntu/ubuntu-lucid.git cd ubuntu* git checkout --track -b ec2 origin/ec2 fakeroot debian/rules clean
fakeroot debian/rules editconfigs #Choose: yes for amd64 -> Processor type and features -> Timer frequency -> change to 1000HZ (cha # this takes about 40min on a large instance fakeroot debian/rules binary #check an image deb file was created cd .. ls *.deb #Install dpkg -i linux-*.deb #Reboot instance cat /boot/config-`uname -r` | grep HZ # If not changed, then edit (towards the end of) /boot/grub/menu.lst
If you need more help then the #ubuntu-kernel IRC channel is the best place to ask, also read these pages: [1] [2] [3] [4]
FAQ
Q: What distro should I use?
Its up to you! However, some recommend CentOS.
811137716
099034111
Amazon_EC2
IMAGE ami-dae306b3 rbuilder-online/freeswitch-0.0.1-x86_11963.img.manifest.xml
099034111
NOTE: These are very old versions of FreeSWITCH. Your best bet will be to checkout the latest FS trunk and build a fresh copy on your EC2 instance. There's a more updated AMI available on EU region: foneAPI-generic-32bit-freeswitch-v1 (works very good on High-CPU Medium Instance - c1.medium)
External Links
Amazon EC2 subwiki - Getting started guide and links to documentation.