LINUX.ORG.RU
ФорумAdmin

OpenVPN: из сети за клиентом недоступна сеть за сервером

 


0

1

Доброго времени суток. Запустил сервер OpenVPN на Scientific Linux 6.1, и двух клиентов на Windows Server 2008 R2. Как за сервером, так и за клиентами есть локальные сети. Проблема в следующем: как клиенты, так и сервер видят все сети, но из сетей за клиентами не видно сеть за сервером, при этом сети за клиентами друг друга видят. На сервере eth0 смотрит в интернет, eth1 во внутреннюю сеть (192.168.0.0/24); клиенты также являются шлюзами для своих сетей (192.168.36.0/24 и 192.168.100.0/24)

server.conf

port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key  
dh /etc/openvpn/dh1024.pem
server 10.10.10.0 255.255.255.0
ifconfig-pool-persist ipp.txt

push "route 192.168.0.0 255.255.255.0"
push "route 192.168.36.0 255.255.255.0"
push "route 192.168.100.0 255.255.255.0"

client-config-dir /etc/openvpn/ccd

route 10.10.10.0 255.255.255.0
route 192.168.0.0 255.255.255.0
route 192.168.36.0 255.255.255.0
route 192.168.100.0 255.255.255.0

client-to-client
keepalive 10 120
persist-key
persist-tun

client.conf

client
dev tun
dev-node OpenVPN
proto udp
remote x.x.x.x 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key

route на сервере

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.10.10.2      0.0.0.0         255.255.255.255 UH    0      0        0 tun0
x.x.x.x         0.0.0.0         255.255.255.252 U     0      0        0 eth0
192.168.100.0   10.10.10.2      255.255.255.0   UG    0      0        0 tun0
192.168.36.0    10.10.10.2      255.255.255.0   UG    0      0        0 tun0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
10.10.10.0      10.10.10.2      255.255.255.0   UG    0      0        0 tun0
0.0.0.0         x.x.x.x         0.0.0.0         UG    0      0        0 eth0 

route на клиенте (192.168.100.1)

Активные маршруты:
Сетевой адрес           Маска сети      Адрес шлюза       Интерфейс  Метрика
          0.0.0.0          0.0.0.0    10.10.189.254     10.10.189.16     20
       10.10.10.0    255.255.255.0      10.10.10.13      10.10.10.14     30
      10.10.10.12  255.255.255.252         On-link       10.10.10.14    286
      10.10.10.14  255.255.255.255         On-link       10.10.10.14    286
      10.10.10.15  255.255.255.255         On-link       10.10.10.14    286
      10.10.189.0    255.255.255.0         On-link      10.10.189.16    276
     10.10.189.16  255.255.255.255         On-link      10.10.189.16    276
    10.10.189.255  255.255.255.255         On-link      10.10.189.16    276
        127.0.0.0        255.0.0.0         On-link         127.0.0.1    306
        127.0.0.1  255.255.255.255         On-link         127.0.0.1    306
  127.255.255.255  255.255.255.255         On-link         127.0.0.1    306
      192.168.0.0    255.255.255.0      10.10.10.13      10.10.10.14     30
     192.168.36.0    255.255.255.0      10.10.10.13      10.10.10.14     30
    192.168.100.0    255.255.255.0         On-link     192.168.100.1    276
    192.168.100.1  255.255.255.255         On-link     192.168.100.1    276
  192.168.100.255  255.255.255.255         On-link     192.168.100.1    276
        224.0.0.0        240.0.0.0         On-link         127.0.0.1    306
        224.0.0.0        240.0.0.0         On-link       10.10.10.14    286
        224.0.0.0        240.0.0.0         On-link     192.168.100.1    276
        224.0.0.0        240.0.0.0         On-link      10.10.189.16    276
  255.255.255.255  255.255.255.255         On-link         127.0.0.1    306
  255.255.255.255  255.255.255.255         On-link       10.10.10.14    286
  255.255.255.255  255.255.255.255         On-link     192.168.100.1    276
  255.255.255.255  255.255.255.255         On-link      10.10.189.16    276
===========================================================================

Соответствующие ccd прописаны и срабатывают. Вопрос: почему из сетей 192.168.36.0/24 и 192.168.100.0/24 недоступна сеть 192.168.0.0/24? Что я делаю не так? Буду благодарен за любую помощь.

P.S. OpenVPN настраиваю впервые...


man openvpn

потом жмешь «/», набираешь по буквам i-r-o-i-t-e и нажимаешь Enter.

Читаешь. Думаешь. Добавляешь. PROFIT!!!

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

Просто опция «client-to-client» в сочетании с указанной проблемой как раз и приводит к тому, что клиенты между собой снюхиваются в обход iptables, а до «за-серверной» сети их не пускаейт iptables.

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


«Сеть за сервером» в качестве default gateway имеет «сервер»?


Да


Правила файрвола (iptables FORWARD)?


iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -o tun0 -j ACCEPT

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

Правила файрвола - полностью. Желательно в виде iptables-save. Мы тут уже 10500 раз видели что казалось бы «не имеющие касательства» правила мешают на самом деле.

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

Просто опция «client-to-client» в сочетании с указанной проблемой как раз и приводит к тому, что клиенты между собой снюхиваются в обход iptables, а до «за-серверной» сети их не пускаейт iptables.

Дело в том, что клиенты сеть за сервером видят, а вот сети за клиентами доступа в сеть за сервером не имеют.

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

Правила файрвола - полностью. Желательно в виде iptables-save. Мы тут уже 10500 раз видели что казалось бы «не имеющие касательства» правила мешают на самом деле.

*nat
:PREROUTING ACCEPT [304:53576]
:POSTROUTING ACCEPT [3:260]
:OUTPUT ACCEPT [16:1064]
-A PREROUTING -d 2.2.2.2/32 -p tcp -m tcp --dport 2222 -j DNAT --to-destination 192.168.0.2:3389 
-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128 
-A POSTROUTING -d 192.168.0.2/32 -p tcp -m tcp --dport 3389 -j SNAT --to-source 192.168.0.1 
-A POSTROUTING -o eth0 -j MASQUERADE 
-A OUTPUT -d 2.2.2.2/32 -p tcp -m tcp --dport 2222 -j DNAT --to-destination 192.168.0.2:3389 
COMMIT
*filter
:INPUT ACCEPT [4:391]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [10:1298]
-A INPUT -i lo -j ACCEPT 
-A INPUT -i eth1 -j ACCEPT 
-A INPUT ! -i eth1 -p udp -m udp --dport 67 -j REJECT --reject-with icmp-port-unreachable 
-A INPUT ! -i eth1 -p udp -m udp --dport 53 -j REJECT --reject-with icmp-port-unreachable 
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT 
-A INPUT ! -i eth1 -p tcp -m tcp --dport 0:1023 -j DROP 
-A INPUT ! -i eth1 -p udp -m udp --dport 0:1023 -j DROP 
-A INPUT -i tun0 -j ACCEPT 
-A FORWARD -d 192.168.0.2/32 -i 192.168.0.1 -j ACCEPT 
-A FORWARD -d 192.168.0.0/16 -i eth1 -j DROP 
-A FORWARD -s 192.168.0.0/16 -i eth1 -j ACCEPT 
-A FORWARD -d 192.168.0.0/16 -i eth0 -j ACCEPT 
-A FORWARD -i tun0 -j ACCEPT 
-A FORWARD -o tun0 -j ACCEPT 
COMMIT
Caine
() автор топика
Ответ на: комментарий от Caine

Дело в том, что клиенты сеть за сервером видят, а вот сети за клиентами доступа в сеть за сервером не имеют.

А «сети за клиентами» видят какие из адресов?

Делаю ставку, что они

1. видят адрес туннеля со стороны своего гейта (10.10.10.14 и 10.10.10.8)

но

2. не видят адрес сервера на туннеле (10.10.10.1) 3. не видят адрес сервера со стороные локалки (192.168.0.1)

Верно?

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


А «сети за клиентами» видят какие из адресов?

Делаю ставку, что они

1. видят адрес туннеля со стороны своего гейта (10.10.10.14 и 10.10.10.8)

но

2. не видят адрес сервера на туннеле (10.10.10.1)
3. не видят адрес сервера со стороные локалки (192.168.0.1)

Верно?



Да

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

Ну что тут сказать? Осталось включить маршрутизацию на 2008-х, а также на них отключить/настроить файрвол :-)

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

Осталось включить маршрутизацию на 2008-х

А прописанного маршрута недостаточно?

      192.168.0.0    255.255.255.0      10.10.10.13      10.10.10.14     30

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

