Александр Фролов

Александр Фролов
Рейтинг
155
Регистрация
27.12.2007
Должность
Владелец ИТ-компании Shop2YOU
Интересы
Основатель сервиса Shop2YOU — cоздание интернет-магазинов
Luxer:
На OpenVPN сервере добавьте

push "route 1.1.1.0 255.255.255.0"

где 1.1.1.0 - локальная сеть, в которой находятся и Ваши закрытые сервисы и OpenVPN сервер + правильная маска.

Наши закрытые сервисы и OpenVPN сервер находятся вообще в разных сетях. Причем каждый закрытый сервис находится в своей сети.

Luxer:
Т.е. web-сервер никак к OpenVPN не относится и не имеет своего клиента?
Проксировать запросы через nginx не слишком правильно по-моему - если дальше нужно будет работать с FTP или другими сервисами (а думаю пригодится), то уже не поможет.



Как насчет подхода: Вы ставите VPN-сервер (станция девелопера). Этот VPN-сервер находится в одной локальной сети с сайтами, к которым нужно давать доступ. На фаерволе разрешаете любой трафик из VPN-сети к адресам Ваших сайтов. При этом через VPN нужно транслировать маршрут клиенту в Вашу локальную сеть с сервисами.

Может возникнуть проблема, если адреса сетей будут одинаковыми у клиента и за сервером OpenVPN. Можно тоже обойти - установить OpenVPN клиенты внутри локальной сети на сайтах, которые бы подключались к Вашему OpenVPN серверу. В конфигурации разрешить клиентам видеть друг друга. Тогда Вы бы просто ходили бы внутри виртуальной сети.

Зачем заниматься проксированием не понимаю.

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

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

Luxer:
Сначала полностью хотелось бы прояснить все моменты. Т.е. четко очертить исходную задачу, чтобы не получилось, что кто-то говорит про Фому, а кто-то про Ерёму.

Итого:
У Вас есть виртуальная машина с FreeBSD, на которой крутится сайт, к которому нужно дать доступ разработчику.

Немного не так.

Есть виртуальные машины разработчиков со своими внешними IP, и есть некие сервисы (сайты), которые используются всеми разработчиками (типа CRM и ERP). Эти сервисы работают не на виртуалках разработчиков, а на отдельных физических серверах, со своими IP.

Как виртуалки разработчиков, так и сервисы, защищены файерволом по портам.

Проблема заключается в том, что некоторые рабочие станции девелоперов (Linux и Windows), работают на динамических IP, выделяемых провайдерами. Поэтому сейчас нам приходится вручную прописывать доступ к сервисам, расположенным на выделенных серверах. Раньше мы также вручную прописывали доступ к 22 порту и для виртуалок девелоперов.

Идея была в том, чтобы сделать VPN до виртуалки разработчика. Это дает воpможность подключаться по SSH, указывая PuTTY VPN-адрес виртуалки, такой как 10.15.0.1.

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

Luxer:

OpenVPN-сервер расположен на виртуальной машине (у нее есть выделенный IP, к которому идет подключение) или OpenVPN-сервер находится на шлюзе в локальной сети, в которую входит Ваша машина FreeBSD?

Разработчик, насколько понимаю, использует OpenVPN-клиента для подключения.

Первый вариант: OpenVPN-сервер расположен на виртуальной машине девелопера. У этой виртуалки есть внешний IP.

Luxer:


Вы говорите, что проблема доступа к виртуалке с динамических IP через SSH решена. Напишите, пожалуйста, как Вы подключаетесь через SSH. Насколько понимаю, Вы вбиваете адрес 10.15.0.1 (если это сервер) и подключаетесь по PuTTY или другому SSH клиенту. Если это так, и Вы говорите, что все работает - Вам нужно получить доступ к сайту по http/s . Вы пробовали использовать файл hosts, чтобы сделать так, чтобы по имени URL резолвился адрес, который находится через туннель?

Да, запускаем в винде клиента OpenVPN, PuTTY и указываем адрес 10.15.0.1.

Что касается сайта, то он расположен на другом сервере, не на виртуалке, на которой установлен OpenVPN. Я пытался настроить проксирование через nginx, запустив его на виртуалке, и прописав IP 10.15.0.1 в файле hosts. Проксирование как-то не заработало полностью, сайты открывались с ошибкой. Возможно я не умею настраивать nginx, что скорее всего...

Но может эта задача действительно решается как-то проще, например, правильной настройкой маршрутизации или использованием NAT на виртуалке...

Да, с маршрутизацией на клиенте точно проблемы.

Конфиг сервера VPN:


root@fbsd:/usr/local/etc/openvpn # less openvpn-server.conf
port 1194
# proto tcp-server
proto udp
dev tun

user openvpn
group openvpn

# working directory
cd /usr/local/etc/openvpn

# SIGUSR1 restart protected file rereading fix
persist-key
persist-tun

# auth & encryption
tls-server
tls-timeout 120
dh /usr/local/etc/openvpn/dh2048.pem
ca /usr/local/etc/openvpn/CA_cert.pem
cert /usr/local/etc/openvpn/certs/server.pem
key /usr/local/etc/openvpn/keys/server.pem
crl-verify /usr/local/etc/openvpn/crl/crl.pem
tls-auth /usr/local/etc/openvpn/ta.key 0

#client-cert-not-required
#auth MD5
#cipher BF-CBC

# network
server 10.15.0.0 255.255.255.0
client-config-dir /usr/local/etc/openvpn/ccd
client-to-client
topology subnet
max-clients 5
# duplicate-cn

# clients network options
push "dhcp-option DNS 10.15.0.1"
# push "dhcp-option DNS 88.198.33.214"
# route 10.15.0.0 255.255.255.0

# compression
comp-lzo

# network flexibility
keepalive 10 120
#ping-restart

status /var/log/openvpn/openvpn-status.log 1
status-version 3
log-append /var/log/openvpn/openvpn-server.log
verb 6
mute 20

Конфиг клиента:


client
dev tun
proto udp
remote <IP виртуалки> 1194
tls-client
ca "CA_cert.pem"
cert "CClient.pem"
key "KClient.pem"
tls-auth "ta.key" 1
#ns-cert-type server
#remote-cert-tls server
comp-lzo
tun-mtu 1500
mssfix 1450
verb 6

route -print


C:\Users\admin>route print
===========================================================================
Список интерфейсов
23...00 ff bf 65 12 73 ......TAP-Windows Adapter V9
10...40 61 86 64 14 9a ......Realtek PCIe GBE Family Controller
20...00 50 56 c0 00 01 ......VMware Virtual Ethernet Adapter for VMnet1
21...00 50 56 c0 00 08 ......VMware Virtual Ethernet Adapter for VMnet8
1...........................Software Loopback Interface 1
22...00 00 00 00 00 00 00 e0 Адаптер Microsoft ISATAP
11...00 00 00 00 00 00 00 e0 Teredo Tunneling Pseudo-Interface
13...00 00 00 00 00 00 00 e0 Адаптер Microsoft ISATAP #2
15...00 00 00 00 00 00 00 e0 Адаптер Microsoft ISATAP #3
24...00 00 00 00 00 00 00 e0 Адаптер Microsoft ISATAP #4
===========================================================================

