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

Маршрутизация через OpenVPN


0

1

Здравствуйте. Решил для собственного развития поэкспериментировать с OpenVPN. Нагуглил мануалы, статьи в инете, прочитал, поднял. Клиент соединяется, сервер пингуется, а дальше все. Не могу пропинговать ни один из узлов локальной сети, к которой подключен сервер. Немного конфигов:

Клиент:

remote *.*.*.* 1194
client
dev tun
ping 10
comp-lzo
proto udp
ca ca.crt
cert client1.crt
key client1.key

Сервер:

;local a.b.c.d
port 1194
proto udp
;dev tap
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh1024.pem
server 192.168.1.0 255.255.255.0
;server-bridge 10.8.0.1 255.255.255.0 10.8.0.2 10.8.0.10
push "route 192.168.0.0 255.255.255.0"
keepalive 10 120
comp-lzo
max-clients 100
persist-key
persist-tun
status openvpn-status.log
verb 3

iptables:

root@debian:/etc/openvpn# iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -p udp -m udp --dport 1194 -j ACCEPT
-A FORWARD -s 192.168.1.0/24 -d 192.168.0.0/24 -i tun+ -o eth0 -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -d 192.168.1.0/24 -i eth0 -o tun+ -j ACCEPT
-A OUTPUT -p udp -m udp --sport 1194 -j ACCEPT

Ну и как же без этого:

root@debian:/etc/openvpn# cat /proc/sys/net/ipv4/ip_forward
1

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

Активные маршруты:
Сетевой адрес           Маска сети      Адрес шлюза       Интерфейс  Метрика
          0.0.0.0          0.0.0.0   00.000.000.000  00.000.000.000       1
   00.000.000.000  255.255.255.255        127.0.0.1       127.0.0.1       50
   00.255.255.255  255.255.255.255   00.000.000.000  00.000.000.000       50
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
      192.168.0.0    255.255.255.0      192.168.1.5     192.168.1.6       1
      192.168.1.1  255.255.255.255      192.168.1.5     192.168.1.6       1
      192.168.1.4  255.255.255.252      192.168.1.6     192.168.1.6       30
      192.168.1.6  255.255.255.255        127.0.0.1       127.0.0.1       30
    192.168.1.255  255.255.255.255      192.168.1.6     192.168.1.6       30
   000.000.000.00  255.255.255.255   00.000.000.000  00.000.000.000       1
        224.0.0.0        240.0.0.0      192.168.1.6     192.168.1.6       30
        224.0.0.0        240.0.0.0   00.000.000.000  00.000.000.000       1
  255.255.255.255  255.255.255.255   00.000.000.000  00.000.000.000       1
  255.255.255.255  255.255.255.255      192.168.1.6               2       1
  255.255.255.255  255.255.255.255      192.168.1.6           20003       1
  255.255.255.255  255.255.255.255      192.168.1.6     192.168.1.6       1
Основной шлюз:      00.000.000.000

Вот еще трасировка со стороны клиента:

tracert 192.168.0.1

Трассировка маршрута к 192.168.0.1 с максимальным числом прыжков 30

  1   634 ms   639 ms   679 ms  192.168.1.1
  2     *        *        *     Превышен интервал ожидания для запроса.
  3     *        *        *     Превышен интервал ожидания для запроса.
  4     *        *        *     Превышен интервал ожидания для запроса.
  5     *        *        *     Превышен интервал ожидания для запроса.

Как заставить клиента видеть локальную сеть 192.168.0.0?


Ответ на: комментарий от post-factum
route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.2     *               255.255.255.255 UH    0      0        0 tun0
192.168.1.0     192.168.1.2     255.255.255.0   UG    0      0        0 tun0
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
default         Alpha.Home      0.0.0.0         UG    0      0        0 eth0

У меня тут возникла мысль, что не хватает маршрута от 192.168.0.1 (Модем) к 192.168.1.6 (Клиент). В локальной сети маршрутизатором по умолчанию служит модем. И он не знает, куда слать ответ из сети 192.168.1.6. Может необходимо на нем самом прописать маршрут в сеть 192.168.1.0 (маршрутизатор поставить 192.168.0.10 (ВПН-сервер))?

massive
() автор топика
Ответ на: комментарий от morse

Поменял в конфиге на сервере, клиенте, а также в iptables:

iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -p udp -m udp --dport 1194 -j ACCEPT
-A FORWARD -s 192.168.1.0/24 -d 192.168.0.0/24 -i tap+ -o eth0 -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -d 192.168.1.0/24 -i eth0 -o tap+ -j ACCEPT
-A OUTPUT -p udp -m udp --dport 1194 -j ACCEPT

Таблица маршрутизации немного изменилась:

Клиент

      192.168.0.0    255.255.255.0      192.168.1.1     192.168.1.2       1
      192.168.1.0    255.255.255.0      192.168.1.2     192.168.1.2       30
      192.168.1.2  255.255.255.255        127.0.0.1       127.0.0.1       30

Сервер:

route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     0      0        0 tap0
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
default         Alpha.Home      0.0.0.0         UG    0      0        0 eth0

Ситуация прежняя. Пинги на сервер идут, а в локалку нет.

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

У клиента таблица выглядит неплохо. Можно попробовать сделать что-то типа

route add default tap0
И проверить. Если пинги так и не пойдут — проблема точно на стороне сервера. Может он как-то не до конца понял что с tap0 надо на eth0 транслировать.

morse ★★★★★
()

Сервер, на котором поднимаете впн, является гейтом для локальной сети?

at ★★
()
Ответ на: комментарий от morse

Хе хе. Машина не доступна из интернета. Буду ждать вечера. Попробую дома из локалки достучаться или ребут сделаю.

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

Т.е. машины в локалке отвечают на запросы впеновского клиента через свой гейт (как я понял модем), который про впн ничего не знает.

Насколько знаю есть три варианта решения.

1. (Обычно для теста) На машине в локалке прописать доп маршрут.

2. Добавить маршрут на гейт.

3. Использовать snat

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

Прописал маршрут на модеме в Static Route и все заработало:

Destination: 192.168.1.0
Subnet Mask: 255.255.255.0
Gateway: 192.168.0.10
Еще обнаружил что модем D-Link DSL-2500U сбрасывает соединение на подключение к вэбморде, которое устанавливается через VPN. Обходится разрешением зайти на вэбморду через WAN, но тогда открывается модем всему миру. Бида.

Всем спасибо за помощь.

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

Еще обнаружил что модем D-Link DSL-2500U сбрасывает соединение на подключение к вэбморде, которое устанавливается через VPN. Обходится разрешением зайти на вэбморду через WAN, но тогда открывается модем всему миру. Бида.

Обходися snat-ом для модема.

P.S. У меня DSL-2640U ;)

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

P.S. У меня в Access Control можно задать адреса с которых возможно управление.

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

Покажешь какими правилами ты SNAT делал?

massive
() автор топика
Ответ на: комментарий от no-dashi

В общем случае, нельзя так делать.

Я знаю. Но для теста сойдет.
Еще без этого не получается играть в тоталу по сети почему-то.

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