URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 5016
[ Назад ]

Исходное сообщение
"Проблема проброса порта через OpenVPN канал"

Отправлено SpiN , 30-Мрт-12 15:57 
Здравствуйте, несколько дней рою топики, но никак не удаётся добиться результата.

Итак, описание систем и задачи:
2 компьютера на базе Fedora 16 соединены виртуальной сетью, OpenVPN 2.2.2 запущена сервером на одном (далее Сервер) и клиентом на другом (далее, Клиент).

Задача - сделать так, чтобы другие компьютеры при коннекте на Клиент по специальному порту (далее Порт) попадали на Сервер по другому порту (можно по этому же) через VPN канал.

Интерфейсы на Сервере:
eht0 - имеет сразу внешний выделенный ип адрес - <внешний ип>.
tun0 - виртуальный интерфейс, созданный OpenVPN сервером. Адрес - 10.10.0.1.

Конфиг OpenVPN на Сервере:
server 10.10.0.0 255.255.255.0
client-config-dir /etc/openvpn/ccd
route 192.168.207.0 255.255.255.0
(остальное ничего не менял из стандартного конфига)

Файл Клиента в ccd на Сервере:
iroute 192.168.207.0 255.255.255.0

Route на Сервере:
default        *.ru       0.0.0.0          UG  0  0  0  eht0
10.10.0.0      *          255.255.255.0    UG  0  0  0  tun0
10.10.0.2      *          255.255.255.255  UH  0  0  0  tun0
<внешний ип>   *          255.255.255.0    U   1  0  0  eht0
192.168.207.0  10.10.0.2  255.255.255.0    UG  0  0  0  tun0

Интерфейсы на Клиенте:
p33p1 - сетевая карта, адрес 192.168.207.100, внетренняя сеть.
tun1 - виртуальный интерфейс, созданный OpenVPN клиентом. Адрес - 10.10.0.6.

*На адрес 192.168.207.100 проброшен Порт с роутера 192.168.207.1, который выходит в интернет.

Конфиг OpenVPN на Клиенте - стандартный.

Route на Клиенте:
default           192.168.207.1    0.0.0.0          UG   0  0  0  p33p1
10.10.0.0         10.10.0.5        255.255.255.0    UG   0  0  0  tun1
10.10.0.5         *                255.255.255.255  UH   0  0  0  tun1
192.168.207.0     *                255.255.255.0    U    1  0  0  p33p1

Для перенаправления порта пробовал iptables и rinetd.

В конечном итоге нужно:
Любой компьютер из интернета при подключении к внешнему адресу роутера сети Клиента, а так же компьютеры внутренней сети Клиента при подключении к нему проходили такую цепочку:

Сonnect <внешний адрес роутера сети Клиента>:Порт --- (NAT роутера) --->> 192.168.207.100:Порт (p33p1 Клиента) --- (iptables/rinetd/другое) --->> 10.10.0.1:Порт/другой порт (tun0 Сервера). Протокол - UDP.

Итак, канал OpenVPN работает.
Пинг с Сервера на 10.10.0.6 (tun1 Клиента) проходит.
Пинг с Клиента на 10.10.0.1 (tun0 Сервера) проходит.
Пинг с Сервера на 192.168.207.100 (p33p1) проходит.

Проблема 1: Пинг с Сервера на 192.168.207.1 и внутренние компьютеры сети Клиента 192.168.207.* не проходит. Думаю, если Сервер не знает адреса запроса, то и соединения не выйдет из-за отсутствия отклика.

Проблема 2: Чем лучше и как пробросить Порт на Клиенте. Служба rinetd вроде бы должна перебросить, если прописать строчку 192.168.207.100 Порт 10.10.0.1 Порт/другой порт. Либо спец. правила SNAT, DNAT + FORWARD в iptables. Только узнать этого я не могу пока не разрешится Проблема 1.

Спасибо.


Содержание

Сообщения в этом обсуждении
"Проблема проброса порта через OpenVPN канал"
Отправлено reader , 30-Мрт-12 20:09 
>[оверквотинг удален]
> Сonnect <внешний адрес роутера сети Клиента>:Порт --- (NAT роутера) --->> 192.168.207.100:Порт
> (p33p1 Клиента) --- (iptables/rinetd/другое) --->> 10.10.0.1:Порт/другой порт (tun0
> Сервера). Протокол - UDP.
> Итак, канал OpenVPN работает.
> Пинг с Сервера на 10.10.0.6 (tun1 Клиента) проходит.
> Пинг с Клиента на 10.10.0.1 (tun0 Сервера) проходит.
> Пинг с Сервера на 192.168.207.100 (p33p1) проходит.
> Проблема 1: Пинг с Сервера на 192.168.207.1 и внутренние компьютеры сети Клиента
> 192.168.207.* не проходит. Думаю, если Сервер не знает адреса запроса, то
> и соединения не выйдет из-за отсутствия отклика.

хотите tun интерфейс, читайте про iroute в openvpn

> Проблема 2: Чем лучше и как пробросить Порт на Клиенте. Служба rinetd
> вроде бы должна перебросить, если прописать строчку 192.168.207.100 Порт 10.10.0.1 Порт/другой
> порт. Либо спец. правила SNAT, DNAT + FORWARD в iptables. Только
> узнать этого я не могу пока не разрешится Проблема 1.

tcpdump можно было бы и запустить, а там может что интересного увидели бы. DNAT должен справится, а вот с UDP можно и на не явные грабли наступить

> Спасибо.


"Проблема проброса порта через OpenVPN канал"
Отправлено Кегна , 30-Мрт-12 21:33 
>[оверквотинг удален]
>> и соединения не выйдет из-за отсутствия отклика.
> хотите tun интерфейс, читайте про iroute в openvpn
>> Проблема 2: Чем лучше и как пробросить Порт на Клиенте. Служба rinetd
>> вроде бы должна перебросить, если прописать строчку 192.168.207.100 Порт 10.10.0.1 Порт/другой
>> порт. Либо спец. правила SNAT, DNAT + FORWARD в iptables. Только
>> узнать этого я не могу пока не разрешится Проблема 1.
> tcpdump можно было бы и запустить, а там может что интересного увидели
> бы. DNAT должен справится, а вот с UDP можно и на
> не явные грабли наступить
>> Спасибо.

чота мне кажется что udp не полетит ))


"Проблема проброса порта через OpenVPN канал"
Отправлено reader , 01-Апр-12 09:19 
>[оверквотинг удален]
>> хотите tun интерфейс, читайте про iroute в openvpn
>>> Проблема 2: Чем лучше и как пробросить Порт на Клиенте. Служба rinetd
>>> вроде бы должна перебросить, если прописать строчку 192.168.207.100 Порт 10.10.0.1 Порт/другой
>>> порт. Либо спец. правила SNAT, DNAT + FORWARD в iptables. Только
>>> узнать этого я не могу пока не разрешится Проблема 1.
>> tcpdump можно было бы и запустить, а там может что интересного увидели
>> бы. DNAT должен справится, а вот с UDP можно и на
>> не явные грабли наступить
>>> Спасибо.
> чота мне кажется что udp не полетит ))

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


"Проблема проброса порта через OpenVPN канал"
Отправлено PavelR , 30-Мрт-12 23:21 
> Здравствуйте, несколько дней рою топики, но никак не удаётся добиться результата.
> Итак, описание систем и задачи:
> 2 компьютера на базе Fedora 16 соединены виртуальной сетью, OpenVPN 2.2.2 запущена
> сервером на одном (далее Сервер) и клиентом на другом (далее, Клиент).

по сути, на Сервер будет два провайдера.

Исходя из этого, читайте

http://www.opennet.me/tips/2009_policy_route_linux.shtml
http://www.opennet.me/tips/1651_route_iptables_linux_nat.shtml

На всё что прилетит по туннельному интерфейсу, Сервер должен будет ответить в него же.
Именно поэтому мы и считаем, что у Сервер будет два провайдера, поскольку сервисом Сервер через туннель будет пользоваться весь Интернет, а не ограниченный набор подсеток.
(Также, если ответы пойдут туда же, откуда пришли, то решится Проблема1).

на Клиент возможно тоже делать маркировки и маршрутизацию исходя из значений маркеров,
но вникание в дальнейшую суть ситуации  говорит, что вам этого не потребуется.

>[оверквотинг удален]
>  0  tun0
> <внешний ип>   *        
>   255.255.255.0    U   1  
> 0  0  eht0
> 192.168.207.0  10.10.0.2  255.255.255.0    UG  0  
> 0  0  tun0
> Интерфейсы на Клиенте:
> p33p1 - сетевая карта, адрес 192.168.207.100, внетренняя сеть.
> tun1 - виртуальный интерфейс, созданный OpenVPN клиентом. Адрес - 10.10.0.6.
> *На адрес 192.168.207.100 проброшен Порт с роутера 192.168.207.1, который выходит в интернет.

Если возможно, то стоит избежать DNAT/ проброса порта на Клиенте, указав на 192.168.207.1 маршрут к Сервер через Клиент и исправив проброс порта непосредственно на конечное назначение.


"Проблема проброса порта через OpenVPN канал"
Отправлено SpiN , 31-Мрт-12 00:57 
> по сути, на Сервер будет два провайдера.
> Исходя из этого, читайте
> http://www.opennet.me/tips/2009_policy_route_linux.shtml
> http://www.opennet.me/tips/1651_route_iptables_linux_nat.shtml

Статьи серьёзные, почитаю. Спасибо.

> Если возможно, то стоит избежать DNAT/ проброса порта на Клиенте, указав на
> 192.168.207.1 маршрут к Сервер через Клиент и исправив проброс порта непосредственно
> на конечное назначение.

На компьютере внетренней сети Клиента прокинул роут до сети 10.10.0.* и, о чудо, есть пинг и коннект на Сервер. Пока не знаю, есть ли возможность сделать по аналогии с роутером на 192.168.207.1. Однако, это решение, хоть и не совсем безопасное.

Роюсь дальше.


"Проблема проброса порта через OpenVPN канал"
Отправлено SpiN , 31-Мрт-12 20:34 
Странно, прописываю на компьютере внетренней сети route ADD 10.10.0.0 MASK 255.255.255.0 192.168.207.100, попадаю на Сервер (при подключении на 10.10.0.1). Прописываю аналог в разделе маршрутизации на роутере + проброс Порта на 10.10.0.1 - нет отклика. ((

"Проблема проброса порта через OpenVPN канал"
Отправлено PavelR , 31-Мрт-12 23:10 
> Странно, прописываю на компьютере внетренней сети route ADD 10.10.0.0 MASK 255.255.255.0
> 192.168.207.100, попадаю на Сервер (при подключении на 10.10.0.1). Прописываю аналог в
> разделе маршрутизации на роутере + проброс Порта на 10.10.0.1 - нет
> отклика. ((

Никаких странностей, только правила маршрутизации и трансляции адресов.


"Проблема проброса порта через OpenVPN канал"
Отправлено reader , 01-Апр-12 09:16 
> Странно, прописываю на компьютере внетренней сети route ADD 10.10.0.0 MASK 255.255.255.0
> 192.168.207.100, попадаю на Сервер (при подключении на 10.10.0.1). Прописываю аналог в
> разделе маршрутизации на роутере + проброс Порта на 10.10.0.1 - нет
> отклика. ((

потому что нет маршрута через tun для ответных пакетов на сервере, адрес то там не внутренней сети, не доделали вы своих двух провайдеров, для проверки сделайте SNAT на tun клиента


"Проблема проброса порта через OpenVPN канал"
Отправлено SpiN , 01-Апр-12 19:42 
> потому что нет маршрута через tun для ответных пакетов на сервере, адрес
> то там не внутренней сети, не доделали вы своих двух провайдеров,
> для проверки сделайте SNAT на tun клиента

Скорее всего других вариантов нет.
Пробовал на другом роутере маршрутизацию на 10.10.0.* - сеть пингует, но вот пробросить порт можно только в подсеть роутера 192.168.207.*, другого выбора не даёт. Возможно, такие малофункциональные роутеры.