Появилась задача перенести корпоративный VoIP сервис со шлюза, во внутреннюю сеть, но при этом оставить возможность подключаться к телефонии с внешнего мира.
Установку и перенос данных самих серверов телефонии я опускаю, так как это не тема данной заметки.
Настройка iptables(SRV1-CentOS)
Для того чтоб iptables корректно обрабатывал запросы корпаративного voip сервера нам необходимо подгрузить следующие модули для iptables — ip_nat_sip ip_conntrack_sip ip_nat ip_conntrack.
Примечание: Стоит отметить, что модули сами подгружают нужные зависимости если они им необходимы. Например для работы модуля ip_nat_sip, необходим модульи ip_nat, ip_conntrack_sip, а для работы ip_conntrack_sip необходим модуль ip_conntrack.
Подгружаем модули в ручном режиме:
1 2 3 4 5 6 |
\> sudo modprobe ip_nat_sip \> sudo lsmod | grep sip ip_nat_sip 37313 0 ip_conntrack_sip 41745 1 ip_nat_sip ip_nat 53357 2 ip_nat_sip,iptable_nat ip_conntrack 92005 5 ip_nat_sip,ip_conntrack_sip,iptable_nat,ip_nat,xt_state |
Для того, чтобы после перезагрузки системы все продолжало функционировать, необходимо добавить загрузку модулей при старте iptables. Для этого нам необходимо прописать необходимые модули в директиве IPTABLES_MODULES в iptables-config.
1 2 3 |
\> sudo nano /etc/sysconfig/iptables-config ........... IPTABLES_MODULES="ip_nat_sip ip_conntrack_sip ip_nat ip_conntrack" |
Создаем правил iptables:
1 2 3 4 5 6 7 8 9 |
\> sudo iptables -A INPUT -i lo -j ACCEPT \> sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT \> sudo iptables -A FORWARD -p udp --dport 5060 -j ACCEPT \> sudo iptables -A FORWARD -p udp -m multiport --dports 10000:20000 -j ACCEPT \> sudo iptables -A FORWARD -d 192.168.0.198 -p udp --dport 5060 -j ACCEPT \> sudo iptables -A FORWARD -s 192.168.0.198 -p udp --dport 5060 -j ACCEPT \> sudo iptables -A PREROUTING -p udp -d 192.168.1.2 --dport 5060 -j DNAT --to-destination 192.168.0.198:5060 \> sudo iptables -A POSTROUTING -o eth2 -j SNAT --to-source 192.168.1.2 \> sudo iptables -A POSTROUTING -s 192.168.0.198 -p udp -m multiport --dports 10000:20000 -j SNAT --to 192.168.1.2 |
После можно глянуть наши правила командами:
1 2 |
\> sudo iptables -L --line-number -vv \> sudo iptables -t nat -L --line-number -vv |
Теперь сохраним наши правила, чтоб при следующей загрузки системы нам не пришлось их заново писать в ручную.
1 |
\> sudo iptables-save > /etc/sysconfig/iptables |
В дальнейшем мы можем редактировать наши правила:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
\> sudo cat /etc/sysconfig/iptables # Generated by iptables-save v1.3.5 on Tue Jul 28 18:04:59 2015 *filter :INPUT ACCEPT [99902:15600954] :FORWARD ACCEPT [9957771:6952651527] :OUTPUT ACCEPT [1285899:228157450] # Разрешаем все на внутренней петле -A INPUT -i lo -j ACCEPT # Разрешаем форвард установленных соединения -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # Разрешаем форвард UDP для 5060 -A FORWARD -p udp --dport 5060 -j ACCEPT # Разрешаем форвард UDP для RTP -A FORWARD -p udp -m multiport --dports 10000:20000 -j ACCEPT # Разрешаем UDP трафик до сервера телефонии на порту 5060 -A FORWARD -d 192.168.0.198 -p udp --dport 5060 -j ACCEPT # Разрешаем UDP трафик с сервера телефонии на порту 5060 -A FORWARD -s 192.168.0.198 -p udp --dport 5060 -j ACCEPT COMMIT # Completed on Tue Jul 28 18:04:59 2015 # Generated by iptables-save v1.3.5 on Tue Jul 28 18:04:59 2015 *nat :PREROUTING ACCEPT [138269:15435049] :POSTROUTING ACCEPT [1136:102294] :OUTPUT ACCEPT [556:160699] # Пернаправляем входящие UDP соединения на порту 5060 c внешнего интерфейса на сервер телефонии -A PREROUTING -p udp -d 192.168.1.2 --dport 5060 -j DNAT --to-destination 192.168.0.198:5060 # НАТим весь трафик через внешний интерфейс -A POSTROUTING -o eth2 -j SNAT --to-source 192.168.1.2 # Пернаправляем исходящие UDP соединения на порту 5060 c сервера телефонии на внешний интерфейс -A POSTROUTING -s 192.168.0.198 -p udp -m multiport --dports 10000:20000 -j SNAT --to 192.168.1.2 COMMIT # Completed on Tue Jul 28 18:04:59 2015 |
Настройки Asterisk (SRV2-CentOS)
1 2 |
\> sudo cat /etc/asterisk/sip_general_custom.conf externip=192.168.1.2 |
На этом настройка была закончена, транки поднялись, связь за работала.
PS: На заметку, после переноса роли voip сервера на новое железо, встала необходимость перенастроить и телефоны, телефонов не много и в основном Dlink DPH-150S, но так же есть пару телефонов Thomson ST2022, настройка данных телефонов доставила больше всего смеха. Для того чтоб получить доступ к возможности администрирования аппарата необходимо войти на http://%phone_ip_address%/[u]admin.html[/u], Login: administrator Password: 784518.
Добавить комментарий