В настоящее время я действительно сбит с толку ... и нет, это не нормальное состояние для меня ;-) Моя проблема: я бы установил, работаю с месяца, который позволяет мне подключаться к сетям, чтобы я мог подключиться к каждой машине из другой сети , Теперь, в конце прошлой недели, было необходимо заменить текущее клиентское оборудование (устройство, называемое pogoplug, но измененное установкой Debian) на более новое (zyxel NAS 540). До сих пор NAS в настоящее время владеет своей собственной прошивкой, и моддинг с помощью Debian или другого дистрибутива в настоящее время невозможен, потому что ядро скомпилировано с размером страницы 64 КБ, что нарушает совместимость, которая имеется во многих доступных двоичных файлах для ARM-архива. Но некоторые пользователи сообщества сделали openvpn доступным с необходимыми настройками компиляции.
Настройка сети
Сеть А
В сети A я использую LXC (vmm-h01). Я создал контейнер (app-h01), внутри которого работает сервер openVPN (IP: 192.168.200.204). Настройка между хостом и контейнерами соединена с сетевыми интерфейсами, IP-адреса контейнеров находятся в одной сети, как и другие. Это необходимо, потому что внутри одного контейнера есть сервис широковещательного / многоадресного контента, поэтому он должен находиться в одной сети. Сеть A является сетью 192.168.200.0/24.
На маршрутизаторе (192.168.200.254) установлены следующие правила: Сетевая маска подсети
192.168.201.0 255.255.255.0 192.168.200.204 192.168.254.0 255.255.255.0 192.168.200.204
Сеть Б
В сети B клиент openVPN (IP: 192.168.201.200) работает непосредственно на NAS без каких-либо контейнеров или виртуализации. Сеть A является сетью 192.168.201.0/24.
На роутере (192.168.201.254) установлены следующие правила:
Network Subnetmask Gateway
192.168.200.0 255.255.255.0 192.168.201.200
192.168.254.0 255.255.255.0 192.168.201.200
Проблема, смути меня
Я устанавливаю openvpn на NAS, копирую в него старую настройку и запускаю openvpn. Соединение было установлено и все выглядит нормально. Пингую из сети A хост по сети B, работает! Пингует из сети B хост по сети A, работает! Затем я хочу ssh на хост в сети B, на котором работает клиент openVPN ... сбой! Я могу пинговать хост, но я не могу ssh к нему. Таким образом, я ssh к хосту внутри сети в сети B и ssh оттуда к хосту с клиентом openVPN, и это работает ... и поведение то же самое (= обратное), когда я пробую его из сети B в A ...
Анализ проблемы
Чтобы проанализировать, что не так, я отслеживаю путь от хоста внутри сети A:... к хосту внутри сети B
leonard:~ # tracepath 192.168.201.254
1?: [LOCALHOST] pmtu 8996
1: vmm-h01.fritz.box 0.776ms pmtu 1500
1: app-v01.fritz.box 0.577ms
2: 192.168.254.2 22.156ms
3: 192.168.201.254 26.285ms reached
Resume: pmtu 1500 hops 3 back 62
... на хост с openVPN-клиентом в сети B
leonard:~ # tracepath 192.168.201.200
1?: [LOCALHOST] pmtu 8996
1: vmm-h01.fritz.box 0.753ms pmtu 1500
1: app-v01.fritz.box 0.594ms
2: 192.168.201.200 20.341ms reached
Resume: pmtu 1500 hops 2 back 63
Теперь, путь в порядке до хоста app-v01.fritz.box. Вот разница: на первом пути трассировки пакеты "переходят" через 192.168.254.2, на втором - напрямую переходят на 192.168.201.200. У меня нет никакой идеи, что не так. Я бы понял, ничего не сработало бы, я бы понял, если бы я мог обращаться только к сервисам непосредственно в экземплярах openVPN (из-за неправильной или отсутствующей маршрутизации), но я не понимаю, почему все работы исключали доступ к сервисам в экземплярах openVPN.
Я также пробую это с openVPN непосредственно на vmm-h01, исключая странное поведение маршрутизации /briding из-за настройки LXC, но результат тот же ...
В настоящее время нет активных iptables или чего-то в этом роде, hosts.deny пусты ...
Версия OpenVPN-сервера
OpenVPN 2.3.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Dec 1 2014
library versions: OpenSSL 1.0.1k 8 Jan 2015, LZO 2.08
Originally developed by James Yonan
Copyright (C) 2002-2010 OpenVPN Technologies, Inc. <sales@openvpn.net>
Compile time defines: enable_crypto=yes enable_debug=yes enable_def_auth=yes enable_dependency_tracking=no enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown enable_fast_install=yes enable_fragment=yes enable_http_proxy=yes enable_iproute2=yes enable_libtool_lock=yes enable_lzo=yes enable_lzo_stub=no enable_maintainer_mode=no enable_management=yes enable_multi=yes enable_multihome=yes enable_pam_dlopen=no enable_password_save=yes enable_pedantic=no enable_pf=yes enable_pkcs11=yes enable_plugin_auth_pam=yes enable_plugin_down_root=yes enable_plugins=yes enable_port_share=yes enable_selinux=no enable_server=yes enable_shared=yes enable_shared_with_static_runtimes=no enable_small=no enable_socks=yes enable_ssl=yes enable_static=yes enable_strict=no enable_strict_options=no enable_systemd=yes enable_win32_dll=yes enable_x509_alt_username=yes with_crypto_library=openssl with_gnu_ld=yes with_ifconfig_path=/sbin/ifconfig with_iproute_path=/sbin/ip with_mem_check=no with_plugindir='${prefix}/lib/openvpn' with_route_path=/sbin/route with_sysroot=no
git revision: refs/heads/jessie/b35ad09bfc4a26e7
server.conf
daemon
port 8070
dev tun
proto tcp-server
ifconfig 192.168.254.1 192.168.254.2
secret /etc/openvpn/static.key
script-security 2
up /etc/openvpn/server.up
down /etc/openvpn/server.down
status /var/log/openvpn-status.log
log-append /var/log/openvpn.log
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
user nobody
group nogroup
verb 3
server.up
#!/bin/bash
sysctl -w net/ipv4/conf/eth0/proxy_arp=1
sysctl -w net/ipv4/ip_forward=1
route add -net 192.168.254.0/24 dev tun0
route add -net 192.168.201.0/24 dev tun0
exit 0
server.down
#!/bin/bash
route del -net 192.168.201.0/24 dev tun0
route del -net 192.168.254.0/24 dev tun0
exit 0
Таблица маршрутизации OpenVPN Server
Kernel-IP-Routentabelle
Ziel Router Genmask Flags Metric Ref Use Iface
default 192.168.200.254 0.0.0.0 UG 0 0 0 eth0
192.168.200.0 * 255.255.255.0 U 0 0 0 eth0
192.168.201.0 * 255.255.255.0 U 0 0 0 tun0
192.168.254.0 * 255.255.255.0 U 0 0 0 tun0
192.168.254.2 * 255.255.255.255 UH 0 0 0 tun0
Версия клиента OpenVPN
OpenVPN 2.3.6 armv7l-unknown-linux-gnueabi [SSL (OpenSSL)] [LZO] [EPOLL] [MH] [IPv6] built on Apr 1 2015
library versions: OpenSSL 1.0.1j 15 Oct 2014, LZO 2.09
Originally developed by James Yonan
Copyright (C) 2002-2010 OpenVPN Technologies, Inc. <sales@openvpn.net>
Compile time defines: enable_crypto='yes' enable_crypto_ofb_cfb='yes' enable_debug='yes' enable_def_auth='yes' enable_dlopen='unknown' enable_dlopen_self='unknown' enable_dlopen_self_static='unknown' enable_fast_install='yes' enable_fragment='yes' enable_http_proxy='yes' enable_iproute2='no' enable_libtool_lock='yes' enable_lzo='yes' enable_lzo_stub='no' enable_management='yes' enable_multi='yes' enable_multihome='yes' enable_pam_dlopen='no' enable_password_save='no' enable_pedantic='no' enable_pf='yes' enable_pkcs11='no' enable_plugin_auth_pam='yes' enable_plugin_down_root='yes' enable_plugins='yes' enable_port_share='yes' enable_selinux='no' enable_server='yes' enable_shared='yes' enable_shared_with_static_runtimes='no' enable_small='no' enable_socks='yes' enable_ssl='yes' enable_static='yes' enable_strict='no' enable_strict_options='no' enable_systemd='no' enable_win32_dll='yes' enable_x509_alt_username='no' with_crypto_library='openssl' with_gnu_ld='yes' with_mem_check='no' with_plugindir='$(libdir)/openvpn/plugins' with_sysroot='no'
client.conf
remote <...>
dev tun
proto tcp-client
ifconfig 192.168.254.2 192.168.254.1
secret /etc/openvpn/static.key
script-security 2
up /etc/openvpn/client.up
down /etc/openvpn/client.down
status /var/log/openvpn-status.log
log-append /var/log/openvpn.log
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
user nobody
group nogroup
verb 2
client.up
#!/opt/bin/bash
openvpn --mktun --dev tun0
echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp
echo 1 > /proc/sys/net/ipv4/ip_forward
route add -net 192.168.254.0/24 dev tun0
route add -net 192.168.200.0/24 dev tun0
exit 0
client.down
#!/opt/bin/bash
route del -net 192.168.200.0/24 dev tun0
route del -net 192.168.254.0/24 dev tun0
exit 0
Таблица маршрутизации OpenVPN Client
Destination Gateway Genmask Flags Metric Ref Use Iface
default fritz.box 0.0.0.0 UG 5 0 0 egiga0
192.168.200.0 192.168.254.2 255.255.255.0 UG 0 0 0 tun0
192.168.201.0 * 255.255.255.0 U 0 0 0 egiga0
192.168.254.0 * 255.255.255.0 U 0 0 0 tun0
192.168.254.1 * 255.255.255.255 UH 0 0 0 tun0