LINUX.ORG.RU
ФорумAdmin

Double VPN на основе OpenVPN

 ,


0

2

Настроил на двух серверах OpenVPN серверную часть, а так же на первом настроил клиент часть, для подключения ко второму серверу.
Получается цепочка клиент->vpn1->vpn2-сервер. По отдельности трафик проходит через сервера, но когда настраиваю перенаправление трафика с tun0 на tun1 на первом сервере, трафик не проходит.
Подскажите пожалуйста, может не правильно как то трафик перенаправляю.
Правила использовал такие:

echo '150 vpn.out' >> /etc/iproute2/rt_tables 
ip rule add from 192.168.100.0/24 table vpn.out
ip route add default dev tun1 table vpn.out
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o tun1 -j MASQUERADE

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

anc ★★★★★ ()

Не очень понятно, что куда должно проходить. Рапиши подробней, где какие подсети, из какой подсети в какую не идет. Как проверял и т.д.

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

Есть 2 сервера, OC на обоих Debian, поставил на первом OpenVPN, и настроил конфиг под сервер и под клиент, где клиент подключается ко второму серверу, где стоит только OpenVPN сервер. Конфиг server.conf на обоих серверах:

dev tun0
proto tcp
port 1194
server 192.168.101.0 255.255.255.0
#push "redirect-gateway def1"
push "dhcp-option DNS 127.0.0.1"
tls-server
tls-auth /etc/openvpn/keys/ta.key 0
tls-timeout 120
auth SHA1
cipher AES-256-CBC
comp-lzo
auth-nocache
keepalive 10 120
persist-tun
persist-key
dh /etc/openvpn/keys/dh1024.pem
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
log /etc/openvpn/logs/openvpn.log
status /etc/openvpn/logs/openvpn-status.log
verb 3
script-security 2

[br]Конфиг клиента:
client
dev tun
proto tcp
remote 139.59.145.59 1200
#push "redirect-gateway def1"
tls-client
tls-auth /etc/openvpn/client/keys/ta.key 1
auth SHA1
remote-cert-tls server
nobind
cipher AES-256-CBC
comp-lzo
auth-nocache
ca /etc/openvpn/client/keys/ca.crt
cert /etc/openvpn/client/keys/client2.crt
key /etc/openvpn/client/keys/client2.key
persist-tun
persist-key
log /etc/openvpn/client/logs/openvpn.log
verb 3
script-security 2
#up /etc/openvpn/client/update-resolv-conf
#down /etc/openvpn/client/update-resolv-conf
[br]Получается на первом сервере 2 интерфейса tun0 и tun1, ну и конечно eth0, на втором только tun0 и eth0.
[br]Что трафик не проходит определил, подключаюсь к первому серверу.
limer2012 ()
Ответ на: комментарий от limer2012

log /etc/openvpn/logs/openvpn.log
status /etc/openvpn/logs/openvpn-status.log

Лучше в /var/log засунь, чтобы по феншую было.

server 192.168.101.0 255.255.255.0

С локалкой не пересекается?

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

Radjah ★★★★★ ()

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

А не проще было подключить всех к одному серверу, чтобы все в одной сети были?

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

1) Приведи конфиги:
- первый сервер конфиг OpenVPN сервера;
- первый сервер конфиг OpenVPN клиента;
- второй сервер конфиг OpenVPN сервера;
2) Напиши какие адреса на интерфейсах eth0 на серверах, белые ли адреса на них или за nat-ом стоят?;
3) Как расположены OpenVPN сервера относительно друг друга(в локальной сети, в локальных сетях связанных местным роутером, каждый в своей локальной сети связь через интернет).
4) Откуда ты подключаешься, что не проходит подключение?
Описывай подробно.

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

1. А сейчас они разве не отличаются? 2. Не очень понял этот пункт. 3. 1 VDS сервер во франции, другой в США, виртуализация KVM. 4. Подключаюсь со своего пк.

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

В конфиге сервера:

push "route 192.168.1.0 255.255.255.0"
Клиент при подключении добавит в систему маршрут до сети 192.168.1.0/24 через openvpn-сервер.

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

1) Ты привел два конфига. Один сервера, второй клиента. Хотя конфигов должно быть три:
- первый сервер конфиг OpenVPN сервера;
- первый сервер конфиг OpenVPN клиента(также этот конфиг может быть использован для OpenVPN клиента на твоем домашнем ПК(ну или рабочем, короче на том, откуда ты подключаешься));
- второй сервер конфиг OpenVPN сервера;
2) У тебя на OpenVPN серверах я так понял публичные ip адреса(или белые);

Конфиги серверов не могут совпадать полностью, т.к. у тебя есть директива:

