Openvpn доступность клиентов серверу

Автор Vyacheslavv, 06 июня 2018, 17:21:14

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Vyacheslavv

Приветствую!
Помогите разобраться. Настроил Openvpn сервер вот по этой инструкции взятой за основу, сейчас конфиг подправлен в процессе копания. Клиенты подключаются, ходят через него в сеть и все хорошо. Но конечная задача немного не стандартная. Обычно люди используют openvpn чтобы попасть откуда-то куда-то, а мне нужно чтобы в создаваемой сервером сети хотя бы один из них мог соединяться с сервером и видеть его полноценно как если бы они действительно были в одной локалке. На пример, если в тоннеле сервер забирает себе 10.8.0.1, а клиент получает 10.8.0.5 то они должны друг друга "видеть".  На сервере и на клиенте будет стоять Bird и мне нужно чтобы они обменивались маршрутами по BGP на 179м порту. Клиент - одноплатный комп, подключен кабелем, сидит в домашней сетке за провайдерским роутером, у которого серый внешний IP. Цель - не покупать микротик использовать одноплатник как гейт в домашней сети, с динамической маршрутизацией, который будет заворачивать нужные запросы в VPN.
Ближе к делу.
Сейчас все клиенты пингуют друг друга и пингуют сервер. Для тестов в качестве клиентов были использованы три компа на винде, домашине и рабочий из совершенно другой сети и один домашний комп линуксе, плюс тот самый одноплатник и в довесок мобильник на андроиде. Все они пингуют друг друга и сервак, но сервак пингует только трубку на андроиде! Один раз в процессе копаний получил пинги и на винде, отключив на ней фаерволл. Профили подключения у них разные, использовал как автоматическую выдачу IP адресов так и назначение адресов сервером.
Больше всего пинал одноплатник. На нем вчера с помощью tcpdump обнаружил что он принимает пинги на tun0, а отвечает на них почему то с eth0, да еще и не в тоннель, а на внешний адрес сервера. Возможно что проблема в маршрутах, iptables я очищал полностью. Но я не могу в них разобраться. Когда я это отловил таблица маршрутов выглядела вот так на стороне клиента:

Для сети внутри тоннеля использовались адреса 192.168.25.0 с маской /30, как рекомендовано в конфиге openvpn. К сожалению конфиг не сохранился, случайно потер его в ночи (

Интерфейсы на клиенте на момент теста
Открыть содержимое (спойлер)
inet 192.168.1.6  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::1:daff:fe76:8374  prefixlen 64  scopeid 0x20<link>
        ether 02:01:da:76:83:74  txqueuelen 1000  (Ethernet)
        RX packets 8056  bytes 1798369 (1.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8229  bytes 2018586 (1.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 23 

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 192.168.25.5  netmask 255.255.255.255  destination 192.168.25.6
        inet6 fe80::3720:eaa3:480d:20a1  prefixlen 64  scopeid 0x20<link>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 100  (UNSPEC)
        RX packets 7  bytes 420 (420.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9  bytes 544 (544.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 12:01:da:76:83:74  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[свернуть]

Таблица маршрутов с поднятым каналом
Открыть содержимое (спойлер)
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.25.6    128.0.0.0       UG    0      0        0 tun0
default         gateway         0.0.0.0         UG    0      0        0 eth0
128.0.0.0       192.168.25.6    128.0.0.0       UG    0      0        0 tun0
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 eth0
vpn.server      gateway         255.255.255.255 UGH   0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.25.0    192.168.25.6    255.255.255.0   UG    0      0        0 tun0
192.168.25.6    0.0.0.0         255.255.255.255 UH    0      0        0 tun0
[свернуть]

Буду рад любому совету в какую сторону копать т.к. в вопросе не очень разбираюсь и все делается по обрывкам информации которые удается нагуглить.

upd
Конфиг при котором ответ на пинги идет, но не обратно в тоннель, а на eth1 на внешний адрес сервера

Открыть содержимое (спойлер)
# Сертификаты сервера
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh2048.pem

# Тип шифрования трафика
tls-auth ta.key 0 # This file is secret
key-direction 0
# Select a cryptographic cipher.
# This config item must be copied to
# the client config file as well.
;cipher BF-CBC        # Blowfish (default)
cipher AES-128-CBC   # AES
auth SHA256
;cipher DES-EDE3-CBC  # Triple-DES

# Архитектура сети, адрессация
topology subnet

# Адреса внутри тоннеля, сервер возьмет 10.8.0.1, остальное раздаст клиентам
server 10.8.0.0 255.255.255.0

# Выдавать одни и те же IP клиентам при переподключении
ifconfig-pool-persist ipp.txt

# Проталкивание маршрутов до сетей за сервером клиентам
# Push routes to the client to allow it
# to reach other private subnets behind
# the server.  Remember that these
# private subnets will also need
# to know to route the OpenVPN client
# address pool (10.8.0.0/255.255.255.0)
# back to the OpenVPN server.
#push "route 192.168.10.0 255.255.255.0"
#push "route 192.168.20.0 255.255.255.0"


#########Эта штука не работает при topology subnet!############

# To assign specific IP addresses to specific
# clients or if a connecting client has a private
# subnet behind it that should also have VPN access,
# use the subdirectory "ccd" for client-specific
# configuration files (see man page for more info).

# EXAMPLE: Suppose the client
# having the certificate common name "Thelonious"
# also has a small subnet behind his connecting
# machine, such as 192.168.40.128/255.255.255.248.
# First, uncomment out these lines:
;client-config-dir ccd
;route 192.168.40.128 255.255.255.248
# Then create a file ccd/Thelonious with this line:
#   iroute 192.168.40.128 255.255.255.248
# This will allow Thelonious' private subnet to
# access the VPN.  This example will only work
# if you are routing, not bridging, i.e. you are
# using "dev tun" and "server" directives.

#############################################################

# И эта тоже не работает!
# EXAMPLE: Suppose you want to give
# Thelonious a fixed VPN IP address of 10.9.0.1.
# First uncomment out these lines:
#client-config-dir ccd
#route 10.9.0.0 255.255.255.252
# Then add this line to ccd/Thelonious:
#   ifconfig-push 10.9.0.1 10.9.0.2

#############################################################

# Отправляет ВСЕ запросы клиентов с гейтов по умолчанию и днс запросы в тоннель, вообще всь трафик
push "redirect-gateway def1 bypass-dhcp"

# Заставляет клиентов использовать эти днс
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

# Позволяет клиентам с разными профилями подключение вдеть друг друга в сети
client-to-client


# Разрешает подключение нескольких клиентов под одним профилем
#duplicate-cn

# Реконнект в случае обрывов
keepalive 10 120

# Сжатие пакетов
#comp-lzo

# Максимальное кол-во клентов
#max-clients 100

# Понижение прав для лучшей безопасности
user nobody
group nogroup


# Не пересоздавать при переподключении, для стабильности
persist-key
persist-tun

# Мини лог, подключенные клиенты, обновляется раз в минуту
status openvpn-status.log

# Отдельной лог файл вместо syslog, один из
#log         openvpn.log
#log-append  openvpn.log

# Уровень логирования
# 0 is silent, except for fatal errors
# 4 is reasonable for general usage
# 5 and 6 can help to debug connection problems
# 9 is extremely verbose
verb 3

# Резать одинаковые сообщения в логе
#mute 20
[свернуть]