У меня проблема с туннелем между сайтами. Оба маршрутизатора являются маршрутизаторами на базе 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