SIP за NAT (asterisk и iptables)

Автор: Admin | 16.04.2014

Минимальный набор правил Iptables для работы SIP сервера, например Asterisk, находящегося за NAT’ом.


Для работы SIP за NAT‘ом, организованным с помощью iptables, необходимо следующее:

# Переменные
IPT="/sbin/iptables"
INET_IP="x.x.x.x" # Внешний IPшник 
ASTER_IP="192.168.0.10" # IPшник SIP сервера
EXTEN_IP="192.168.0.100" # IPшник SIP клиента
# Подключить модули:
/sbin/modprobe nf_conntrack_sip
/sbin/modprobe nf_nat_sip
/sbin/modprobe nf_conntrack_h323
# Разрешить пересылку пакетов
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -p udp --dport 5060 -j ACCEPT
$IPT -A FORWARD -p udp -m multiport --dports 10000:20000 -j ACCEPT
# Пробросить SIP порт до сервера
$IPT -t nat -A PREROUTING -p udp -d $INET_IP --dport 5060 -j DNAT --to-destination $ASTER_IP:5060
# Разрешить NAT для диапазона "голосовых" портов
$IPT -t nat -A POSTROUTING -s $ASTER_IP -p udp -m multiport --dports 10000:20000 -j SNAT --to $INET_IP
$IPT -t nat -A POSTROUTING -s $EXTEN_IP -p udp -m multiport --dports 10000:20000 -j SNAT --to $INET_IP

Если клиентов несколько — для каждого надо открыть NAT на диапазон портов 10000:20000, как в последнем правиле.
Этого достаточно для работы VoIP сервера и клиентов за NAT’ом.


Если есть внешние клиенты, подключающиеся из интернета, то не будет проходить голос в их направлении. Для решения надо прокинуть порты, по которым ходит голос, на SIP сервер:

$IPT -t nat -A PREROUTING -p udp -d $INET_IP -m multiport --dports 10000:20000 -j DNAT --to-destination $ASTER_IP

Но будет лучше взять у провайдера дополнительный IP и повесить телефонию на него.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *