Iptables: авторизация через DNAT

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

IMB
Сообщения: 2567
ОС: Debian

Iptables: авторизация через DNAT

Сообщение IMB »

Доброго дня!
Во внутренней сети установили ip-камеру. Камера имеет такую особенность - после соединения по www через ActiveX происходит авторизация по порту 8000.
Дамп общения с камерой:

root@localhost

12:20:27.272401 IP ws4.company.ru.1506 > 192.168.16.10.www: . ack 1425 win 64112 12:20:27.275139 IP ws4.company.ru.1506 > 192.168.16.10.www: F 261:261(0) ack 1425 win 64112 12:20:27.275383 IP 192.168.16.10.www > ws4.company.ru.1506: . ack 262 win 6432 12:20:27.400696 arp who-has 192.168.16.10 tell 0.0.0.0 12:20:42.440713 arp who-has 192.168.16.10 tell 0.0.0.0 12:20:43.772138 IP ws4.company.ru.1508 > 192.168.16.10.8000: S 3400234237:3400234237(0) win 65535 <mss 1460,nop,nop,sackOK> 12:20:43.772594 IP 192.168.16.10.8000 > ws4.company.ru.1508: S 2589152988:2589152988(0) ack 3400234238 win 5840 <mss 1460,nop,nop,sackOK> 12:20:43.772717 IP ws4.company.ru.1508 > 192.168.16.10.8000: . ack 1 win 65535 12:20:43.772805 IP ws4.company.ru.1508 > 192.168.16.10.8000: P 1:85(84) ack 1 win 65535

Внутри сети все хорошо работает. Поставили задачу вывести это изделие "в мир".
На gate прописал правила:

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

iptables --table nat --append PREROUTING --in-interface $WAN  --protocol tcp --destination-port 1610 --jump DNAT --to-destination 192.168.16.10:80
iptables --append FORWARD --in-interface $WAN --destination 192.168.16.10 --protocol tcp --match multiport --destination-ports 80,8000:8010 --jump ACCEPT

На маршрутизаторе межде подсетями:

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

iptables --append FORWARD --in-interface vlan100 --out-interface vlan16 --destination 192.168.16.10 --protocol tcp --match multiport --destination-ports 80,8000:8010 --jump ACCEPT

Соединение происходит, авторизоваться не удается.
Изменил правила на:

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

iptables --table nat --append PREROUTING --in-interface $WAN  --protocol tcp --destination-port 1610 --jump DNAT --to-destination 192.168.16.10:80-8010
iptables --append FORWARD --in-interface $WAN --destination 192.168.16.10 --protocol tcp --match multiport --destination-ports 80,8000:8010 --jump ACCEPT

Подскажите как требуется настроить DNAT, что бы все работало. Или может быть проблема в чем то другом?
Спасибо.
Спасибо сказали:
Аватара пользователя
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)

Re: Iptables: авторизация через DNAT

Сообщение danger08 »

А почему бы DNAT-ом и 8000 не прокидывать?
Или я что-то не понимаю?
Блогосайт - http://www.fateyev.com
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: Iptables: авторизация через DNAT

Сообщение IMB »

Боюсь Вы несколько не внимательно прочитали мое сообщение.
Я пробовал прокидывать и 8000 порт:

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

iptables --table nat --append PREROUTING --in-interface $WAN  --protocol tcp --destination-port 1610 --jump DNAT --to-destination 192.168.16.10:80-8010
iptables --append FORWARD --in-interface $WAN --destination 192.168.16.10 --protocol tcp --match multiport --destination-ports 80,8000:8010 --jump ACCEPT

К сожалению, в данном варианте соединие вообще не устанавливается.
Спасибо сказали:
Аватара пользователя
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)

Re: Iptables: авторизация через DNAT

Сообщение danger08 »

IMB писал(а):
16.03.2009 13:45
Я пробовал прокидывать и 8000 порт:

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

iptables --table nat --append PREROUTING --in-interface $WAN  --protocol tcp --destination-port 1610 --jump DNAT --to-destination 192.168.16.10:80-8010
ACCEPT

К сожалению, в данном варианте соединие вообще не устанавливается.

В приведенном вами примере, входящее соединение перебрасывается на хост 192.168.16.10, причем на случайный порт в диапазоне 80-8010.
Блогосайт - http://www.fateyev.com
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: Iptables: авторизация через DNAT

Сообщение IMB »

danger08 писал(а):
16.03.2009 14:06
В приведенном вами примере, входящее соединение перебрасывается на хост 192.168.16.10, причем на случайный порт в диапазоне 80-8010.

Спасибо за ценное замечание. Буду благодарен, если подскажите как возможно реализовать мою задачу. Предполагаю, что можно поиграться с проверкой состояния соединения - новое на 80 порт, установившееся на 8000.
Чуток поигрался с tcpdump-ом и выяснил следующее:
-интерфейс - 80 порт
- авторизация - 8000 порт
- трансляция видео - 8200 порт
При этом надо учесть, авторизация возможна с 2000 по 65535 порты. И как изменится порт трансляции после изменения порта авторизации никто не знает.
Спасибо сказали:
Аватара пользователя
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)

Re: Iptables: авторизация через DNAT

Сообщение danger08 »

IMB писал(а):
16.03.2009 14:22
Предполагаю, что можно поиграться с проверкой состояния соединения - новое на 80 порт, установившееся на 8000.

Попробуйте сначала отдельным правилом прокинуть 8000 порт, т.е.:

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

iptables --table nat --append PREROUTING --in-interface $WAN  --protocol tcp --destination-port 1610 --jump DNAT --to-destination 192.168.16.10:80
iptables --table nat --append PREROUTING --in-interface $WAN  --protocol tcp --destination-port 8000 --jump DNAT --to-destination 192.168.16.10

Ну и разрешить все транзитные соединения со статусом ESTABLISHED и RELATED (хотя, скорее всего, они у вас уже разрешены).
Блогосайт - http://www.fateyev.com
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: Iptables: авторизация через DNAT

Сообщение IMB »

Не фурыкает. Есть еще вариант - добавить на сервер ip-адрес и пробрасывать все соединения на этот адрес.
17.30 - частично побеждено, проходит активация и судя по tcpdump-у ходит видео. Но у клиента черный экран, возможно проблема у клиента в кодеках.
P.S. Ну и замороченно же сделали - для работы потребовалось DNAT-ить порты 80,8000,8200,554.
Спасибо сказали: