Здравствуйте, несколько дней рою топики, но никак не удаётся добиться результата.Итак, описание систем и задачи:
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.0Route на Сервере:
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.
Спасибо.
>[оверквотинг удален]
> С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 можно и на не явные грабли наступить
> Спасибо.
>[оверквотинг удален]
>> и соединения не выйдет из-за отсутствия отклика.
> хотите tun интерфейс, читайте про iroute в openvpn
>> Проблема 2: Чем лучше и как пробросить Порт на Клиенте. Служба rinetd
>> вроде бы должна перебросить, если прописать строчку 192.168.207.100 Порт 10.10.0.1 Порт/другой
>> порт. Либо спец. правила SNAT, DNAT + FORWARD в iptables. Только
>> узнать этого я не могу пока не разрешится Проблема 1.
> tcpdump можно было бы и запустить, а там может что интересного увидели
> бы. DNAT должен справится, а вот с UDP можно и на
> не явные грабли наступить
>> Спасибо.чота мне кажется что udp не полетит ))
>[оверквотинг удален]
>> хотите tun интерфейс, читайте про iroute в openvpn
>>> Проблема 2: Чем лучше и как пробросить Порт на Клиенте. Служба rinetd
>>> вроде бы должна перебросить, если прописать строчку 192.168.207.100 Порт 10.10.0.1 Порт/другой
>>> порт. Либо спец. правила SNAT, DNAT + FORWARD в iptables. Только
>>> узнать этого я не могу пока не разрешится Проблема 1.
>> tcpdump можно было бы и запустить, а там может что интересного увидели
>> бы. DNAT должен справится, а вот с UDP можно и на
>> не явные грабли наступить
>>> Спасибо.
> чота мне кажется что udp не полетит ))почему же, чисто технически, сменили адрес в заголовке пакета, а дальше как обычно.
другой вопрос что с ними дальше будут делать
> Здравствуйте, несколько дней рою топики, но никак не удаётся добиться результата.
> Итак, описание систем и задачи:
> 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 маршрут к Сервер через Клиент и исправив проброс порта непосредственно на конечное назначение.
> по сути, на Сервер будет два провайдера.
> Исходя из этого, читайте
> 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. Однако, это решение, хоть и не совсем безопасное.
Роюсь дальше.
Странно, прописываю на компьютере внетренней сети route ADD 10.10.0.0 MASK 255.255.255.0 192.168.207.100, попадаю на Сервер (при подключении на 10.10.0.1). Прописываю аналог в разделе маршрутизации на роутере + проброс Порта на 10.10.0.1 - нет отклика. ((
> Странно, прописываю на компьютере внетренней сети route ADD 10.10.0.0 MASK 255.255.255.0
> 192.168.207.100, попадаю на Сервер (при подключении на 10.10.0.1). Прописываю аналог в
> разделе маршрутизации на роутере + проброс Порта на 10.10.0.1 - нет
> отклика. ((Никаких странностей, только правила маршрутизации и трансляции адресов.
> Странно, прописываю на компьютере внетренней сети 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 клиента
> потому что нет маршрута через tun для ответных пакетов на сервере, адрес
> то там не внутренней сети, не доделали вы своих двух провайдеров,
> для проверки сделайте SNAT на tun клиентаСкорее всего других вариантов нет.
Пробовал на другом роутере маршрутизацию на 10.10.0.* - сеть пингует, но вот пробросить порт можно только в подсеть роутера 192.168.207.*, другого выбора не даёт. Возможно, такие малофункциональные роутеры.