This is a small guide on how to install mediaproxy-ng from sources on RPM based systems like CentOS.
Naming convention
All these “ng” stuff are really confusing and sometimes it’s hard to distinguish the pieces among them.
- rtpproxy: it’s a media relaying software for RTP packets. It runs as a service and needs to be controlled and instructed using it’s own protocol.
- rtpproxy module: it’s the Kamailio module that controls the rtpproxy service, from the configuration scripts.
- rtpproxy-ng module: it’s the next generation (ng) module for Kamailio, based on the rtpproxy module. It serves as a replacement for that old module on newer systems.
- mediaproxy: it’s another media relaying software, similar to rtpproxy, but older.
- mediaproxy-ng: despite of its name, it is not the next-generation mediaproxy, but instead, the next generation of the rtpproxy (the service, not the module). From Kamailio, it can be controlled from both the rtpproxy and the rtpproxy-ng modules.
Before you begin: I’m using a x86 virtual machine. This means that you have to change the package names from i686 to x86_64 when necessary.
1. Kernel upgrade: you may not need to do this, so I recommend skipping this step unless you end up with an error like “undefined symbol” when trying to load the kernel module in the last step. In my particular case, I had to do it with my CentOS 6.0 VM.
yum upgrade kernel -y && reboot
2. Install development tools: several tools are needed to perform this step. Instead of manually listing them one by one, I would rather save some typing time by just installing the whole package 😉
yum groupinstall 'Development Tools'
3. Download the sources:Â from github
git clone https://github.com/sipwise/mediaproxy-ng.git
4. Install kernel development headers: this is going to be a kernel module, we need them.
yum install kernel-devel-$(uname -r)
5. A few other dependencies
yum install glib2-devel.i686Â pcre-devel.i686Â libcurl-devel.i686Â libcurl.i686Â xmlrpc-c.i686Â zlib-devel.i686Â iptables-devel.i686
6. Install mediaproxy-ng
cd /usr/src/mediaproxy-ng/daemon make
7. Copy the resulting binary to the PATH: the Makefile doesn’t provide a rule for installing the binary.
cp mediaproxy-ng /usr/bin/
8. Compile and install the iptables extension
cd ../iptables-extension make cp libxt_MEDIAPROXY.so /lib/xtables/
9. Compile and install the kernel module
cd ../kernel-module/ make cp xt_MEDIAPROXY.ko /lib/modules/$(uname -r)/updates/ depmod -a modprobe xt_MEDIAPROXY
10. Finally, if everything went fine, you should be able to see something like this:
# lsmod | grep -i mediaproxy xt_MEDIAPROXY 16512 0 ipv6 264702 39 xt_MEDIAPROXY,ip6t_REJECT,nf_conntrack_ipv6