IPv4 таблица маршрута
===========================================================================
Активные маршруты:
Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика
0.0.0.0 0.0.0.0 192.168.0.1 192.168.0.194 20
10.15.0.0 255.255.255.0 On-link 10.15.0.2 286
10.15.0.2 255.255.255.255 On-link 10.15.0.2 286
10.15.0.255 255.255.255.255 On-link 10.15.0.2 286
127.0.0.0 255.0.0.0 On-link 127.0.0.1 306
127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
169.254.0.0 255.255.0.0 On-link 169.254.57.212 276
169.254.57.212 255.255.255.255 On-link 169.254.57.212 276
169.254.255.255 255.255.255.255 On-link 169.254.57.212 276
192.168.0.0 255.255.255.0 On-link 192.168.0.194 276
192.168.0.194 255.255.255.255 On-link 192.168.0.194 276
192.168.0.255 255.255.255.255 On-link 192.168.0.194 276
192.168.59.0 255.255.255.0 On-link 192.168.59.1 276
192.168.59.1 255.255.255.255 On-link 192.168.59.1 276
192.168.59.255 255.255.255.255 On-link 192.168.59.1 276
224.0.0.0 240.0.0.0 On-link 127.0.0.1 306
224.0.0.0 240.0.0.0 On-link 192.168.0.194 276
224.0.0.0 240.0.0.0 On-link 10.15.0.2 286
224.0.0.0 240.0.0.0 On-link 169.254.57.212 276
224.0.0.0 240.0.0.0 On-link 192.168.59.1 276
255.255.255.255 255.255.255.255 On-link 127.0.0.1 306
255.255.255.255 255.255.255.255 On-link 192.168.0.194 276
255.255.255.255 255.255.255.255 On-link 10.15.0.2 286
255.255.255.255 255.255.255.255 On-link 169.254.57.212 276
255.255.255.255 255.255.255.255 On-link 192.168.59.1 276
===========================================================================
Постоянные маршруты:
Отсутствует

IPv6 таблица маршрута
===========================================================================
Активные маршруты:
Метрика Сетевой адрес Шлюз
1 306 ::1/128 On-link
10 276 fe80::/64 On-link
23 286 fe80::/64 On-link
20 276 fe80::/64 On-link
21 276 fe80::/64 On-link
20 276 fe80::5fc:5690:aa19:39d4/128
On-link
10 276 fe80::45f8:27a5:2b1:b157/128
On-link
23 286 fe80::d58f:c43e:648e:3e64/128
On-link
21 276 fe80::d90c:f7c2:50bd:8ff4/128
On-link
1 306 ff00::/8 On-link
10 276 ff00::/8 On-link
23 286 ff00::/8 On-link
20 276 ff00::/8 On-link
21 276 ff00::/8 On-link
===========================================================================
Постоянные маршруты:
Отсутствует

Буду очень благодарен за советы по настройке.

Вообще я просто установил OpenVPN GUI по инструкции, добавил сертификаты. После подключения я могу обращаться к виртуалке через SSH, указывая PuTTY адрес вида 10.12.1.3. Может надо делать что-то специальное, чтобы браузер отправлял запросы через сеть VPN и с адреса VPN, а не через сеть локального провайдера и его IP?

Тут еще такой момент - сервер https_://developer.domain.ru:6678/ не находится в сети VPN и не будет туда добавлен. Тут нужен какой-нибудь прокси, наверное?

Himiko:
Так в чём проблема?
Если VPN работает с выходом "наружу", то на других серверах разрешите доступ с ip-адреса виртуалки с VPN.

Да, это мы сделали. Проблема вот в чем.

Разработчик обращается к ресурсу по адресу вида: https_://developer.domain.ru:6678/, со своего домашнего компьютера, у которого динамический IP от провайдера и IP от VPN вида 10.12.1.3.

При этом браузер пытается загрузить https_://developer.domain.ru:6678/, отправляя запрос с динамического IP домашнего компьютера. А хочется сделать так, чтобы запрос шел с адреса IP виртуалки, через VPN. Тогда мы действительно можем открыть доступ для внешнего IP виртуалки и все будет хорошо.

Т.е. браузер не ходит на сайт через VPN и виртуалку, а ходит напрямую... В этом трабл.

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

netwind:
Александр Фролов, однако, лог общения, который вы привели, в активном режиме. Видимо, не стоит.

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

Увеличил таймаут в FileZilla до 60 сек. и заработало!

Увы, пассивный и стоит (

Всего: 343