LinuxForum.Fans
Тема

IPTABLES проблема с доступом пользователей за натом

Автор: newman 4 сообщений 3248 просмотров
#39849

Уважаемые специалисты подскажите возможно ли побороть такое ?

Сервер астериск висит на реальном айпи с одним Eth0

есть скрипт IPtables который замечательно работает но )) только с реальными айпи , то есть если пакет пришел с айпи который разрешен в списке то фаерволл его пропустит ...


проблема возникла с фильтрацией пакетов пришедших от пользователей за натом ...
то есть например сидит абонент с сипфоном на 192.168.1.2 и выходит натом через 8.8.8.8 фаерволл видит пакет от 192.168.1.2 и даже если открыт 8.8.8.8 не пускает его ....
Прописываю доступ с 192.168.1.0/24 и все начинает работать
Открыть доступ пакетам с фейк подсетей наверно не совсем хорошо ... )))
Абонеттов за натом предвидится достаточно ...


Заранее спасибо

а вот и сам скрипт который берет айпи с текстового файла в указанной дериктории )))

text

#!/bin/sh

# iptables script generated 2010-04-09 # [url]http://www.mista.nu/iptables[/url]

iptables="/sbin/iptables"

# Flush old rules, old custom tables iptables --flush iptables --delete-chain

# Enable free use of loopback interfaces iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT

for IP in `cat /root/ip.txt` do

iptables -A INPUT -p tcp ! --syn -m state --state NEW -s $IP -j DROP iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 80 -m state --state NEW -s $IP -j ACCEPT ; http for friends iptables -A INPUT -p tcp --dport 22 -m state --state NEW -s $IP -j ACCEPT ; ssh for friends iptables -A INPUT -p tcp --dport 5000:65000 -m state --state NEW -s $IP -j ACCEPT ; full access for friends iptables -A INPUT -p udp --dport 5000:65000 -m state --state NEW -s $IP -j ACCEPT ; full access for friends

done

# По умолчанию ... iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT

#40294
newman написал:
проблема возникла с фильтрацией пакетов пришедших от пользователей за натом ...

Я так понимаю, что сипфон к астериску снаружи подключается?
Если так и если сипфон действительно за натом, то iptables не должен видеть сеть 192.168.1.0

#41815

Да, все дело в том, что сам по себе SIP, всего лишь сигнальный протокол и для реальной передачи данных используется RTP.
При передаче пакета происходит след вещь: при машрутизации шлюз за которым висит софтфон меняет адрес отправителя в заголовке пакета, но не учитывает что это SIP и в нем адрес отправителя содержится еще и в "теле" самого пакета (в данных которые несет в себе пакет). А вот астериск отвечает на пакет исходя из адреса который содержится в САМОМ пакете а не в заголовке.
Есть несколько способов обойти данную проблему:
1) на шлюзе за которым стоит софтфон загрузить модули ip_conntrack_sip и ip_nat_sip (modprobe ip_conntrack_sip & modprobe ip_nat_sip)
2) на софтфоне заюзать STUN (что это такое, смотри википедию)
3) на самом астериске в файле /etc/asterisk/sip.con включить NAT для учетки софтфонов которые находятся за натом. (пример смотри далее)

[6543]
deny=0.0.0.0/0.0.0.0
secret=6543
dtmfmode=rfc2833
canreinvite=no
context=from-internal
host=dynamic
type=friend
nat=yes
port=5060
qualify=yes
callgroup=
pickupgroup=
dial=SIP/6543
accountcode=
mailbox=6543@device
permit=0.0.0.0/0.0.0.0
callerid=device <6543>
call-limit=50

#42860

С отключенным фаерволом все работает )))

Войдите или зарегистрируйтесь, чтобы ответить.