Comments 27
это все довольно стандартно, я вот недавно уперся в следующую задачу и за 5 минут она не решилась: допустим есть примерно так оргинизованный проброс, на vps указывают dns записи ряда ресурсов. как часть из них отправить на домашний сервер (т.е. по сути, чтобы часть сайтов жила на vps, а часть на домашнем сервере, тогда как обращение ко всем было исключительно по именам (без портов и пр.))
+1
т.е. грубо говоря что бы сайт vasya.pepkin.com открывался с VPS, а petya.pupkin.com — с домашней сети и при этом DNS записи для «мира» указывали на внешний адрес VPS?
как вариант — используйте http-proxy. Модуль есть как у apache, так и у nginx, lighttpd и т.д
как вариант — используйте http-proxy. Модуль есть как у apache, так и у nginx, lighttpd и т.д
0
да, теоретически все так, но практически не задалось — надо будет еще попилить. если есть ссылки на success story — было бы полезно
0
ничего сложного нет.
там, где указан ip: порт при использовании порта 80 можно порт опустить, указав лишь ip. В прокси указывается именно IP, а не FQDN
DNS записи для обоих хостов vasya.pupkin.com и petya.pupkin.com должны указывать на внешний IP вашего VPS
Рабочий пример для nginx
server {
listen 80;
listen [::]:80;
server_name vasya.pupkin.com;
root /www/pupkin.com/vasya/public;
charset utf-8;
client_max_body_size 1m;
location / {
index index.php;
try_files $uri $uri/ /index.php?$args;
}
...
...
}
server {
listen 80;
listen [::]:80;
server_name petya.pupkin.com;
charset utf-8;
client_header_timeout 10m;
client_body_timeout 10m;
client_max_body_size 10m;
send_timeout 10m;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.16.44:7990;
port_in_redirect off;
proxy_redirect http://192.168.16.44:7990/ http://petya.pupkin.com/;
}
}
там, где указан ip: порт при использовании порта 80 можно порт опустить, указав лишь ip. В прокси указывается именно IP, а не FQDN
DNS записи для обоих хостов vasya.pupkin.com и petya.pupkin.com должны указывать на внешний IP вашего VPS
+1
спасибо. попробую допилить апач, если нет, то перекину на nginx
0
для апача будет как-то так:
проверить не могу, написал на скорую руку читая документацию по apache
apache config proxy
после чего
справедливо для Debian-based систем
<VirtualHost *:80>
DocumentRoot "/www/pupkin.com/vasya/public"
ServerName vasya.pupkin.com
# Other directives here
</VirtualHost>
<VirtualHost *:80>
#DocumentRoot apache требует хоть какой-то обязательно
DocumentRoot "/www/pupkin.com/petya/public"
ServerName petya.pupkin.com
ProxyRequests On
ProxyPreserveHost On
ProxyVia full
<proxy *>
Order deny,allow
Allow from all
</proxy>
ProxyPass / http://192.168.16.44/
ProxyPassReverse / http://192.168.16.44/
</VirtualHost>
после чего
sudo a2enmod proxy_connect
sudo a2enmod proxy_html
sudo a2ensite /etc/apache2/sites-available/petya.pupkin.com.conf
sudo /etc/init.d/apache2 reload
справедливо для Debian-based систем
проверить не могу, написал на скорую руку читая документацию по apache
+2
Мне тоже был интересен данный вопрос.
Ничего лучше кроме реверс-прокси я пока не придумал.
Еще была идея с форвардингом запросов на определенный домен (или субдомен) с использованием модуля string в netfilter,
но пока это все так никуда и не вылилось.
Ничего лучше кроме реверс-прокси я пока не придумал.
Еще была идея с форвардингом запросов на определенный домен (или субдомен) с использованием модуля string в netfilter,
но пока это все так никуда и не вылилось.
0
а чем стандартный pptp\l2tp не устроил?
кстати, маршруты openvpn умеет поднимать сам. ну и конечно же о «tun+» — данные правила разрешат вам хождение трафика с любого TUN интерфейса. У вас же в конфиге четко указано использовать tun0 интерфейс.
В общем статья об очередное HOW-TO openvpn…
habrahabr.ru/post/78101/
habrahabr.ru/post/188474/
habrahabr.ru/post/56652/
и т.д.
ну а DNAT с внешнего сервера внутрь — это совсем грустно, я бы лучше выбрал static-IP от провайдера, а не экономить копейки увеличивая latency
кстати, маршруты openvpn умеет поднимать сам. ну и конечно же о «tun+» — данные правила разрешат вам хождение трафика с любого TUN интерфейса. У вас же в конфиге четко указано использовать tun0 интерфейс.
В общем статья об очередное HOW-TO openvpn…
habrahabr.ru/post/78101/
habrahabr.ru/post/188474/
habrahabr.ru/post/56652/
и т.д.
ну а DNAT с внешнего сервера внутрь — это совсем грустно, я бы лучше выбрал static-IP от провайдера, а не экономить копейки увеличивая latency
0
а чем стандартный pptp\l2tp не устроил?OpenVPN вроде бы и безопаснее и привычнее
«tun+»Да, спасибо, поправил, изначально использовал только 1 tun, потому и не заострил на этом внимания
ну а DNAT с внешнего сервера внутрь — это совсем грустно, я бы лучше выбрал static-IP от провайдера, а не экономить копейки увеличивая latencyПервоначально делал это все для того, что бы сервера внутри моей домашней сети смогли обмениваться с VPS'кой пакетами так, как будто, они были бы в одной сети. DNAT с внешнего сервера внутрь — скорее приятное дополнение, чем моя основная задача
+1
что бы сервера внутри моей домашней сети смогли обмениваться с VPS'кой пакетами так, как будто, они были бы в одной сети
тогда, как по-мне, лучше использовать tap, чем tun, т.к. первый работает на канальном уровне, соотв. можно было выдать IP из домашней сети и не думать о маршрутизации
0
Но Вы ведь фактически просто удлинили цепочку подключения и заменили:
На оплату выделенного:
Если VPS стоит дешевле, чем выделенный IP у провайдера, то такая схема имеет смысл. В противном случае проще и дешевле купить IP у провайдера и настроить на роутере маршрутизацию (или поднять OpenVPN-сервер на самом роутере, если производительность позволяет)
И не платить при этом за статический IP провайдеру
На оплату выделенного:
VPS сервер на debian со статическим реальным IP
Если VPS стоит дешевле, чем выделенный IP у провайдера, то такая схема имеет смысл. В противном случае проще и дешевле купить IP у провайдера и настроить на роутере маршрутизацию (или поднять OpenVPN-сервер на самом роутере, если производительность позволяет)
0
Все верно, ответил выше :)
0
Вообще, если сделать TAP и NAT у провайдера не симметричный, сервер будет использоваться только в момент подключения. Потом пакеты будут ходить напрямую :)
0
VPS сам по себе имеет позитивную ценность. У меня статический IP за 150 рублей в месяц, но подумываю о переходе на такую же схему, чтобы платить рублей 300 в месяц за VPS только.
0
К сожалению сильно потеряете в скорости/времени отклика, причем порядком: немного времени назад проводил эксперименты — соединял две сети, через интернет разными технологиями, железки routerboard 951
EoIP — 100Мбит (без шифрования)
OpenVPN -2.5 Мбит (aes128/blowfish128)
EoIP+IPsec — 2 мбит (aes128)
l2tp — 5 Мбит (MPPE128)
pptp — 0.5-1 Мбит (MPPE128)
Как и ожидалось — шифрование, без соответствующего аппаратного модуля потребляет очень много ресурсов
EoIP — 100Мбит (без шифрования)
OpenVPN -2.5 Мбит (aes128/blowfish128)
EoIP+IPsec — 2 мбит (aes128)
l2tp — 5 Мбит (MPPE128)
pptp — 0.5-1 Мбит (MPPE128)
Как и ожидалось — шифрование, без соответствующего аппаратного модуля потребляет очень много ресурсов
0
кстати, насчет пинга… в конфиге сервера не заметил директивы keepalive
keepalive — является совмещением сразу двух команд — ping и ping-restart. Использует сразу два параметра в секундах, перечисленных через пробел. Пример:
keepalive 10 180
Означает следующее: каждые 10 секунд посылать ping на удаленный хост, и, если за 180 секунд не было получено ни одного пакета — то перезапускать туннель.
возможно в этом причина затыка и не нужен будет костыль с бесконечным циклом?
+2
Да. Причем, как правило, на UDP таймауты меньше делают. На TCP смело можете делать таймаут в 1 минуту, практически гарантировано ниже 1 минуты не опустится ни одной провайдерский NAT.
Это, конечно, похвально, что kvaps разбирается с ранее незнакомыми вещами, но статья плохая. Тут и костыли⁴ (ping.sh, добавление в /etc/rc.local, статические ключи, route add), и неудачная конфигурация. Было бы лучше, если бы kvaps потратил немного больше времени, почитал бы man openvpn, и затем написал бы хорошую статью про OpenVPN.
Это, конечно, похвально, что kvaps разбирается с ранее незнакомыми вещами, но статья плохая. Тут и костыли⁴ (ping.sh, добавление в /etc/rc.local, статические ключи, route add), и неудачная конфигурация. Было бы лучше, если бы kvaps потратил немного больше времени, почитал бы man openvpn, и затем написал бы хорошую статью про OpenVPN.
+3
ValdikSS и alexdob,
Большое вам спасибо за конструктивную критику, я уверен, что напишу еще много хороших статей. Но и этой не стоит пропадать, исправил ее, включая ваши замечания.
Объясните мне, чем так плохи статические ключи?
Большое вам спасибо за конструктивную критику, я уверен, что напишу еще много хороших статей. Но и этой не стоит пропадать, исправил ее, включая ваши замечания.
Объясните мне, чем так плохи статические ключи?
+1
Не то, чтобы они плохи, у них есть преимущества, и для конфигураций компьютер-компьютер они подходят, но:
1. Нет Diffie Hellman обмена ключей, это значит, что если ваш ключ скомпрометирован, то все ваши данные, переданные ранее, могут быть расшифрованы.
2. К OpenVPN-серверу может быть подключен только один клиент.
Преимущество одно:
Легко генерировать. Не нужно держать инфраструктуру ключей.
1. Нет Diffie Hellman обмена ключей, это значит, что если ваш ключ скомпрометирован, то все ваши данные, переданные ранее, могут быть расшифрованы.
2. К OpenVPN-серверу может быть подключен только один клиент.
Преимущество одно:
Легко генерировать. Не нужно держать инфраструктуру ключей.
0
2. К OpenVPN-серверу может быть подключен только один клиент.
Не совсем понял — почему? возможно вы имели ввиду один клиент = один набор ключей? тогда да, и то, есть опция в конфигурации, что бы отключить данное поведение.
В HOWTO Openvpn приведены примеры конфигов для one server = multi-client
Небольшой оффтоп
Когда-то давно был опыт по настройке связки OpenVPN server + Radius + MySQL для multi-client конфигурации. В том числе удобный установщик Openvpn клиента для win пользователей (основной контингент) с самописным GUI на Qt… но это было достаточно давно и в настоящее время уже не актуально, т.к. аналогичных поделок пруд пруди… но если кому интересно — основной компонент системы radius_plugin для openvpn (на сколько я понял проект больше не развивается), ну а связка freeradius и MySQL — тривиальна.
0
Не совсем понял — почему? возможно вы имели ввиду один клиент = один набор ключей?
Потому, что ключ вообще один. Общий для сервера и для клиента. Для работы OpenVPN в режиме один сервер-несколько клиентов нужен x509 (т.е. сертификаты), и по вашей ссылке как раз они и используются, а не статические ключи.
0
промазал… комментарий чуть выше
0
Использую VPS DigitalOcean. Недорого относительно. Поднят OpenVPN для выхода в мир и NeoRouter для соединения своих компов и Андрюши.
0
Sign up to leave a comment.
Поднимаем VPN-туннель из мира домой в обход NAT