SIP телефоны через IPFW

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Sindikat88
мл. сержант
Сообщения: 138
Зарегистрирован: 2010-09-02 15:07:54
Контактная информация:

SIP телефоны через IPFW

Непрочитанное сообщение Sindikat88 » 2017-05-23 16:15:19

Камрады, приветствую.
Имеем FreeBSD 10.3, выступающую в роли шлюза, и 40 SIP телефонов Cisco.
Телефоны подключенные через роутер работают корректно, но когда его подключаешь в локальную сеть, нет передачи голоса, хотя регистрацию на сервере он проходит.
PS. виртуальная АТС от Мегафон
Ядро собрано с опциями

Код: Выделить всё

options IPFIREWALL
options IPDIVERT
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=50
options IPFIREWALL_NAT
options LIBALIAS
options ROUTETABLES=5
options DUMMYNET
options HZ="1000" 
rc.firewall

Код: Выделить всё

$cmd 131 $skip ip from any to any 5060,11024,10000-65535 in via ${LanOut} keep-state
$cmd 132 $skip ip from any 5060,11024,10000-65535 to any out via ${LanOut} keep-state
tcpdump с внешнего интерфейса:

Код: Выделить всё

listening on igb1, link-type EN10MB (Ethernet), capture size 65535 bytes
16:09:13.814268 IP 192.168.180.101 > dd.dc2.ru.itoolabs.net: udp
16:09:14.320356 IP 192.168.180.101 > dd.dc2.ru.itoolabs.net: udp
16:09:15.327450 IP 192.168.180.101 > dd.dc2.ru.itoolabs.net: udp
16:09:17.331203 IP 192.168.180.101 > dd.dc2.ru.itoolabs.net: udp
16:09:21.353997 IP 192.168.180.101 > dd.dc2.ru.itoolabs.net: udp
16:09:29.386167 IP 192.168.180.101 > dd.dc2.ru.itoolabs.net: udp
16:09:45.464515 IP 192.168.180.101 > dd.dc2.ru.itoolabs.net: udp
tcpdump с внутреннего интерфейса:

Код: Выделить всё

listening on igb0, link-type EN10MB (Ethernet), capture size 65535 bytes
16:10:57.033629 IP dd.dc2.ru.itoolabs.net.sip > 192.168.180.101.sip: SIP, length: 2
16:10:59.524974 IP 192.168.180.101.sip > dd.dc2.ru.itoolabs.net.sip: SIP, length: 1472
16:10:59.525015 IP 192.168.180.101 > dd.dc2.ru.itoolabs.net: udp
16:11:00.031092 IP 192.168.180.101.sip > dd.dc2.ru.itoolabs.net.sip: SIP, length: 1472
16:11:00.031116 IP 192.168.180.101 > dd.dc2.ru.itoolabs.net: udp
16:11:01.035156 IP 192.168.180.101.sip > dd.dc2.ru.itoolabs.net.sip: SIP, length: 1472
16:11:01.035194 IP 192.168.180.101 > dd.dc2.ru.itoolabs.net: udp
16:11:03.037525 IP 192.168.180.101.sip > dd.dc2.ru.itoolabs.net.sip: SIP, length: 1472
16:11:03.037571 IP 192.168.180.101 > dd.dc2.ru.itoolabs.net: udp
16:11:04.530598 ARP, Request who-has 192.168.180.1 tell 192.168.180.101, length 46
16:11:04.530626 ARP, Reply 192.168.180.1 is-at 34:97:f6:01:47:39 (oui Unknown), length 28
16:11:07.058730 IP 192.168.180.101.sip > dd.dc2.ru.itoolabs.net.sip: SIP, length: 1472
16:11:07.058778 IP 192.168.180.101 > dd.dc2.ru.itoolabs.net: udp
16:11:15.091636 IP 192.168.180.101.sip > dd.dc2.ru.itoolabs.net.sip: SIP, length: 1472
16:11:15.091685 IP 192.168.180.101 > dd.dc2.ru.itoolabs.net: udp
16:11:27.033970 IP dd.dc2.ru.itoolabs.net.sip > 192.168.180.101.sip: SIP, length: 2
16:11:31.154241 IP 192.168.180.101.sip > dd.dc2.ru.itoolabs.net.sip: SIP, length: 1472
16:11:31.154294 IP 192.168.180.101 > dd.dc2.ru.itoolabs.net: udp
16:11:57.030296 IP dd.dc2.ru.itoolabs.net.sip > 192.168.180.101.sip: SIP, length: 2
Как правильно выпустить SIP телефоны в мир?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
wien
сержант
Сообщения: 151
Зарегистрирован: 2014-06-26 18:38:44
Откуда: DafaultCity
Контактная информация:

SIP телефоны через IPFW

Непрочитанное сообщение wien » 2017-05-23 17:14:58

Покажи вывод sysctl net.inet.ip.fw.one_pass

Аватара пользователя
ADRE
майор
Сообщения: 2646
Зарегистрирован: 2007-07-26 8:53:49
Контактная информация:

SIP телефоны через IPFW

Непрочитанное сообщение ADRE » 2017-05-23 19:04:49

keep-state плохо работает с udp. тем более sip телефония. либо статические правила либо т.е. 40 пользователей авторизуются на астериск или как вообще идёт звонок, в какой пк за натом ломятся пакеты, делают ли прямые соединения. в общем настроек много. чтоб просто телефон авторизовался на удаленном сервере типа "облачная телефония от РТК"? прописать статику и пользоваться. иначе много чего нет.
//del

Аватара пользователя
Sindikat88
мл. сержант
Сообщения: 138
Зарегистрирован: 2010-09-02 15:07:54
Контактная информация:

SIP телефоны через IPFW

Непрочитанное сообщение Sindikat88 » 2017-05-26 21:40:24

Виртуальная АТС от "Мегафон"
Астериска, и других SIP серверов в сети нет. Телефоны авторизуются и связываются непосредственно с сервером "Мегафон".
Т.е. вы предлагаете использовать статические IP + правила

Код: Выделить всё

$cmd 131 $skip ip from any to SIP_telephone 5060,11024,10000-65535 in via ${LanOut}
$cmd 132 $skip ip from SIP_telephone 5060,11024,10000-65535 to any out via ${LanOut}
Я правильно понял?
А Siproxd в данном случае мне не поможет?

Аватара пользователя
ADRE
майор
Сообщения: 2646
Зарегистрирован: 2007-07-26 8:53:49
Контактная информация:

SIP телефоны через IPFW

Непрочитанное сообщение ADRE » 2017-05-28 7:49:58

Нет. Предлагаю не использовать keep-srate.
Если у телефонов логин и пароль до учетки в сип мегафона, то должно работать нормально и надо запретить прямые соединения типа аппарат-аппарат. Чтоб связь была только через сервер. Статика, нужна, но не обязательна, для стабильности, если имеется сервер телефонии у абонента. Да и учетки разные должны быть на мегафон, клиент один на одну вешал, а потом думал, почему у него при второй линии всё висит и не работает.
//del

Аватара пользователя
Sindikat88
мл. сержант
Сообщения: 138
Зарегистрирован: 2010-09-02 15:07:54
Контактная информация:

SIP телефоны через IPFW

Непрочитанное сообщение Sindikat88 » 2017-05-30 9:00:52

