LINUX.ORG.RU
решено ФорумAdmin

OpenVPN: не видит сеть за сервером

 , , не видит сеть за сервером, сервер не шлюз


0

1

Добрый день!

Знаю, вопрос избитый на просторах интернета, но как-то не особо решающийся в моем случае.

Есть дома локалка, смотрящая в инет через роутер (он же шлюз и днс у всех трех компов), в локалке есть сервер (на нем сервер OpenVPN). IP локалки 192.168.13.*/24 IP OpenVPN 172.13.0.*/24

В интернете много разных тем, как заставить ходить пакеты от клиентов OpenVPN до компьютеров локальной сети, где сидит сервер OpenVPN, но львиная доля их (статей) рассматривает случай, когда сервер OpenVPN является шлюзом для всех компов локальнйо сети. В моем же случае - этот сервер вообще никоем образом в маршрутизации не участвует. Наверное, в этом и беда.

Все компы в локалке за сервером OpenVPN - OpenSUSE 12.1 Подключаюсь с работы клиентом OpenVPN на Win7. Локалка клиента имеет IP 10.24.0.*/?

Прочитал, что могут помочь вот эти настройки iptables:

# iptables -A FORWARD -s 192.168.13.0/24 -d 172.13.0.0/24 -j ACCEPT

# iptables -A FORWARD -s 172.13.0.0/24 -d 192.168.13.0/24 -j ACCEPT

Но они не помогли.

Немного о настройках самого OpenVPN.

На сервере в конфиге стоит:

push «route 192.168.13.0 255.255.255.0»

А в ccd клиента есть строки: push «route 192.168.13.0 255.255.255.0» route 192.168.13.0 255.255.255.0

При подключении клиента в логе получается вот что с маршрутами:

Wed Sep 05 08:46:09 2012 us=652000 Successful ARP Flush on interface [31] {8B16FA38-3339-424B-B042-6D8B986A6BE3}

Wed Sep 05 08:46:14 2012 us=114000 TEST ROUTES: 4/4 succeeded len=4 ret=1 a=0 u/d=up

Wed Sep 05 08:46:14 2012 us=114000 C:\WINDOWS\system32\route.exe ADD 172.13.0.0 MASK 255.255.255.0 172.13.0.6

ЋЉ

Wed Sep 05 08:46:14 2012 us=192000 C:\WINDOWS\system32\route.exe ADD 192.168.13.0 MASK 255.255.255.0 172.13.0.6

ЋЉ

Wed Sep 05 08:46:14 2012 us=254000 C:\WINDOWS\system32\route.exe ADD 172.13.0.0 MASK 255.255.255.0 172.13.0.6

‘Ў®© ¤®Ў ў«Ґ­Ёп ¬ аиагв : ќв®в ®ЎкҐЄв 㦥 бгйҐбвўгҐв.

Wed Sep 05 08:46:14 2012 us=316000 C:\WINDOWS\system32\route.exe ADD 192.168.13.0 MASK 255.255.255.0 172.13.0.6

‘Ў®© ¤®Ў ў«Ґ­Ёп ¬ аиагв : ќв®в ®ЎкҐЄв 㦥 бгйҐбвўгҐв.

Таблица маршрутизации на клиенте: IPv4 таблица маршрута

===========================================================================

Активные маршруты:

Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрик

0.0.0.0 0.0.0.0 10.24.8.1 10.24.8.78 4235

0.0.0.0 0.0.0.0 On-link 10.129.56.236 31

127.0.0.0 255.0.0.0 On-link 127.0.0.1 4531

127.0.0.1 255.255.255.255 On-link 127.0.0.1 4531

172.13.0.0 255.255.255.0 172.13.0.6 172.13.0.5 4256

172.13.0.4 255.255.255.252 On-link 172.13.0.5 4511

172.13.0.5 255.255.255.255 On-link 172.13.0.5 4511

172.13.0.7 255.255.255.255 On-link 172.13.0.5 4511

192.168.13.0 255.255.255.0 172.13.0.6 172.13.0.5 4256

224.0.0.0 240.0.0.0 On-link 127.0.0.1 4531

224.0.0.0 240.0.0.0 On-link 169.254.158.55 4502

224.0.0.0 240.0.0.0 On-link 172.13.0.5 4504

224.0.0.0 240.0.0.0 On-link 10.24.8.78 4487

224.0.0.0 240.0.0.0 On-link 10.129.56.236 31

255.255.255.255 255.255.255.255 On-link 127.0.0.1 4531

255.255.255.255 255.255.255.255 On-link 169.254.158.55 4501

255.255.255.255 255.255.255.255 On-link 172.13.0.5 4511

