The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Проброс портов в локальную сеть"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (VPN)
Изначальное сообщение [ Отслеживать ]

"Проброс портов в локальную сеть"  +/
Сообщение от icognac (ok) on 15-Июл-12, 03:48 
Здравствуйте. Есть сервер (Ubuntu) в интернете с настроенным openvpn. Вот его конфиг:

port 1194
dev tap0
secret /etc/openvpn/server.key
comp-lzo
daemon
log-append /var/log/openvpn.log
verb 4
ifconfig 172.16.128.1 255.255.255.0
ping 15

Есть так же клиент (172.16.128.2). Задача опубликовать vnc порты клиента на внешней ip сервера.

Вот правила iptables:
:INPUT ACCEPT [2039:1678228]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [531:61486]
-A INPUT -i tap+ -j ACCEPT
-A INPUT -p udp -m udp --dport 1194 -j ACCEPT
-A FORWARD -i eth0 -o tap+ -j ACCEPT
-A FORWARD -i tap+ -o eth0 -j ACCEPT
-A FORWARD -d 1.2.3.4/32 -p tcp -m tcp --dport 5800 -j ACCEPT
-A FORWARD -d 1.2.3.4/32 -p tcp -m tcp --dport 5900 -j ACCEPT

-t nat -A PREROUTING -p tcp -i eth0 --dport 5800 -j DNAT --to 172.16.128.2:5800
-t nat -A PREROUTING -p tcp -i eth0 --dport 5900 -j DNAT --to 172.16.128.2:5900

Кажется, все верно. Пакеты на правила в таблице nat приходят (на первое, второе должно отрабатывать после того, как будет установлена связь на порту 5800). Но в таблице FORWARD их нет. NAT не работает. На клиентском компьютере порты открыты.

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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Проброс портов в локальную сеть"  +/
Сообщение от LSTemp (ok) on 15-Июл-12, 05:03 
>[оверквотинг удален]
> -A FORWARD -i tap+ -o eth0 -j ACCEPT
> -A FORWARD -d 1.2.3.4/32 -p tcp -m tcp --dport 5800 -j ACCEPT
> -A FORWARD -d 1.2.3.4/32 -p tcp -m tcp --dport 5900 -j ACCEPT
> -t nat -A PREROUTING -p tcp -i eth0 --dport 5800 -j DNAT
> --to 172.16.128.2:5800
> -t nat -A PREROUTING -p tcp -i eth0 --dport 5900 -j DNAT
> --to 172.16.128.2:5900
> Кажется, все верно. Пакеты на правила в таблице nat приходят (на первое,
> второе должно отрабатывать после того, как будет установлена связь на порту
> 5800). Но в таблице FORWARD их нет.

1) не факт, что сервис для получения команд управления и передачи данных использует одни и те же порты (пример тому ФТП)
2) для поддержки проброса некоторых протоколов ч/з сервер, следует явно указать/загрузить соответствующие модули iptables.
3) * -j --log-prefix никто не отменял, если нативных логов от сервиса не достаточно
4) ну tcpdump уж на крайний случай


NAT не работает. На
> клиентском компьютере порты открыты.
> Подскажите, пожалуйста, в чем может быть причина? Горит...

Печально..... А тут как раз хрустальный шар пропал и теперь не могу провидеть , что за хрень Вы по этим портам пробросить пытаетесь...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Проброс портов в локальную сеть"  +/
Сообщение от icognac (ok) on 15-Июл-12, 11:25 
>[оверквотинг удален]
> 2) для поддержки проброса некоторых протоколов ч/з сервер, следует явно указать/загрузить
> соответствующие модули iptables.
> 3) * -j --log-prefix никто не отменял, если нативных логов от сервиса
> не достаточно
> 4) ну tcpdump уж на крайний случай
> NAT не работает. На
>> клиентском компьютере порты открыты.
>> Подскажите, пожалуйста, в чем может быть причина? Горит...
> Печально..... А тут как раз хрустальный шар пропал и теперь не могу
> провидеть , что за хрень Вы по этим портам пробросить пытаетесь...

Я же явно указал в топике: пробросить пытаюсь vnc. Для него не нужно отдельных модулей в ядре. 5800 и 5900 - два порта, которые нужны для работы сервиса. 5800 как командный, наверное.

Подскажите, какие цепочки мне смотреть? Пакеты приходят на -t nat -A PREROUTING -p tcp -i eth0 --dport 5800 -j DNAT --to 172.16.128.2:5800, но

-I FORWARD 1 -p tcp --dport 5800 -j LOG
-I INPUT 1 -p tcp --dport 5800 -j LOG