К сожалению, не помогает :(

Код: Выделить всё

#SIP
$cmd 131 $skip ip from any to any 5060,11024,10000-65535 in via ${LanOut}
$cmd 132 $skip ip from any 5060,11024,10000-65535 to any out via ${LanOut}

Код: Выделить всё

00131     0       0 skipto 851 ip from any to any dst-port 5060,11024,10000-65535 in via igb1
00132  1349  265439 skipto 851 ip from any 5060,11024,10000-65535 to any out via igb1
вывод sysctl net.inet.ip.fw.one_pass

Код: Выделить всё

net.inet.ip.fw.one_pass: 1

Аватара пользователя
Sindikat88
мл. сержант
Сообщения: 138
Зарегистрирован: 2010-09-02 15:07:54
Контактная информация:

SIP телефоны через IPFW

Непрочитанное сообщение Sindikat88 » 2017-05-31 9:06:45

На всякий случай, весь конфиг IPFW:

Код: Выделить всё

#!/bin/sh
ipfw -f flush
ipfw -f pipe flush
ipfw -f queue flush

cmd="/sbin/ipfw add"

LanOut="igb1" # Внешняя сетевуха
NetOut="192.168.150.0/24" # внешняя сеть
IpOut="192.168.150.132" # Внешний IP

LanIn="igb0" # внутренняя сетевуха
NetIn="192.168.180.0/24" # Внутренняя сеть
ip_lan="192.168" # Шаблон внутреннего адреса
openvpn_if="tun0"       #OpenVPN port
IpVPN="192.168.225.0"
skip="skipto 851"
skip2="skipto 855"
skip3="skipto 999"
skip4="skipto 856"

#NAT
ipfw nat 123 config if igb1 log same_ports reset

#local
$cmd 005 allow all from any to any via $LanIn
#VPN
$cmd 006 allow all from any to any via tun0
# loopback
$cmd 010 allow all from any to any via lo0

#Incoming traffic to NAT
$cmd 030 nat 123 ip from any to any in via $LanOut

#Allow DYN rules
$cmd 040 check-state

# DNS resolve
$cmd 052 $skip ip from any 53 to me via $LanOut
$cmd 053 $skip ip from me to any 53 via $LanOut

# Outgoing server to Internet
$cmd 060 $skip ip from me to any out via $LanOut setup keep-state

# ICMP
$cmd 100 $skip icmp from any to any out via $LanOut keep-state

# OpenVPN
$cmd 101 $skip tcp from xxx.xxx.xxx.xxx to me 2000 in via ${LanOut}
$cmd 102 $skip tcp from me 2000 to xxx.xxx.xxx.xxx out via ${LanOut}
$cmd 103 $skip all from any to any in via ${openvpn_if}
$cmd 104 $skip all from any to any out via ${openvpn_if}

# Time
$cmd 120 $skip udp from any to any 123 out via $LanOut keep-state

#SIP
$cmd 131 $skip ip from any to any 5060,11024,10000-65535 in via ${LanOut}
$cmd 132 $skip ip from any 5060,11024,10000-65535 to any out via ${LanOut}

#Разрешаем определенный ICMP-трафик из мира к нам
$cmd 161 $skip icmp from any to me in via $LanOut icmptype 3,8,12
#Разрешаем определенный ICMP-трафик от нас в мир
$cmd 162 $skip icmp from me to any out via $LanOut icmptype 0,3,4,11,12
#Запрещаем прочий ICMP-трафик
$cmd 163 deny log icmp from any to me in via $LanOut icmptype 5,9,10,13,15,17

# Deny all inbound traffic from non-routable reserved address spaces
$cmd 200 deny all from 192.168.0.0/16 to any in via $LanOut
$cmd 201 deny all from 172.16.0.0/12 to any in via $LanOut
$cmd 202 deny all from 10.0.0.0/8 to any in via $LanOut
$cmd 203 deny all from 127.0.0.0/8 to any in via $LanOut
$cmd 204 deny all from 0.0.0.0/8 to any in via $LanOut
$cmd 205 deny all from 169.254.0.0/16 to any in via $LanOut
$cmd 206 deny all from 192.0.2.0/24 to any in via $LanOut
$cmd 207 deny all from 204.152.64.0/23 to any in via $LanOut
$cmd 208 deny all from 224.0.0.0/3 to any in via $LanOut

# Deny ident
$cmd 209 deny tcp from any to any 113 in via $LanOut

#Netbios
$cmd 210 deny tcp from any to any 137 via $LanOut
$cmd 211 deny tcp from any to any 138 via $LanOut
$cmd 212 deny tcp from any to any 139 via $LanOut
$cmd 213 deny tcp from any to any 81 via $LanOut

# Deny fragments packets
$cmd 214 deny all from any to any frag in via $LanOut

# Deny ACK packets that did not match the dynamic rule table
$cmd 215 deny tcp from any to any established in via $LanOut

# Allow in ssh from Internet
$cmd 300 allow tcp from xxx.xxx.xxx.xxx to me 22 in via $LanOut setup limit src-addr 1

# Reject incomming traffic from Inet
$cmd 400 deny log all from any to any in via $LanOut

# Reject outgoing traffic to Inet
$cmd 410 deny log all from any to any out via $LanOut

# NAT from local to Inet
$cmd 851 nat 123 log ip from $NetIn to any out via $LanOut

$cmd 806 allow ip from any to any

$cmd 853 allow ip from any to any
$cmd 854 $skip3 ip from any to any

$cmd 855 nat 123 log ip from $NetIn to any via $LanOut
$cmd 857 allow ip from any to any

$cmd 999 deny log all from any to any