255.255.255.255 255.255.255.255 On-link 10.24.8.78 4486

255.255.255.255 255.255.255.255 On-link 10.129.56.236 286

===========================================================================

(я убрал лишние строки для локальной сети)

На сервере таблица маршрутизации вот такая:

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

default DIOWOnet 0.0.0.0 UG 0 0 0 eth0

loopback * 255.0.0.0 U 0 0 0 lo

link-local * 255.255.0.0 U 0 0 0 eth0

172.13.0.0 172.13.0.2 255.255.255.0 UG 0 0 0 tun0

172.13.0.2 * 255.255.255.255 UH 0 0 0 tun0

192.168.2.0 172.13.0.2 255.255.255.0 UG 0 0 0 tun0

192.168.13.0 * 255.255.255.0 U 0 0 0 eth0

192.168.128.0 172.13.0.2 255.255.255.0 UG 0 0 0 tun0

eth0 - это локалка tun0 - это OpenVPN

iptables на сервере:

sudo /usr/sbin/iptables -L

Chain INPUT (policy ACCEPT)

target prot opt source destination

Chain FORWARD (policy ACCEPT)

target prot opt source destination

ACCEPT all  — 192.168.13.0/24 172.13.0.0/24

ACCEPT all  — 172.13.0.0/24 192.168.13.0/24

Chain OUTPUT (policy ACCEPT)

target prot opt source destination

С клиента сервер пингуется и по 172.13.0.1 (его vpn-адрес), и по 192.168.13.13 (его локальный адрес).

Подскажите, что еще надо настроить в моем случае? (я с iptables наощупь вообще. вернее, читал, но сути не понял :) )

★★★★★

Последнее исправление: bvn13 (всего исправлений: 2)

Ответ на: комментарий от sergv

net.ipv4.ip_forward = 1

:( я, к сожалению, пока настолько неуверен в этих iptables, что не ручусь сходу взять и включить nat. (оно же вообще через iptables включается?) Подскажите, как его включить?

bvn13 ★★★★★
() автор топика

Нарисуй схему, кто где живет, и кто кого должен видеть. Из твоего объяснения и простыней с маршрутами ничего не понятно.

power
()
Ответ на: комментарий от bvn13

Да, nat включается iptables'ом, но возможно он тебе и не нужен и все разрулится строкой с маршрутом в конфиге OpenVPN.

power
()
Ответ на: комментарий от power

Да, nat включается iptables'ом, но возможно он тебе и не нужен и все разрулится строкой с маршрутом в конфиге OpenVPN.

У него засада вот в этом (орфографию сохраняю):

В моем же случае - этот сервер вообще никоем образом в маршрутизации не участвует.

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

sergv
()

РЕШЕНИЕ в виде скрипта

Вот тут () нашел скрипт, переписав который, у меня пошли пинги. Вот уже переписанный скрипт:

#!/bin/sh

IP_LAN="192.168.1.1/24" # моя домашняя сеть
IP_PROVIDER="10.0.0.1/8" # локальная сеть провайдера

# интерфейсы
#IF_EXT="eth1" # сюда подключен Ethernet от провайдера
IF_LAN="eth0" # сюда подключена локальная сеть
#IF_INET="ppp0" # сюда "подключен" интернет
IF_VPN="tun0" # это интерфейс нашего vpn

IPT="iptables"

# cleaning:
$IPT --flush
$IPT -t nat --flush
$IPT -t mangle --flush
$IPT -X

# разрешаем NAT из локальной сети и VPN:
$IPT -t nat -A POSTROUTING -o $IF_LAN -j MASQUERADE
$IPT -t nat -A POSTROUTING -o $IF_VPN -j MASQUERADE

$IPT -A FORWARD -i $IF_VPN -o $IF_LAN -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_VPN -m state --state ESTABLISHED,RELATED -j ACCEPT

bvn13 ★★★★★
() автор топика

Не видит сеть

Я за бан всех кто пишет «не видит» применительно к сети. А как считают остальные аналитики?

anonymous
()
Ответ на: Не видит сеть от anonymous

Я готов перенять Ваш опыт, если Вы поделитесь, какой термин стоит употребить в данном контексте.

bvn13 ★★★★★
() автор топика
22 марта 2013 г.

Не видит потому что:

Пакеты с клиента опенвпн летят от адреса его tun интерфейса, и соответственно ваши хосты ничего об этих адресах не знают (нет правил маршрутизации до них) т.к. хосты ждут пакеты с адреса eth0 клиентавпн. Вот именно поэтому пинги в одну сторону летят , а в другую нет. Пропишите на хостах маршруты до виртуальной ВПН сети и все заработает.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.