Назад | Перейти на главную страницу

openvpn tunnel - туннель работает, но проблемы с маршрутизацией

У меня проблема с туннелем между сайтами. Оба маршрутизатора являются маршрутизаторами на базе centos. Маршрутизатор A является сервером, а маршрутизатор B - клиентом.

VPN-туннель установлен. С маршрутизатора B я могу пинговать что угодно в сети маршрутизатора A. С маршрутизатора A (и сети за ним),

Я не могу пинговать что-либо в сети за маршрутизатором B или за маршрутизатором A.

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

Есть идеи, где мне искать? Оба они запускают iptables. Переадресация IP включена.

Я предполагаю, что маршрутизатор B может получить доступ ко всему в сети маршрутизатора A, потому что он использует интерфейс туннеля, а не интерфейс локальной сети.

На сервере (маршрутизатор A) нет маршрута для моей сети назначения. Каким должен быть шлюз по умолчанию? Адрес P-t-P маршрутизатора B?

Извините, если все это не имеет смысла!

Конфигурация сервера:

local 113.192.xx,xx
port 1194
proto tcp
dev tun
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
push "route 10.104.17.0 255.255.255.0"
route 192.168.5.0 255.255.255.0
client-config-dir client-configs
keepalive 5 30
comp-lzo
persist-key
persist-tun
status 1194.log
verb 5
daemon

Клиент:

client
dev tun
proto tcp
remote 113.192.xx.xx 1194
resolv-retry infinite
nobind
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
persist-key
persist-tun
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/remote.crt
key /etc/openvpn/keys/remote.key
comp-lzo
verb 3

Когда туннель открыт, таблица маршрутизации выглядит так:

Клиент:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.8.0.5        0.0.0.0         255.255.255.255 UH        0 0          0 tun0
10.8.0.1        10.8.0.5        255.255.255.255 UGH       0 0          0 tun0
192.168.5.0     0.0.0.0         255.255.255.0   U         0 0          0 eth2
10.104.17.0     10.8.0.5        255.255.255.0   UG        0 0          0 tun0
0.0.0.0         192.168.5.2     0.0.0.0         UG        0 0          0 eth2

Сервер:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.8.0.2        0.0.0.0         255.255.255.255 UH        0 0          0 tun0
113.192.xx.xx   0.0.0.0         255.255.255.248 U         0 0          0 eth1
192.168.5.0     10.8.0.2        255.255.255.0   UG        0 0          0 tun0
10.8.0.0        10.8.0.2        255.255.255.0   UG        0 0          0 tun0
10.104.17.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         113.192.40.41   0.0.0.0         UG        0 0          0 eth1

Как вы, наверное, догадались, сеть за VPN-сервером - это сеть 10.104.17.0/24, а сеть за клиентом - это сеть 192.168.5.0/24.

Вам не хватает того, что сервер OpenVPN не знает, какой клиент имеет доступ к сети 192.168.5.0/24. Вы должны сказать это с помощью iroute в соответствующей конфигурации клиента. Предполагая, что CN сертификата клиента - «router-b.example.com», добавьте это в /etc/openvpn/client-configs/router-b.example.com:

iroute 192.168.5.0 255.255.255.0