LINUX.ORG.RU
решено ФорумAdmin

Клиент-серверный вариант OpenVPN

 , ,


0

1

Всем привет!

Есть облачные сервера Centos. Задача: построить архитектуру OpenVPN в таком виде: клиент подключается к бастиону ->> бастион подключается к центральному серверу OpenVPN ->> центральный сервер маршрутизирует трафик во внутреннюю сеть нужного мне сервиса. Всего должно быть 3 бастиона (по одному для каждого филиала) и два центральных OpenVPN-сервера с плавающим IP. Короче: клиент OpenVPN ->> клиент-сервер OpenVPN ->> сервер OpenVPN.

IP-адрессация (белые адреса, все на разных облаках; придуманные айпишники из головы):

1. Бастион - 175.79.254.95

2. Центральный сервер - 79.175.254.95

Что имею: клиент (любой айпи) без проблем по отдельности подключается и к бастиону (175.79.254.95) , и к центральному серверу (79.175.254.95). Интернет есть с обоих серверов.

Проблема: при коннектинге бастиона (175.79.254.95) и центрального сервера (79.175.254.95) обрывается связь с бастионом. Бастион не пингуется и не подает никаких признаков жизни, пока не перезапустить сервер.

Конфиг центрального OpenVPN-сервера:

[root@central-vpn-server ~]# cat /etc/openvpn/central-vpn-server.conf
port 1194
proto tcp
dev tun

ca /etc/openvpn/ca.crt
cert /etc/openvpn/central-vpn-server.crt
key /etc/openvpn/central-vpn-server.key
dh /etc/openvpn/dh2048.pem
tls-auth /etc/openvpn/ta.key 0
key-direction 0
cipher AES-128-CBC
auth SHA512

server 10.8.4.0 255.255.255.0
ifconfig-pool-persist ipp.txt

push «dhcp-option DNS 208.67.222.222»
push «dhcp-option DNS 208.67.220.220»
push «redirect-gateway def1 bypass-dhcp»

keepalive 10 120

comp-lzo
user nobody
group nobody
persist-key
persist-tun

status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
log /var/log/openvpn.log

Состояние netstat -tlnp центрального OpenVPN-сервера:

[root@central-vpn-server~]# netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1017/master
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 930/nginx: master p
tcp 0 0 0.0.0.0:22131 0.0.0.0:* LISTEN 1139/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1017/master
tcp6 0 0 :::80 :::* LISTEN 930/nginx: master p
tcp6 0 0 :::22131 :::* LISTEN 1139/sshd

Состояние netstat -nr центрального OpenVPN-сервера:

[root@central-vpn-server ~]# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.18.62.22 0.0.0.0 UG 0 0 0 eth0
10.18.62.22 0.0.0.0 255.255.255.254 U 0 0 0 eth0

Конфиг бастион OpenVPN-сервера:

[root@bastion-server ~]# cat /etc/openvpn/bastion-server.conf
port 1194
proto tcp
dev tun

ca /etc/openvpn/ca.crt
cert /etc/openvpn/bastion-server.crt
key /etc/openvpn/bastion-server.key
dh /etc/openvpn/dh2048.pem
tls-auth /etc/openvpn/ta.key 0
key-direction 0
cipher AES-128-CBC
auth SHA512

topology subnet
server 10.8.3.0 255.255.255.0
ifconfig-pool-persist ipp.txt

push «dhcp-option DNS 208.67.222.222»
push «dhcp-option DNS 208.67.220.220»
push «redirect-gateway def1 bypass-dhcp»

keepalive 10 120

comp-lzo
user nobody
group nobody
persist-key
persist-tun

status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log

Состояние netstat -tlnp бастион OpenVPN-сервера:

[root@bastion-server ~]# netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:1194 0.0.0.0:* LISTEN 1020/openvpn
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1038/nginx: master
tcp 0 0 0.0.0.0:22131 0.0.0.0:* LISTEN 1253/sshd
tcp6 0 0 :::80 :::* LISTEN 1038/nginx: master
tcp6 0 0 :::22131 :::* LISTEN 1253/sshd

Состояние netstat -nr бастион OpenVPN-сервера:

[root@bastion-server ~]# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 172.31.1.1 0.0.0.0 UG 0 0 0 eth0
10.8.3.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
172.31.1.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0

Конфиг клиента (одинаковый):

[root@client ~]# cat /etc/openvpn/client.conf
client
dev tun
proto tcp
remote $IP 1194

remote-cert-tls server
key-direction 1
cipher AES-128-CBC
auth SHA512
auth-nocache
nobind

resolv-retry infinite
comp-lzo
verb 3

persist-key
persist-tun
user nobody
group nobody

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

Вам нужен доступ только до «внутреннюю сеть нужного мне сервиса» или что бы весь трафик клиентов шел через ovpn ?

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

Получилось так, что я разобрался сам, прочитав man openvpn. Полезная штука.

Что я имею в итоге: клиент получает айпи бастиона, бастион подключается к центральному серверу и имеет свой айпи, клиенты же имеют доступ в интернет при подключенном впне. Что делать дальше, пока ума не приложу, сижу разбираюсь с keepalived.

Ниже конфиги бастиона и центрального сервера для потомков.

Конфиг бастиона

port 1194
proto tcp
dev tun

ca /etc/openvpn/ca.crt
cert /etc/openvpn/bastion-server.crt
key /etc/openvpn/bastion-server.key
dh /etc/openvpn/dh2048.pem
tls-auth /etc/openvpn/ta.key 0
key-direction 0
cipher AES-128-CBC
auth SHA512

topology subnet #Для Windows-клиентов
server 10.8.3.0 255.255.255.0
ifconfig-pool-persist ipp.txt

push «dhcp-option DNS 208.67.222.222»
push «dhcp-option DNS 208.67.220.220»
push «route-gateway 10.8.4.1»
push «redirect-gateway def1 bypass-dhcp»
client-to-client #Под вопросом, нужно ли это, но пока оставил

keepalive 10 120

comp-lzo
user nobody
group nobody
persist-key
persist-tun

status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
log /var/log/openvpn.log

Конфиг центрального сервера

port 1194
proto tcp
dev tun

ca /etc/openvpn/ca.crt
cert /etc/openvpn/central-vpn.crt
key /etc/openvpn/central-vpn.key
dh /etc/openvpn/dh2048.pem
tls-auth /etc/openvpn/ta.key 0
key-direction 0
cipher AES-128-CBC
auth SHA512

topology p2p
server 10.8.4.0 255.255.255.0
ifconfig-pool-persist ipp.txt
client-to-client

push «dhcp-option DNS 208.67.222.222»
push «dhcp-option DNS 208.67.220.220»


keepalive 10 120

comp-lzo
user nobody
group nobody
persist-key
persist-tun

status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
log /var/log/openvpn.log

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

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

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

Но тут я пока даже вопросов задать не готов, так как дельных попросту нет.

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

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

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

Простите за нескромный вопрос. Но как вы что-то пытаетесь сделать «не совсем понимая как будет всё работать»? Мне всегда казалось, что начинают с постановки задачи, а уж потом что-то делают.

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

А вот на этот нескромный ответ смогу ответить внятно.

Я не знаю этого не потому, что не готовил план-проект и не расписывал всё, вплоть до CN, а потому, что у меня нет знаний. Например, 2 недели назад я не понимал, что для работы клиент-серверного варианта OpenVPN необходимо запускать два демона, один на сервер, другой на клиент. Со временем я пойму, как будет (именно программно) работать моя конфигурация.

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

Всего наилучшего и хорошего дня!

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