LINUX.ORG.RU
ФорумAdmin

Маршрутизация через OpenVPN в nginx

 ,


0

1

Друзья, всем доброго пятничного вечера , прошу помочь разобраться в такой ситуации :

На VPS настроен OpenVPN и nginx, последний прокидывает запросы в локалки OpenVPN и прекрасно с этим справляется.Также nginx рулит , чтобы в локалки ходить можно только если ты сам из локальной сети OpenVPN.

nginx:

 server {
    listen 80;
    server_name blog.zero11.ru;
    access_log /var/log/nginx/blog.zero11.ru-access.log;
    error_log /var/log/nginx/blog.zero11.ru-error.log;

location / {
   proxy_pass https://10.8.0.5;
 allow 10.8.0.0/24; 
 deny all;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Real-IP $remote_addr;
    }
}      

Вот загвоздка в следущем , если я использую для входа в OpenVPN планшет или мобилу , схема работает безупречно. Но стоит мне зайти из виндовского ноута , под тем же ключом что и заходил минуту назад с планшета , всё, nginx меня не пускает к нужному узлу в сети OpenVPN. Но напрямую, без nginx до этого узла ,(10.8.0.5) я могу запросто достучатся. Стал копаться в логах nginx, и вот что я там приметил:

10.8.0.4 - - [31/Jul/2020:19:41:48 +0300]
212.81.132.200 - - [31/Jul/2020:19:42:27 +0300]
Bерхняя строчка заход с планшета . нижняя строчка - заход с ноута (ключ одинаковый). Почему во втором случае nginx меня не признал, что я свой , из сети OpenVPN !? изза этого nginx меня и дальше не маршрутизирует. Хотя по всем признакам я в сети , и напрямую могу зайти на 10.8.0.5 .

Буду рад всем советам и мыслям на эту тему )

Ответ на: комментарий от anc

Да , я честно тоже подумал о DNAT вообще мне честно мне самому доступ нужен только внутри ovpn , NGINX правила всеравно остальных отсекут, оставит только тех что из локалки .

Но тут маленький нюанс. Домены должны получать через setobot ssl сертификаты, значит както пинговаться , хоть и на заглушку , но должны

ruchechnik ()
Ответ на: комментарий от ruchechnik

а с двумя ip адресами фокус тоже не получится ? как вы сказали ovpn на одном , а оастльное на другом

Получиться. Даже без проблем. Само заробит.

anc ★★★★★ ()
Ответ на: комментарий от anc

ну так и сделаю значит не таких он и больших денег стоит, дополнительный ИП

Я же могу оставить OVPN на прежнем IP чтобы не переделывать его клиентов к новому ИП , а доменное имя у регистатора уже сослать на новый ИП VPS ?!

ruchechnik ()
Ответ на: комментарий от ruchechnik

Все верно, можно и так. По простому, vpn отдельно, всё остальное отдельно. А как вам удобнее решайте сами. Я думал сделать наоборот, но если много клиентов vpn то ваш вариант удобнее, только подождите пока TTL записи пройдет+ какое-то время. Поэтому рекомендую перед изменениями изменить у старой записи TTL на 10 минут и подождать пока протухнет старый TTL. Если у вас и так было такое или меньше время, тогда не надо. Но в любом случае при тестировании не забывайте ребуты шинды и браузеров, кэшировать могут не смотря на TTL.

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 2)
Ответ на: комментарий от ruchechnik

Что-то типа

ip addr add $IP/$MASK dev eth0

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

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от anc

неужели победили )))!!!?! из винды через шлюз открываются таки долгожданные домены ))) anc, в который раз , снимаю шляпу , ну никогда я бы не подумал , что такое хитросплетение вообще возможно !!

и НИКТО, из здешних «корефеев» с ненастоящими «звездами» даже не вник в суть вопроса, а лишь брызгали слюной злости на меня.

ruchechnik ()
Последнее исправление: ruchechnik (всего исправлений: 1)
Ответ на: комментарий от ruchechnik

Надеюсь что это был пример
А так

auto eth0
iface eth0 inet static
 address   194.67.222.123
 netmask   255.255.240.0
 gateway   194.67.208.1
auto eth0:1
iface eth0:1 inet static
 address   $IP
 netmask   $MASK

ПРЕДУПРЕЖДАЮ! Опасно! Надеюсь у вас есть доступ к vps через веб консоль что бы если не заработает вернуть назад. Сначала забэкапте сам /etc/network/interfaces и только потом меняйте!

Так же если вы используете NM то данный пример не о чем и Вам не поможет.

anc ★★★★★ ()
Ответ на: комментарий от ruchechnik

и НИКТО, из здешних «корефеев» с ненастоящими «звездами» даже не вник в суть вопроса, а лишь брызгали слюной злости на меня.

Вот тут вы в корне не правы!!! Какое изложение задачи такое и предположение. Если бы не выше описанные просьбы к вам, то сложнее бы было догадаться. Тут коллективное творчество получилось. Единственный нюанс когда на dns зациклились, не более того. А так каждый свой вклад внес.

anc ★★★★★ ()
Ответ на: комментарий от anc

@anc, ну если ТС нужен что бы весь трафик ходил через VPN - дело его.

Я понял, что ему это не нужно.

И если будет работать правильно DNS, т.е. отдавать IP в VPN сети для нужного домена и передаваться клиентам VPN сети, то никаких default route на стороне клиента, никаких правил маршрутизации или чего-то ещё на стороне сервера делать не нужно будет.

У меня у самого такая конфигурация, когда подключаюсь к сети организации получаю DNS сервера организации и доступ до доменных имён организации идёт через VPN сеть, а вся остальная сеть на моей машине ходит через мой шлюз, провайдера, а не через VPN.

Что нужно конкретно ТС не понятно.

Да, напиши кратко что всё такие у него было?

А так, при правильном DNS никаких маршрутов не нужно.

Если конечно не надо весь трафик в VPN заворачивать.

infomeh ★★ ()
Ответ на: комментарий от anc

anc, да , все верно вот эта настройка сохраняет eth0:1 при reboot

auto eth0
iface eth0 inet static
 address   194.67.222.123
 netmask   255.255.240.0
 gateway   194.67.208.1
auto eth0:1
iface eth0:1 inet static
 address   $IP
 netmask   $MASK
причем делал по статье , до этого там был интерфейс eth0:0, при тех же настройках фоллил при старте , ну или я просто устал вчера. Еще раз блегодарен вам , даже готов выразить это ввиде доната , но я же уже пытался, вы идейный , почемуто отказываетесь ((

Вот тут вы в корне не правы!!! Какое изложение задачи такое и предположение. Если бы не выше описанные просьбы к вам, то сложнее бы было догадаться. Тут коллективное творчество получилось. Единственный нюанс когда на dns зациклились, не более того. А так каждый свой вклад внес.

я достаточно подробно и с логами объяснил проблему редактировал наверноое целый час , чтобы приятно было читать и понимать , что я хочу . Вот перечитал еще раз . все так. Ещё, единственный кто вник , и поинтересовался логами profileinfomeh Спасибо тебе тоже большое , что начал копать и раскрывать тему . А остальные просто «починают на лаврах» своих «звезд». Да собственно мне никто и не обязан был ничем помогать, я не в притезиях )

ruchechnik ()
Ответ на: комментарий от infomeh

ну если ТС нужен что бы весь трафик ходил через VPN - дело его.
Я понял, что ему это не нужно.

У него defroute в vpn он об этом намекал(к сожалению именно намеками) и даже показал благодаря вам (уже без намеков).

Да, напиши кратко что всё такие у него было?

Маршрутизация через OpenVPN в nginx (комментарий)

PS
Из вашего поста я догадываюсь, что вы абстрагировали свое использование на любое другое. Но вариативности в разы больше. Sad but true. У ТС немного другая ситуация которая к dns никакого отношения не имеет. И потом почему-то схватились только за нее. Ну что же бывает. Как не крути ваша помощь оказалась весьма к месту :)

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от ruchechnik

а вся остальная сеть на моей машине ходит через мой шлюз, провайдера, а не через VPN.

а кстати да чтото я тупанул не сказал , мне вовсе не обязательно , чтобы весь траф шёл через VPN!! мне главное локальные машины чтобы были доступны Я так думаю если, я у себя уберу настройку в клиете

push "redirect-gateway def1 bypass-dhcp"
то все должно заработать и без второго IP , ведь так ?

ruchechnik ()
Последнее исправление: ruchechnik (всего исправлений: 1)
Ответ на: комментарий от anc

блин это был комент на реплику , «а в сети ли я вообще» я для этого написал )) Но такой вариат как сейчас НАМНОГО красивее лучше, я часто общественным вайфаем пользуюсь .

ruchechnik ()
Ответ на: комментарий от ruchechnik

Смотрите, если вам нужно не всех пользаков в defgw отправлять, можно отдельно разделить в соответствующих файликах ccd. Или никого не отправлять, тоже не сложно. Но основную проблему из топика это не решит. Как писал выше тут или то что вы уже сделали и вам явно это проще. Или split dns, это совсем не сложно, но судя во вашим вопросам, уж постите, пока с ходу не осилите (но если нужно, неспешно рекомендую пройти и этот путь, хотя.... не, не надо, как сделали надежнее)

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от ruchechnik

Я писал вам выше, Маршрутизация через OpenVPN в nginx (комментарий)
Тут роли не играет один или два или сто сорок два маршрута вы раздадите. До сервера должен остаться прямой. Иначе работать не будет. Как-то так.

anc ★★★★★ ()
Ответ на: комментарий от anc

спасибо , еще раз ребутнул сервер все поднимается как надо , все отлично !!

Или split dns, это совсем не сложно, но судя во вашим вопросам, уж постите, пока с ходу не осилите (но если нужно, неспешно рекомендую пройти и этот путь, хотя…. не, не надо, как сделали надежнее)

нее путь самурая не хочу) мне как по проще , и главное понимать , а не как обезьяна .
если чтото не понимаю , даже делать не буду , просто нет азарта . То что мы сделали мне доступно, а значит проще . Еще раз спасибо !!

ruchechnik ()
Ответ на: комментарий от ruchechnik

Или split dns, это совсем не сложно

Это несложно. Вам по сути нужно поднять ещё один DNS сервер, в котором прописать для нужной вам DNS зоны (доменов) внутренние IP адреса.

Это можно сделав как подняв ещё один DNS сервер, так и настроив на уже существующем отдельный «view» и настроив чтобы в одном view отдавались внешние IP адреса, в во втором - внутренние.

И потом этот DNS сервер будешь отдавать OpenVPN клиентам.

И никаких маршрутов не нужно будет и трафик будет ходить через шлюз клиента, а не черeз OpenVPN сервер.

А через OpenVPN будут ходить только запросы до нужных доменов.

infomeh ★★ ()