LINUX.ORG.RU
ФорумAdmin

ip адрес выдаваемый сервером openvpn

 


0

1

Добрый день уважаемые форумчане.

Решаю следующую задачу, у меня есть два сервера openvpn:

1. Сервер A (у него есть доступ к БД) (ubuntu server + openvpn)
2. Сервер В (на нем крутиться веб сервис) (ubuntu server + openvpn)

Мне нужно получить доступ с сервера В на сервер А, так чтобы с сервера В не весь трафик шел через А, а только запросы к БД. Мои действия:

1. Сменил порт openvpn сервера B.
2. Пытаюсь изменить пул выдаваемых адресов сервера А, т.к. на данный момент оба они выдают 10.8.0.1/24.

Я изменил конфиг сервера А и привел его к следующему виду:

server 10.9.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt

ifconfig 10.9.0.1 255.255.255.0
ifconfig-pool 10.9.0.2 10.9.0.199 255.255.255.0

server-bridge 10.9.0.4 255.255.255.0

push "route 10.1.4.15 255.255.255.255"
push "route 10.4.31.0 255.255.255.0"

#Redirect all trafic
#push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 10.4.31.254"

Результат должен быть следующий: Если я подключусь к серверу B по openvpn, то он не должен перенаправлять весь трафик через сервер А, а только мои запросы к БД.

Подскажите, почему сервер А, после ребута не выдает 10.9.0.1/24 ?



Последнее исправление: andrey7690 (всего исправлений: 1)

Должно быть достаточно одной строки

server 10.9.0.0 255.255.255.0

Что в логе сервера? поставьте verb побольше

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

tun0:

inet 10.8.0.1

А в /var/log/openvpn/openvpn.log он перестал писать, я лог удалил, для того чтоб чистый посмотреть, создал openvpn.log дал права и не пишет теперь.

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

inet 10.8.0.1

ну круто.
Скорее всего, у вас сервис ovpn не читает ваш конфиг файл.
Попробуйте указать конфиг файл вручную, например так

openvpn --config /path/to/file

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

Вы правы:

Options error: Unrecognized option or missing or extra parameter(s) in /etc/openvpn/server.conf:122: server-bridge (2.4.4)
Use --help for more information.

andrey7690
() автор топика
Ответ на: комментарий от Aborigen1020
Options error: --dh fails with 'dh2048.pem': No such file or directory (errno=2)
Options error: --ca fails with 'ca.crt': No such file or directory (errno=2)
Options error: --cert fails with 'server.crt': No such file or directory (errno=2)
Thu Mar 19 17:07:15 2020 us=546451 WARNING: cannot stat file 'server.key': No such file or directory (errno=2)
Options error: --key fails with 'server.key': No such file or directory (errno=2)
Thu Mar 19 17:07:15 2020 us=546546 WARNING: cannot stat file 'ta.key': No such file or directory (errno=2)
Options error: --tls-auth fails with 'ta.key': No such file or directory (errno=2)
Options error: Please correct these errors.
Use --help for more information.

Странные ошибки, вроде не было раньше, да и к вопросу отношения не должны иметь.

П.С. все файлики в корне openvpn, рядом с server.conf

server 10.9.0.0 255.255.255.0

Я так понимаю, он берет какой то старый конфиг, а этот выплевывает из аз ошибок.

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

Странные ошибки, вроде не было раньше, да и к вопросу отношения не должны иметь.

Проверяйте, верно ли указаны пути к этим файлам в новом конфиге.

Да и старый конфиг неплохо бы разыскать (см. файлы запуска).

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

А текущий конфиг где его посмотреть?

Смотрите сценарии запуска сервиса. Там должно быть указание текущего конфига.

Serge10 ★★★★★
()
Ответ на: комментарий от Serge10
# Diffie hellman parameters.
# Generate your own with:
#   openssl dhparam -out dh2048.pem 2048
dh dh2048.pem

key server.key  # This file should be kept secret

и так далее, если эта неверная запись, нужно указать рабочую директорию или указывать относительный/полный путь до каждого файла?

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

или указывать относительный/полный путь до каждого файла?

Попробуйте указать полный путь до каждого файла.