192.168.101.0 255.255.255.0
Если ты хочешь подключить сервера друг к другу, нужно чтобы у них были разные адреса.
Кроме того у тебя в конфиге сервера стоит port 1194, а в конфиге клиента уже ты подключаешься к remote 139.59.145.59 1200

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

1) Ты привел два конфига. Один сервера, второй клиента. Хотя конфигов должно быть три:

Четыре. у него первый сервер является клиентом второго.
1. Сервер1 - конфиг сервера
2. Сервер1 - конфиг клиента для подключения к серверу2
3. Сервер2 - конфиг сервера
4. Конфиг клиента для подключения к Сервер1

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

Имел ввиду три конфига что я попросил. А так да, четыре.

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

Короче говоря приведи те конфиги, что я попросил и также конфиг клиента, с домашнего пк.

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

И да, на втором сервере должна быть другая подсеть.Например 192.168.102.0 255.255.255.0

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

Вот, ТС, ты мне конечно будешь должен как земля колхозу.
Поднял у себя на Virtualbox машинах твою схему.
Итак.
три машины(все три Ubuntu 14.04):
1-ая: eth0 192.168.0.50/24, является только OpenVPN сервером, создает виртуальную сеть 192.168.150.0/24, в ней берет себе адрес 192.168.150.1/24;
2-ая: eth0 192.168.0.51/24, является и OpenVPN клиентом(подключается к OpenVPN-серверу на первой машине) и OpenVPN сервером(к нему подключается 3-я машина) создает виртуальную сеть 192.168.200.0/24, себе берет в ней адрес 192.168.200.1/24;
3-я: eth0 192.168.0.52/24, является OpenVPN клиентом(подключается к OpenVPN-серверу на второй машине машине).

На всех машинах конфигурация itables по умолчанию, т.е. разрешить все, НИКАКОГО МАСКАРАДИНГА включать не нужно.
Также нигде не нужно дополнительно настраивать маршруты или правила утилитой ip !!!

На компьютере 2(192.168.0.51/24) в файле /etc/sysctl.conf должна быть раскоментирована строка:
net.ipv4.ip_forward=1

Настройка OpenVPN на первой машине:

# файл /etc/openvpn/openvpn.conf

port 30443
proto tcp-server
dev tun
mode server

tls-server
tls-auth keys/ta.key 0
tls-cipher TLS-DHE-RSA-WITH-AES-256-CBC-SHA
cipher AES-256-CBC
auth SHA512
ca keys/ca.crt
cert keys/s0.crt
key keys/s0.key
dh keys/dh2048.pem

ifconfig 192.168.150.1 255.255.255.0
route 192.168.200.0 255.255.255.0 192.168.150.2

topology subnet
push topology subnet
client-to-client

keepalive 5 10
comp-lzo yes
persist-key
persist-tun

status /var/log/openvpn-status.log
log    /var/log/openvpn.log
verb 4

client-config-dir ccd
script-security 2
# файл etc/openvpn/ccd/s0-client0 
ifconfig-push 192.168.150.2 255.255.255.0
iroute 192.168.200.0 255.255.255.0
Настройка OpenVPN на второй машине:
# файл /etc/openvpn/openvpn-server.conf 
port 30443
proto tcp-server
dev tun
mode server

tls-server
tls-auth keys-server/ta.key 0
tls-cipher TLS-DHE-RSA-WITH-AES-256-CBC-SHA
cipher AES-256-CBC
auth SHA512
ca keys-server/ca.crt
cert keys-server/s1.crt
key keys-server/s1.key
dh keys-server/dh2048.pem

ifconfig 192.168.200.1 255.255.255.0
push route 192.168.150.0 255.255.255.0 192.168.200.1

topology subnet
push topology subnet
client-to-client

keepalive 5 10
comp-lzo yes
persist-key
persist-tun

status /var/log/openvpn-status.log
log    /var/log/openvpn.log
verb 4

client-config-dir ccd
script-security 2
# файл /etc/openvpn/ccd/s1-client0 
ifconfig-push 192.168.200.2 255.255.255.0
# файл /etc/openvpn/openvpn-client.conf 
pull

tls-client
tls-auth keys-client/ta.key 1
tls-cipher TLS-DHE-RSA-WITH-AES-256-CBC-SHA
cipher AES-256-CBC
auth SHA512
ca keys-client/ca.crt
cert keys-client/s0-client0.crt
key keys-client/s0-client0.key

dev tun
proto tcp-client

remote-cert-tls server
remote 192.168.0.50 30443

nobind
keepalive 5 15
comp-lzo yes
persist-key
persist-tun

verb 4
status /var/log/openvpnc-status.log
log    /var/log/openvpnc.log
Настройка OpenVPN на третьей машине:
# файл /etc/openvpn/openvpn.conf 
pull

tls-client
tls-auth keys/ta.key 1
tls-cipher TLS-DHE-RSA-WITH-AES-256-CBC-SHA
cipher AES-256-CBC
auth SHA512
ca keys/ca.crt
cert keys/s1-client0.crt
key keys/s1-client0.key

dev tun
proto tcp-client

remote-cert-tls server
remote 192.168.0.51 30443

nobind
keepalive 5 15
comp-lzo yes
persist-key
persist-tun

verb 4
status /var/log/openvpn-status.log
log    /var/log/openvpn.log
Ну вроде все. Не исключено, что где-то я опечатку сделал. Но конфигурация рабочая, с третьей машины доступна виртуальная сеть, что на первой машине, обратно тоже. Так что проверяй. Свои адреса по аналогии подставь.

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

Парился, тоже вчера весь вечер, все заработало, в чем была проблема не понял, но скорее всего в DNS. Без маскардинга не обошлось. Как использовать локальные DNS, чтобы не использовать сторонние?

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

Ну во первых твой dns-сервер должен слушать в числе прочих и на интерфейсе tun (который создается OpenVPN). Во вторых, в конфиге сервера должна быть строки:

push dhcp-option DNS 192.168.150.1
В третьих, в конфиге клиента должны быть строки(в случае ubuntu14.04/debian7/debian8):
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Последние нужны для обновления /etc/resolv.conf клиента при подключении к OpenVPN серверу.

rumgot ★★★★★ ()

Ух ты, как знакомо, писал как раз, недавно чуваку ман как сделать связку, аля:

Винядвый openvpn client -> Openvpn server -> ssh tunnel к любому Linux серверу где есть ssh.

Трафик идет через openvpn и выходит на ssh туннеле, количество конечных туннелей - сколько подключишь. Если еще актуально, могу скинуть инструкцию

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

Я наверное не совсем корректно выразился, с последних серверов с ssh tunnel производился выход в интернет, они были шлюзом для openvpn клиента. А почему так, чувак сидел на винде и хотел себе много шлюзов в разных странах для своих махинаций, покупал тыреные дедики и через них выходил на ebay и т.д. Мне показалось самым простым и малокнопочным тогда сделать именно такую связку, подключить новый шлюз и выходить через него проще пареной репы, за пару мин.

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

Ты хочешь, чтобы dns запросы с твоего компа шли к твоему dns серверу через твой vpn туннель. Значит нужно, чтобы при подключении к серверу, он(vpn сервер) дал бы тебе адрест dns сервера, а дальше нужно, чтобы твой vpn клиент прописал бы этот адрес в resolv.conf . Вручную туда писать ничего не нужно, твой vpn клиент сделает это сам, но для этого нужны те директивы.

rumgot ★★★★★ ()
Ответ на: комментарий от rumgot
client
dev tun
proto tcp-client
remote 139.59.145.59 1200
#push "redirect-gateway def1"
tls-client
tls-auth /etc/openvpn/client/keys/ta.key 1
auth SHA512
remote-cert-tls server
nobind
cipher AES-256-CBC
comp-lzo

auth-nocache

ca /etc/openvpn/client/keys/ca.crt
cert /etc/openvpn/client/keys/client2.crt
key /etc/openvpn/client/keys/client2.key

persist-tun
persist-key

log /etc/openvpn/client/logs/openvpn.log
verb 3

script-security 2
up /etc/openvpn/client/update-resolv-conf
down /etc/openvpn/client/update-resolv-conf

Когда прописал up и down перестал запускаться скрипт openvpn.

openvpn /etc/openvpn/client/client.conf

limer2012 ()

А в чем смысл этой конструкции «Double VPN»? Ну, оно повышает секурность (типа 6DES), или там особо хитро маршрутизируемая приватная сеть?

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

Ну вот. У тебя в resolv.conf стоит адрес твоего локального днс сервера(т.е. он должен быть на этом же компе). У тебя на локальном компе работает днс сервер? Далее ты писал, что хочешь, чтобы твой комп обращался к днс серверу за openvpn сервером(или к днс серверу на самом openvpn сервере). Значит твой openvpn сервер должен передавать адрес днс сервера твоему клиенту, ты поставил в конфигурации openvpn сервера опцию push dhcp-option DNS <адрес серверк днс> ?

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

Честно говоря я уже и не знаю, зачем ТС это. Я такое делал больше из спортивного интереса.

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

Нет, только на сервере. Еще поставь на клиенте опцию pull

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

Вообще, ТС. Ты бы сначала попробовал настроить простую openvpn конфигурацию(один сервер, один клиент). Поиграл бы с опциями. Посмотрел, какая опция на что влияет.

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