ничего не показывают.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Проброс портов в локальную сеть"  +1 +/
Сообщение от anonym on 15-Июл-12, 16:26 
>[оверквотинг удален]
>> Печально..... А тут как раз хрустальный шар пропал и теперь не могу
>> провидеть , что за хрень Вы по этим портам пробросить пытаетесь...
> Я же явно указал в топике: пробросить пытаюсь vnc. Для него не
> нужно отдельных модулей в ядре. 5800 и 5900 - два порта,
> которые нужны для работы сервиса. 5800 как командный, наверное.
> Подскажите, какие цепочки мне смотреть? Пакеты приходят на -t nat -A PREROUTING
> -p tcp -i eth0 --dport 5800 -j DNAT --to 172.16.128.2:5800, но
> -I FORWARD 1 -p tcp --dport 5800 -j LOG
> -I INPUT 1 -p tcp --dport 5800 -j LOG
> ничего не показывают.

А форвардинг включен?

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Проброс портов в локальную сеть"  +/
Сообщение от icognac (ok) on 15-Июл-12, 23:55 
>[оверквотинг удален]
>>> провидеть , что за хрень Вы по этим портам пробросить пытаетесь...
>> Я же явно указал в топике: пробросить пытаюсь vnc. Для него не
>> нужно отдельных модулей в ядре. 5800 и 5900 - два порта,
>> которые нужны для работы сервиса. 5800 как командный, наверное.
>> Подскажите, какие цепочки мне смотреть? Пакеты приходят на -t nat -A PREROUTING
>> -p tcp -i eth0 --dport 5800 -j DNAT --to 172.16.128.2:5800, но
>> -I FORWARD 1 -p tcp --dport 5800 -j LOG
>> -I INPUT 1 -p tcp --dport 5800 -j LOG
>> ничего не показывают.
> А форвардинг включен?

Включен. -t nat -A POSTROUTING -p tcp --dport 5800 -j LOG показывает, что пакеты походят.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Проброс портов в локальную сеть"  +/
Сообщение от Artif on 16-Июл-12, 07:05 
>>> 5800 и 5900 - два порта,
>>> которые нужны для работы сервиса. 5800 как командный, наверное.

Зачем в неработающей системе ненужный порт, организованный разработчиками?

>> А форвардинг включен?
> Включен. -t nat -A POSTROUTING -p tcp --dport 5800 -j LOG показывает,
> что пакеты походят.

Это только на шлюзе. А у VNC сервера на входе появляются? А у клиента VNC сервера?

Подсети VNC сервера, VPN канала на шлюзе и удалённого клиента разные? Если нет, то как это преодолевается?

Порты у сервера и клиента открыты, а как система VNC сервера реагирует на пакеты из несвоих подсетей?

Сложную систему надо разбирать на части и исследовать только после. Впрочем, как и создавать.
Запустить VPN,
отладить пинги на все возможные адреса между двумя VPN серверами (шлюз <-> VNС сервер),
отладить пинги на все возможные адреса между двумя клиентами использующими канал (шлюз <-> внешний клиент),
отладить пинги на все возможные адреса VNС сервер <-> внешний клиент и т.д.,
отладить отдельно VNC сервер для локальных,
отлаживать VNC сервер через VPN для шлюза (или его подмены).
отлаживать VNC сервер через VPN для внешнего клиента.

Инструменты: в терминале, но не в файле, журнал OpenVPN со степенью подробности 5, плюс логи iptables, плюс tcpdump. Для M$ - Wireshark. Прочие логи.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Проброс портов в локальную сеть"  +/
Сообщение от Artif on 16-Июл-12, 07:11 
Забыл. Вот это:
:FORWARD ACCEPT [0:0]

Эти счётчики должны быть ноль? Аргумент -c для iptables может добавить счётчики для каждого правила.
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Проброс портов в локальную сеть"  +/
Сообщение от icognac (ok) on 17-Июл-12, 09:50 
Добрый провайдер отключил vps на которой я все это поднимал, так что нужно будет делать все заново.

>>>> 5800 и 5900 - два порта,
>>>> которые нужны для работы сервиса. 5800 как командный, наверное.
> Зачем в неработающей системе ненужный порт, организованный разработчиками?

На нем java-апплет, который мне нужен.

>>> А форвардинг включен?
>> Включен. -t nat -A POSTROUTING -p tcp --dport 5800 -j LOG показывает,
>> что пакеты походят.
> Это только на шлюзе. А у VNC сервера на входе появляются? А
> у клиента VNC сервера?

Нет, не появляются.

> Подсети VNC сервера, VPN канала на шлюзе и удалённого клиента разные? Если
> нет, то как это преодолевается?

Разные. Удаленный клиент - через интернет. VNC-сервер в локальной и vpn сети. Шлюз, соответственно, интернет и openvpn.

> Порты у сервера и клиента открыты, а как система VNC сервера реагирует
> на пакеты из несвоих подсетей?

Не понял вопроса.

>[оверквотинг удален]
> и создавать.
> Запустить VPN,
> отладить пинги на все возможные адреса между двумя VPN серверами (шлюз <->
> VNС сервер),
> отладить пинги на все возможные адреса между двумя клиентами использующими канал (шлюз
> <-> внешний клиент),
> отладить пинги на все возможные адреса VNС сервер <-> внешний клиент и
> т.д.,
> отладить отдельно VNC сервер для локальных,
> отлаживать VNC сервер через VPN для шлюза (или его подмены).

До этого момента все работает.

> отлаживать VNC сервер через VPN для внешнего клиента.
> Инструменты: в терминале, но не в файле, журнал OpenVPN со степенью подробности
> 5, плюс логи iptables, плюс tcpdump. Для M$ - Wireshark. Прочие
> логи.

Проблема - где-то во время форвардинга на сервере. Я понимаю, что вышеперечисленное - нужные мне инструменты. Я ими и пользовался. Результаты указал выше. На основе я прошу подсказать, в какую сторону мне смотреть.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

8. "Проброс портов в локальную сеть"  +/
Сообщение от LSTemp (ok) on 17-Июл-12, 23:30 
>[оверквотинг удален]
>> соответствующие модули iptables.
>> 3) * -j --log-prefix никто не отменял, если нативных логов от сервиса
>> не достаточно
>> 4) ну tcpdump уж на крайний случай
>> NAT не работает. На
>>> клиентском компьютере порты открыты.
>>> Подскажите, пожалуйста, в чем может быть причина? Горит...
>> Печально..... А тут как раз хрустальный шар пропал и теперь не могу
>> провидеть , что за хрень Вы по этим портам пробросить пытаетесь...
> Я же явно указал в топике: пробросить пытаюсь vnc.

прошляпил - извиняюсь

> Для него не
> нужно отдельных модулей в ядре. 5800 и 5900 - два порта,
> которые нужны для работы сервиса. 5800 как командный, наверное.

http://ru.wikipedia.org/wiki/VNC
...
По умолчанию RFB использует диапазон TCP-портов с 5900 до 5906. Каждый порт представляет собой соответствующий экран X-сервера (порты с 5900 по 5906 ассоциированы с экранами с :0 по :6). Java-клиенты, доступные во многих реализациях, использующих встроенный web-сервер для этой цели, например, в RealVNC, связаны с экранами таким же образом, но на диапазоне портов с 5800 до 5806. Многие компьютеры под управлением ОС Windows могут использовать лишь один порт из-за отсутствия многопользовательских свойств, присущих UNIX-системам. Для Windows-систем экран по умолчанию — :0, что соответствует порту 5900.
...

Но Вам конечно виднее, какие порты на клиенте открывать ("На нем java-апплет, который мне нужен.") и пробрасывать их потом ч/з сервер.

> Подскажите, какие цепочки мне смотреть? Пакеты приходят на -t nat -A PREROUTING
> -p tcp -i eth0 --dport 5800 -j DNAT --to 172.16.128.2:5800, но

м/б тогда уж --to-destination (вместо --to), если Вы просто проброс порта хотите организовать? посмотрите правила которые реально загружены: iptables -t nat -L- n -v


> -I FORWARD 1 -p tcp --dport 5800 -j LOG
> -I INPUT 1 -p tcp --dport 5800 -j LOG
> ничего не показывают.

мои рекомендации:
- смотреть iptables -L +
- изучить прохождение трафика по существующим таблицам-цепочкам iptables
- netstat & nmap на предмет отрытых портов внутри и снаружи для определения доступности сервиса
- tcpdump - последняя линия обороны... детальный анализ трафика

PS
или уже давайте выкладывайте все правила фаерфола в студию, чтобы не гадать, а на конкретном примере разбираться.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

9. "Проброс портов в локальную сеть"  +/
Сообщение от icognac (ok) on 18-Июл-12, 14:35 
>[оверквотинг удален]
>> ничего не показывают.
> мои рекомендации:
> - смотреть iptables -L +
> - изучить прохождение трафика по существующим таблицам-цепочкам iptables
> - netstat & nmap на предмет отрытых портов внутри и снаружи для
> определения доступности сервиса
> - tcpdump - последняя линия обороны... детальный анализ трафика
> PS
> или уже давайте выкладывайте все правила фаерфола в студию, чтобы не гадать,
> а на конкретном примере разбираться.

Проблему в конечном счете решил при помощи rinetd. В дальнейшем, может, разберусь. Но сейчас на это просто нет времени.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру