LINUX.ORG.RU
ФорумAdmin

Asterisk и iptables


0

1

Всем приветы! Нужна помощь, есть ubuntu сервер с двумя интерфейсами ppp0 смотрит в наружу со статикой и eth0 смотрит в локалку 172.1.1.1/24.За шлюзом находится сервер asterisk имеющии ип 172.1.1.2 На самом шлюзе стоит iptables, делает нат, и перенаправляет трафик от конкретных ипов во внутрь на конкретный сервер астера. его правила:

#!/bin/sh modprobe ip_conntrack

IPT=«/sbin/iptables» IP_LOCAL=«xxx.xxx.xxx.xxx» IP_SIPSERVER=«yyy.yyy.yyy.yyy» IP_NAT=«172.1.1.1/24»

${IPT} -P INPUT DROP ${IPT} -P FORWARD ACCEPT ${IPT} -P OUTPUT ACCEPT

${IPT} -F INPUT ${IPT} -F OUTPUT ${IPT} -F FORWARD ${IPT} -t nat -F POSTROUTING

${IPT} -F CHECKBADFLAG ${IPT} -X CHECKBADFLAG ${IPT} -N CHECKBADFLAG

${IPT} -A CHECKBADFLAG -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP ${IPT} -A CHECKBADFLAG -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP ${IPT} -A CHECKBADFLAG -p tcp --tcp-flags ALL ALL -j DROP ${IPT} -A CHECKBADFLAG -p tcp --tcp-flags ALL NONE -j DROP ${IPT} -A CHECKBADFLAG -p tcp --tcp-flags SYN,RST SYN,RST -j DROP ${IPT} -A CHECKBADFLAG -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP ${IPT} -A CHECKBADFLAG -p tcp ! --syn -m state --state NEW -j DROP ${IPT} -A CHECKBADFLAG -m state --state INVALID -j DROP

${IPT} -A INPUT -i lo -j ACCEPT ${IPT} -A FORWARD -i lo -j ACCEPT ${IPT} -A OUTPUT -o lo -j ACCEPT ${IPT} -A FORWARD -o lo -j ACCEPT

${IPT} -A INPUT -p icmp -j ACCEPT ${IPT} -A INPUT -p tcp -j CHECKBADFLAG ${IPT} -A OUTPUT -p icmp -j ACCEPT

#Trusted hosts ${IPT} -A INPUT -p all -s ${IP_SIPSERVER} -j ACCEPT ${IPT} -A INPUT -p all -s ${IP_LOCAL} -j ACCEPT ${IPT} -A INPUT -p all -s ${IP_NAT1} -j ACCEPT

#NAT ${IPT} -A FORWARD -i eth0 -o ppp0 -j ACCEPT ${IPT} -t nat -A POSTROUTING -o ppp0 -j SNAT --to-source 8.8.8.8

#Перенаправление трафика ${IPT} -t nat -A PREROUTING -s ${IP_LOCAL} -i ppp0 -j DNAT --to-destination 172.1.1.10

${IPT} -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Проблема заключается в том что, при входящих звонках все работает нормально. А вот при исходящих звонках, звонок приходит но нету никакого голоса. Сам астер выдает при этом ошибку: [2013-04-17 14:09:09] WARNING[23771]: chan_sip.c:4164 retrans_pkt: Retransmission timeout reached on transmission NjZiY2M5N2IzMWZlYWYyZjExN2RhODJkNDM2NThlNDE. for seqno 2 (Critical Response) — See https://wiki.asterisk.org/wiki/display/AST/SIP Retransmissions Packet timed out after 32000ms with no response [2013-04-17 14:09:09] WARNING[23771]: chan_sip.c:4193 retrans_pkt: Hanging up call NjZiY2M5N2IzMWZlYWYyZjExN2RhODJkNDM2NThlNDE. - no reply to our critical packet (see https://wiki.asterisk.org/wiki/display/AST/SIP Retransmissions). == Spawn extension (internal, 79503164430, 1) exited non-zero on 'SIP/1000-00000010'

Может кто сталкивался с таким?

Ответ на: комментарий от kernelpanic

вот правила Iptables
#!/bin/sh
modprobe ip_conntrack


IPT=«/sbin/iptables»
IP_LOCAL=«xxx.xxx.xxx.xxx»
IP_SIPSERVER=«yyy.yyy.yyy.yyy»
IP_NAT=«172.1.1.1/24»


${IPT} -P INPUT DROP
${IPT} -P FORWARD ACCEPT
${IPT} -P OUTPUT ACCEPT


${IPT} -F INPUT
${IPT} -F OUTPUT


${IPT} -F FORWARD
${IPT} -t nat -F POSTROUTING


${IPT} -F CHECKBADFLAG
${IPT} -X CHECKBADFLAG
${IPT} -N CHECKBADFLAG


${IPT} -A CHECKBADFLAG -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
${IPT} -A CHECKBADFLAG -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
${IPT} -A CHECKBADFLAG -p tcp --tcp-flags ALL ALL -j DROP
${IPT} -A CHECKBADFLAG -p tcp --tcp-flags ALL NONE -j DROP
${IPT} -A CHECKBADFLAG -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
${IPT} -A CHECKBADFLAG -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
${IPT} -A CHECKBADFLAG -p tcp ! --syn -m state --state NEW -j DROP
${IPT} -A CHECKBADFLAG -m state --state INVALID -j DROP


${IPT} -A INPUT -i lo -j ACCEPT
${IPT} -A FORWARD -i lo -j ACCEPT
${IPT} -A OUTPUT -o lo -j ACCEPT
${IPT} -A FORWARD -o lo -j ACCEPT


${IPT} -A INPUT -p icmp -j ACCEPT
${IPT} -A INPUT -p tcp -j CHECKBADFLAG
${IPT} -A OUTPUT -p icmp -j ACCEPT


#Trusted hosts
${IPT} -A INPUT -p all -s ${IP_SIPSERVER} -j ACCEPT
${IPT} -A INPUT -p all -s ${IP_LOCAL} -j ACCEPT
${IPT} -A INPUT -p all -s ${IP_NAT1} -j ACCEPT


#NAT
${IPT} -A FORWARD -i eth0 -o ppp0 -j ACCEPT
${IPT} -t nat -A POSTROUTING -o ppp0 -j SNAT --to-source 8.8.8.8


#Перенаправление трафика
${IPT} -t nat -A PREROUTING -s ${IP_LOCAL} -i ppp0 -j DNAT --to-destination 172.1.1.10


${IPT} -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


Проблема заключается в том что, при входящих звонках все работает нормально. А вот при исходящих звонках, звонок приходит но нету никакого голоса. Сам астер выдает при этом ошибки:
[2013-04-17 14:09:09] WARNING[23771]: chan_sip.c:4164 retrans_pkt: Retransmission timeout reached on transmission NjZiY2M5N2IzMWZlYWYyZjExN2RhODJkNDM2NThlNDE. for seqno 2 (Critical Response) — See https://wiki.asterisk.org/wiki/display/AST/SIP Retransmissions Packet timed out after 32000ms with no response
[2013-04-17 14:09:09] WARNING[23771]: chan_sip.c:4193 retrans_pkt: Hanging up call NjZiY2M5N2IzMWZlYWYyZjExN2RhODJkNDM2NThlNDE. - no reply to our critical packet (see https://wiki.asterisk.org/wiki/display/AST/SIP Retransmissions). == Spawn extension (internal, 79503164430, 1) exited non-zero on 'SIP/1000-00000010'


sip.conf br][general]
externip=123.123.123.123
localnet=172.1.1.1/255.255.255.0
language=en
register => номер: pass:номер @sipserver:5060


[SIPS]
type=peer
insecure=invite
secret=pass
username=номер
fromuser=номер
fromdomain=sipserver
host=sipserver
call-limit=2
nat=no
dtmfmode=rfc2833
disallow=all
allow=ulaw


[SIPS2]
type=friend
host=sipserver2
insecure=port
nat=no
disallow=all
allow=ulaw
context=incoming


[SIPS3]
type=friend
host=sipserver3
insecure=port
nat=no
disallow=all
allow=ulaw
context=incoming


[sets](!)


type=friend
context=internal
host=dynamic
nat=yes
disallow=all
allow=ulaw
dtmfmode=rfc2833
secret=Pass


[5555](sets)


mailbox=5555


[6666](sets)


mailbox=6666

evilsend
() автор топика
Ответ на: комментарий от evilsend

У тебя в конфиге SIPS - это провайдер, как я понял. Так вот в его настройках у тебя nat=no.

[sets](!) указано что nat=yes, или же надо что бы [SIPS][SIPS2][SIPS3] были тоже nat=yes?

Для локальных пиров nat не нужен. Настройки секций переопределяют настройки в шаблонах.

kernelpanic ★★★★★
()
Ответ на: комментарий от kernelpanic

поменял, теперь везде стоит nat=yes. Исходящие появились, но теперь пропали входящие при совершение звонка * выдает следующую ошибку:
[2013-04-18 14:28:27] NOTICE[2693][C-0000001c]: chan_sip.c:25184 handle_request_invite: Call from 'ERT1' (188.187.246.4:5161) to extension 's' rejected because extension not found in context 'incoming'.

evilsend
() автор топика
Ответ на: комментарий от evilsend

Тебе перевести сообщение об ошибке? У тебя смотрю секретов полно, выкладывай конфиги в нормальном виде, без обфускации. Кто такой ERT1? Показывай контекст 'incoming'.

kernelpanic ★★★★★
()
Ответ на: комментарий от kernelpanic

дело в том что за натом стоит два сервера астера, один для одних целей другой для других. но ошибки у них одинаковые. Проблема оказалась в extension.conf там не было контекста для incoming.

evilsend
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.