Правило SNAT не применяется для SIP-траффика

Рейтинг: 0Ответов: 1Опубликовано: 22.04.2015

Добрый день.

Помогите разобраться с такой проблемой:

Есть FreePBX (192.168.0.150). На нем есть два sip-транка (один на sipnet.ru, второй - на синтеру). В качестве файервола выступает Debian 6(iptables v1.4.8,kernel v2.6.32-5).

Таблица nat:

iptables -L -n -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       udp  --  0.0.0.0/0            0.0.0.0/0           udp dpts:10000:20000 to:192.168.0.150 
DNAT       udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:5060 to:192.168.0.150 

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  192.168.0.0/24       0.0.0.0/0         to:WAN_IP

Проблема в том, что пакеты, идущие в синтеру уходят в сеть с серым адресом - то-есть почему-то не попадают под действие SNAT.

eth2 - внешний интерфейс

Sipnet.ru:

$tcpdump -i eth2 net 212.53.40.0/24 and port 5060 -n 
 IP WAN_IP.5060 > 212.53.40.40.5060: SIP, length: 371
 IP 212.53.40.40.5060 > WAN_IP.5060: SIP, length: 430
 IP WAN_IP.5060 > 212.53.40.40.5060: SIP, length: 606
 IP 212.53.40.40.5060 > WAN_IP.5060: SIP, length: 541

Синтера:

$tcpdump -i eth2 -n host 93.91.232.222 and port 5060 -n 
 IP 192.168.0.150.5060 > 93.91.232.222.5060: SIP, length: 532
 IP 192.168.0.150.5060 > 93.91.232.222.5060: SIP, length: 532

Что можно с этим сделать? Если для диагностики нужны какие-нть дополнительные данные - пишите в комментариях.

Ответы

▲ 1

Все правила у вас правильные, дело может быть в том что на момент добавления правила уже существовала conntrack-запись, занимающаяся переписыванием трафика идущего на этот адрес. В этом случае вы можете очистить таблицу conntrack, и посмотреть, поможет ли это. Для этого можете, например, перезагрузить соответствующие модули