Оно конечно лишнее то лишнее, но на таблицу маршрутизации вследствие некоторого сочетания факторов влияния не оказывает.

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

А прописанного маршрута недостаточно?

Недостаточно. «Включить маршрутизацию» и «прописать маршрут» это два разных действия.

«Включить маршрутизацию» означает «разрешить прохождение транзитных пакетов» - то есть пакетов не сгенерированных на этом компе и не предназанченых этому компу. Это аналог { echo 1 >/proc/sys/net/ipv4/ip_forward }

А «прописать маршрут» - значит «указать с какой стороны лежит какая подсеть».

no-dashi ★★★★★
()

P.S. OpenVPN настраиваю впервые...

как то все сложно получается для первого раза: две карты, IP для клиентов и сервер не определены.

У меня первый раз получилось, когда я зафиксировал IP адреса сервера и клиентов в конфигах.

Тогда получается все просто: 3 отдельных сетки + одна виртуальная VPN сетка объединяющая по одной машине в каждой сети.

Где IP сервера и клиентов в VPN сетки у вас определяются, не понятно или они не фиксированы или не все конфиги приведены?

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

В ccd прописано iroute 192.168.100.0 255.255.255.0

Тут не понял, ccd - это директория, в ней должны лежать файлики с именами клиентов (имена берутся из сертификатов), а уже в этих файлах по одной строчке iroute с соответствующей клиентской сетью. Имена клиентов можно подсмотреть в ipp.txt или в статус-логе.

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

Где IP сервера и клиентов в VPN сетки у вас определяются

Мультиклиентский сервер, сам все раздаст, не чего там определять.

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

Тут не понял, ccd - это директория, в ней должны лежать файлики с именами клиентов (имена берутся из сертификатов), а уже в этих файлах по одной строчке iroute с соответствующей клиентской сетью.

Так оно все и сделано, проблема где-то в другом.

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

«Включить маршрутизацию» означает «разрешить прохождение транзитных пакетов» - то есть пакетов не сгенерированных на этом компе и не предназанченых этому компу. Это аналог { echo 1 >/proc/sys/net/ipv4/ip_forward }

Не помогло.

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

Ну извини, проблемы _виндов_ и маршрутизации на них я решаю только за деньги. Проблема у тебя в маршрутизации и файрволах на виндах.

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

Ну извини, проблемы _виндов_ и маршрутизации на них я решаю только за деньги. Проблема у тебя в маршрутизации и файрволах на виндах.

В любом случае спасибо. Но на стороне сервера у меня по крайней мере все в порядке?

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

tcpdump'ом смотреть на tun0 (или что там), на eth1.

Я бы только push «route 192.168.0.0 255.255.255.0» оставил в конфиге сервера, остальные две, по одной перекрестно добавил в ccd клиентов, заодно проверил работает ли ccd, добавляются ли маршруты на клиентских машинах в соседние сети.

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

не знаю как он «все раздаст» если ему не указаны IP клиентов.

Приведенная явно, неработающего вида таблица route:

а именно:

192.168.100.0 10.10.10.2 255.255.255.0 UG 0 0 0 tun0
192.168.36.0 10.10.10.2 255.255.255.0 UG 0 0 0 tun0

точно соответсвует настройкам server.conf

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

Где IP сервера и клиентов в VPN сетки у вас определяются, не понятно или они не фиксированы или не все конфиги приведены?

IP сервера 10.10.10.1, IP клиентам выдает DHCP, что из конфигов и видно

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

IP сервера 10.10.10.1, IP клиентам выдает DHCP, что из конфигов и видно

Это сложности для первого раза, хотя не важно, как выдается IP клиентам. Важно, что бы VPN сервер в своей таблице маршрутов имел их в качестве GW к сетям ...36.0/24 и ...100.0/24, как и наоборот. Так, что правьте конфиги сервера указывая IP адреса клиентов явно.

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

Важно, что бы VPN сервер в своей таблице маршрутов имел их в качестве GW к сетям ...36.0/24 и ...100.0/24

То что имеет в своей таблице, достаточно. Все соседние сети он крутит интерфейс, в такой конфигурации tun-интерфайс один. А дальше iroute, - это внутренние дела OpenVPN, он разберется кому что.

-A FORWARD -d 192.168.0.0/16 -i eth1 -j DROP , а это еще что, так eth1 - это внутренняя или внешняя.

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