Здравствуйте. Есть сервер (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 не работает. На клиентском компьютере порты открыты.
Подскажите, пожалуйста, в чем может быть причина? Горит...
>[оверквотинг удален]
> -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 не работает. На
> клиентском компьютере порты открыты.
> Подскажите, пожалуйста, в чем может быть причина? Горит...Печально..... А тут как раз хрустальный шар пропал и теперь не могу провидеть , что за хрень Вы по этим портам пробросить пытаетесь...
>[оверквотинг удален]
> 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ничего не показывают.
>[оверквотинг удален]
>> Печально..... А тут как раз хрустальный шар пропал и теперь не могу
>> провидеть , что за хрень Вы по этим портам пробросить пытаетесь...
> Я же явно указал в топике: пробросить пытаюсь 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
> ничего не показывают.А форвардинг включен?
>[оверквотинг удален]
>>> провидеть , что за хрень Вы по этим портам пробросить пытаетесь...
>> Я же явно указал в топике: пробросить пытаюсь 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 показывает, что пакеты походят.
>>> 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. Прочие логи.
Забыл. Вот это::FORWARD ACCEPT [0:0]
Эти счётчики должны быть ноль? Аргумент -c для iptables может добавить счётчики для каждого правила.
Добрый провайдер отключил 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. Прочие
> логи.Проблема - где-то во время форвардинга на сервере. Я понимаю, что вышеперечисленное - нужные мне инструменты. Я ими и пользовался. Результаты указал выше. На основе я прошу подсказать, в какую сторону мне смотреть.
>[оверквотинг удален]
>> соответствующие модули 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
или уже давайте выкладывайте все правила фаерфола в студию, чтобы не гадать, а на конкретном примере разбираться.
>[оверквотинг удален]
>> ничего не показывают.
> мои рекомендации:
> - смотреть iptables -L +
> - изучить прохождение трафика по существующим таблицам-цепочкам iptables
> - netstat & nmap на предмет отрытых портов внутри и снаружи для
> определения доступности сервиса
> - tcpdump - последняя линия обороны... детальный анализ трафика
> PS
> или уже давайте выкладывайте все правила фаерфола в студию, чтобы не гадать,
> а на конкретном примере разбираться.Проблему в конечном счете решил при помощи rinetd. В дальнейшем, может, разберусь. Но сейчас на это просто нет времени.