Serge10 ★★★★★
()
Ответ на: комментарий от andrey7690
Thu Mar 19 19:41:45 2020 us=528916 TCP/UDP: Socket bind failed on local address [AF_INET][undef]:1194: Address already in use (errno=98)

Вот это настораживает и все ли с шифрованием в порядке?

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

Вы запускаете вторую копию ovpn. Сделайте

netstat -tulpn
, посмотрите кто уже занимает нужный порт. Ну а далее ищите процесс, скорее всего подойдёт команда ps aux | grep openvpn

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

Подключился к серверу напрямую выключил старый openvpn и запустил новый. Адресация сменилась, есть несколько нюансов.

  1. Если запускать через sudo service openvpn stop/start, в логах:
RTNETLINK answers: Operation not permitted
Если запускать через sudo openvpn --config /etc/openvpn/server.conf &

В логах все более менее. Обе команды через sudo, предположу что в первом случае он пытается поднять tun0 не от рута?

п.с, что означает вот это

Fri Mar 20 08:25:02 2020 us=741725 admicrb/188.169.85.208:25672 MULTI: bad source address from client [192.168.43.177], packet dropped

Таких слишком много.

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

да, нужно проверить запуск от рута, т.к. без рутовых прав поднять интерфейс tun не получится, ну или делать записи в sudoers.

п.с, что означает вот это

Это он ругается, если не изменяет память, на отсутствие записей в ipp.txt, вроде. По факту в минимальном конфиге все должно уже работать.

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

Забыл обновить правила iptables, сейчас не дропит. Разберусь с service openvpn start вечером, спасибо за оперативную поддержку, всего вам хорошего!

andrey7690
() автор топика
Ответ на: комментарий от Aborigen1020

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

server 10.9.0.0 255.255.255.0

# Maintain a record of client <-> virtual IP address
# associations in this file.  If OpenVPN goes down or
# is restarted, reconnecting clients can be assigned
# the same virtual IP address from the pool that was
# previously assigned.
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push "redirect-gateway def1 bypass-dhcp"
;push "dhcp-option DNS 10.4.31.254"

push "route-gateway 10.4.31.254"
;push "redirect-gateway def1 bypass-dhcp"

;ifconfig 10.9.0.1 255.255.255.0

После подкючения к серверу, пингуется 8.8.8.8, все остальное дропится.

10.4.31.254 - шлюз по умолчанию. В сети 10.4.31.0/24
10.4.31.17 (10.9.0.1) это сервер openvpn и dhcp.
andrey7690
() автор топика
Ответ на: комментарий от andrey7690

Сформулируйте еще раз, что именно вы хотите получить.

Если я правильно понял Вашу задачу, Вам даже дополнительных маршрутов не нужно - у вас же прямой vpn-канал до сервера с базой. Просто указываете в настройках Вашего Web-сервера в качестве IP сервера базы данных IP-адрес на другом конце туннеля, и все.

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

Необходимо следующее:

Клиент подключается к серверу openvpn и должен получить доступ к локальной сети в которой сидит сервер openvpn. При этом не весь трафик клиента заворачивается на сервер, а только на 10.4.31.0.24.

Сеть в которой находится сервер openvpn:

gateway: 10.4.31.254
openvpn & dhcp 10.4.31.17

На данный момент есть пинг до: ya.ru, 8.8.8.8 и т.д. , но нет в 10.4.31.0/24.

Конфиг: config

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

После добавления, пинг есть только до 10.4.31.17(сервер openvpn), на все остальное пропадает.

ifconfig-pool-persist /var/log/openvpn/ipp.txt
push "route 10.4.31.0 255.255.255.0"
push "redirect-gateway def1 bypass-dhcp"

Лог:

Fri Mar 20 16:05:31 2020 us=662667 admicrb/172.170.87.217:64987 MULTI: bad source address from client [192.168.43.177], packet droppe
andrey7690
() автор топика
Последнее исправление: andrey7690 (всего исправлений: 1)
Ответ на: комментарий от andrey7690

Огромная куча сумбура из которой непонятно ничего.
кпя у вас два сервера которые выдают адреса из одного пула. Хорошо на одном их них меняет пул на другую подсеть. Далее надо что бы сервер A так же выступал клиентом сервера B но при этом не получал «redirect-gateway def1» а только роуты до сети сервера B. Я правильно понял?
Тогда на сервер B в ccd клиента сервер A прописываем push "route net netmask" например push "route 10.10.10.0 255.255.255.0". В конфиге клиента на сервере A прописываем pull-filter ignore "redirect-gateway"

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

Сейчас сервер B, вообще не участвует.

Сломался сервер А. Я с утра варьирую конфигурацию и подвижек особых нет.

Вывод tracerouter c клиента:

traceroute to 10.4.31.254 (10.4.31.254), 30 hops max, 60 byte packets
 1  10.9.0.1 (10.9.0.1)  117.986 ms  139.049 ms  157.770 ms
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * * *

conf server A

Пинг идет только до 10.4.31.17(машина на которой penvpn сервер) До всего остального нет.

icrb_1@icrb-1:~$ grep -vE '(^ *$|^#|^;)' /etc/openvpn/server.conf
port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key  # This file should be kept secret
dh /etc/openvpn/dh2048.pem
server 10.9.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
client-to-client
keepalive 10 120
tls-auth /etc/openvpn/ta.key 0 # This file is secret
key-direction 0
cipher AES-128-CBC
auth SHA256
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log         /var/log/openvpn/openvpn.log
verb 4
explicit-exit-notify 1
andrey7690
() автор топика
Последнее исправление: andrey7690 (всего исправлений: 4)
Ответ на: комментарий от andrey7690

Ну и чего достичь хотели? Я вам написал если я правильно понял вашу конфигурацию как сделать. Но вы её не подтвердили и не опровергли. Верните все как было и начните с нуля. Что вы «по одному орешку» приносите?
А вообще нарисуйте схему с ip адресами и т.д., а то гадать можно долго.

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

Оставим конфигурацию из первого поста. На данный момент только сервер A и клиенты. Я не могу получить доступ в локальную сеть, пинг только до адреса сервера в локальной сети.

Конфиг:

icrb_1@icrb-1:~$ grep -vE '(^ *$|^#|^;)' /etc/openvpn/server.conf
port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key  # This file should be kept secret
dh /etc/openvpn/dh2048.pem
server 10.9.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
ifconfig 10.9.0.1 255.255.255.0
route 10.9.0.0 255.255.255.0 10.9.0.1
client-to-client
keepalive 10 120
tls-auth /etc/openvpn/ta.key 0 # This file is secret
key-direction 0
cipher AES-128-CBC
auth SHA256
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log         /var/log/openvpn/openvpn.log
verb 4
explicit-exit-notify 1

Лог:

Fri Mar 20 18:24:26 2020 us=469152 /sbin/ip addr add dev tun0 local 10.9.0.1 peer 10.9.0.2
Fri Mar 20 18:24:26 2020 us=471226 /sbin/ip route add 10.9.0.0/24 via 10.9.0.1
Fri Mar 20 18:24:26 2020 us=472794 /sbin/ip route add 10.9.0.0/24 via 10.9.0.2
RTNETLINK answers: File exists
Fri Mar 20 18:24:26 2020 us=475013 ERROR: Linux route add command failed: external program exited with error status: 2

Fri Mar 20 18:27:14 2020 us=609150 admicrb/188.170.87.217:1932 MULTI: bad source address from client [192.168.43.177], packet dropped

Утром у меня получалось запустить, сейчас что сделалось вообще не представляю.

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

Это зачем?
ifconfig 10.9.0.1 255.255.255.0
route 10.9.0.0 255.255.255.0 10.9.0.1
Читаем man openvpn

       --server network netmask ['nopool']
              A  helper  directive  designed  to simplify the configuration of
              OpenVPN's server mode.  This directive will set  up  an  OpenVPN
              server which will allocate addresses to clients out of the given
              network/netmask.  The server itself will take the  ".1"  address
              of  the given network for use as the server-side endpoint of the
              local TUN/TAP interface.

              For example, --server 10.8.0.0 255.255.255.0 expands as follows:

                   mode server
                   tls-server
                   push "topology [topology]"

                   if dev tun AND (topology == net30 OR topology == p2p):
                     ifconfig 10.8.0.1 10.8.0.2
                     if !nopool:
                       ifconfig-pool 10.8.0.4 10.8.0.251
                     route 10.8.0.0 255.255.255.0
                     if client-to-client:
                       push "route 10.8.0.0 255.255.255.0"
                     else if topology == net30:
                       push "route 10.8.0.1"

                   if dev tap OR (dev tun AND topology == subnet):
                     ifconfig 10.8.0.1 255.255.255.0
                     if !nopool:
                       ifconfig-pool 10.8.0.2 10.8.0.253 255.255.255.0
                     push "route-gateway 10.8.0.1"
                     if route-gateway unset:
                       route-gateway 10.8.0.2

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

Схему не понял до конца, вам нужен также доступ к сети 10.4.31.0/24 ? тогда её тоже надо запушить, но не забывать что клиенты сети 10.4.31.0/24 так же должны знать куда ответить.
Стрелка с web трафик не понятна. Все-таки больше золота.

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

Давайте полную схему. С подписями где сервер A где сервер B кто куда подключается и конфиги со всех сторон.

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

Схема

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

push "redirect-gateway def1 bypass-dhcp"

Но как мне кажется, он использовал какой то дефолтный конфиг. Так же sudo service openvpn restart не может поднять tun (не хватает прав), а скажем sudo openvpn –config /etc/openvpn/server.conf & может. Вывод у nobody не хватает прав на поднятие tun.

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

В старом конфиге у меня было только и все работало,

Только что?

сейчас если добавить не работает

Добавить что?

Так же sudo service openvpn restart не может поднять tun (не хватает прав), а скажем sudo openvpn –config /etc/openvpn/server.conf & может. Вывод у nobody не хватает прав на поднятие tun.

Distrname озвучьте.

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

только вот это:

push "redirect-gateway def1 bypass-dhcp"

Сейчас

port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key  # This file should be kept secret
dh /etc/openvpn/dh2048.pem
server 10.9.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push "redirect-gateway def1 bypass-dhcp"
client-to-client
keepalive 10 120
tls-auth /etc/openvpn/ta.key 0 # This file is secret
key-direction 0
cipher AES-128-CBC
auth SHA256
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log         /var/log/openvpn/openvpn.log
verb 4
explicit-exit-notify 1

ubuntu 16.04 Linux icrb-1 4.15.0-91-generic #92-Ubuntu

Возможно дело вовсе не в openvpn.

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

Может кто-то и распарсит вашу «схему» но я сейчас не могу, уж простите. Вопросов больше чем ответов. И таки да имхо у вас проблема начинается с непонимания роутинга. Всё решаемо, но вы не можете даже на схеме для себя расписать какие пакеты от кого должны и куда ходить, начните с этого.

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

Схема из вправду сумбурна, но все лежит на поверхности, попробую разобрать завтра, второй сервер практический такой же, попробую сравнить конфигурации и выявить различия, спасибо за ответы!

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

Вообщем дело было в ufw я проверил правила, ребутнул его и пинги пошли. Разберусь с sudo service openvpn restart, почему не может поднять тунель и отпишусь.

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

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

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

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

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

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

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

Да я починил уже все с iptables. У меня был скрипт для iptables в нем было 10.8.0.0 FORWARD. Мифический конфиг и был обоснован этим.

Сейчас все окей, за исключением:

1. проскакивает нормальное количество dropped.
RSat Mar 21 12:41:41 2020 us=597990 client3/138.160.83.189:51351 MULTI: bad source address from client [192.168.1.48], packet dropped
2. все равно весь трафик идет через vpn, несмотря на отсутствие 
push "redirect-gateway def1 bypass-dhcp"
А мне нужен только route 10.4.31.0/24

Сейчас я читаю документацию и решаю эти две проблемы.

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

По первому:

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

Используйте client-config-dir и создайте для своего клиента ccd-файл, содержащий параметр iroute, чтобы сообщить OpenVPN, что сеть 192.168.100.0/24 доступна за этим клиентом.

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

andrey7690
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.