Задать вопрос

Как достучаться до машины в VLAN сети за OpenVPN сервером?

На ESXI гипервизоре есть VM-router, которая выполняет роль NAT и OVPN сервера, имеет два интерфейса: eth0 (ip 46.4.120.218, смотрит в интернет) и eth1 (VLAN).
В VLAN есть много виртуалок, которые имеют локальные адреса вида 192.168.182.*/28, и ходят в интернет через NAT.

Посредством OVPN я пытаюсь подключиться к любой из этих локальных виртуалок в VLAN, но ни к одному ip 192.168.182.*/28 пинг с OpenVPN клиента не проходит:
PING 192.168.182.17 (192.168.182.17) 56(84) bytes of data.


Настраивал OpenVPN согласно официальной доке (не затрагивая TLS, пока разбираюсь с основами).

В итоге на VPNServer виртуалке я вижу новый интерфейс tun0 с ip 10.9.8.1, на VPNClient тоже вижу tun0 с ip 10.9.8.2. После запуска OpenVPN на обеих машинах общение идет отлично, пинга по ip 10.9.8.* проходит замечательно.

IPv4 forwaring на OpenVPN server включен.

OpenVPN server routing table
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         46.4.120.193    0.0.0.0         UG    0      0        0 eth0
10.9.8.2        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
46.4.120.192    0.0.0.0         255.255.255.224 U     0      0        0 eth0
192.168.182.16  0.0.0.0         255.255.255.240 U     0      0        0 eth1


OpenVPN client routing table
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         88.198.179.46   0.0.0.0         UG    0      0        0 eth0
10.9.8.1        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
88.198.179.40   0.0.0.0         255.255.255.248 U     0      0        0 eth0


Iptables config на OVPN Server:
# NAT для VLAN
*nat
-A POSTROUTING -s 192.168.0.0/16 -o eth0 -j SNAT --to-source 46.4.120.218
COMMIT

# Проброс портов
*filter
-A FORWARD -s 192.168.182.0/24 -d 88.198.179.41/29 -j ACCEPT
-A FORWARD -d 192.168.182.0/24 -s 88.198.179.41/29 -j ACCEPT
COMMIT


Конфиг tun0 на OVPN Server:
dev tun0
ifconfig 10.9.8.1 10.9.8.2
secret /etc/openvpn/static.key


Конфиг tun0 на OVPN Client:
remote 46.4.120.218
dev tun0
ifconfig 10.9.8.2 10.9.8.1
secret /etc/openvpn/static.key


Возможно проблема в том, что VPN Client не знает, куда ему направлять пакеты 192.168.182.*? Может быть необходимо добавить какой-либо маршрут?

P.S. Конфиг openvpn:
port 1194
proto udp
dev tun

ca ca.crt
cert server.crt
key server.key 
dh dh1024.pem

# ip отличается от tun0, это ок?
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

push "route 192.168.182.0 255.255.255.240"
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
  • Вопрос задан
  • 2442 просмотра
Подписаться 4 Оценить Комментировать
Решения вопроса 1
@mureevms
Для доступе к локальной сети надо включить пересылку трафика между интерфейсами в ядре системы на OpenVPN сервере:
echo "1" > /proc/sys/net/ipv4/ip_forward

И разрешить форвард на фаерволе:
iptables -A FORWARD -s 192.168.182.0/24 -d 10.250.4.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.182.0/24 -s 10.250.4.0/24 -j ACCEPT
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Bessome
@Bessome
Администратор Linux, Windows. 1С программист
интерфейс tun меняй на tap. часть конфига
cat server.conf
port 1194
proto tcp
dev tap
.......
Ответ написан
@Tilk
эникейщик-МегаЛамер
ИМХО:
Общие рекомендации:
- Лучше всё же использовать tun - так получается гибче настройка доступа в подсеть(и) с клиента.
- Сменить порт по умолчанию на какой-либо другой.
- Начать использовать TLS-шифрование как можно быстрей. Там всё просто.

На сервере почти минимальная конфигурация:
dev tun
local х.х.х.х - внешний ип, на котором слушаем
port хххх - порт, на котором слушаем с внешнего интерфейса
proto udp
server 192.168.168.0 255.255.255.0 - виртуальная подсетка, в которой клиенты работают с сервером
push "route 192.168.0.0 255.255.255.0" - реальные сетки за серваком
push "route 192.168.1.0 255.255.255.0"
route 192.168.168.0 255.255.255.252
client-config-dir ccd - автоматическая запись маршрута до клиента.
client-to-client - для доступа напрямую к клиентам. [Эта и предыдущая опции - суть ответ на твой вопрос]
comp-lzo - параметр сжатия трафика
keepalive 10 120
tun-mtu 1500
mssfix 1450 - ограничение посылаемых пакетов от клиентов (только при использовании udp)
verb 3 - для информативности логов.
============
На клиенте:
dev tun
remote х.х.х.х хххх - внешний ип сервера и наш нестандартный порт.
proto udp
comp-lzo
tun-mtu 1450
mssfix
verb 3
=======
Запускаем, смотрим логи.
Больше никаких шаманств. На файрволе должен быть доступен порт, который мы используем.
UPD: Не знаю, как там у пингвинов, а у демонов больше ничего настраивать не нужно (ни фаеров ни маршрутизаций левыми командами) /Навеяно первым ответом и комментариями к нему/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы