Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Объединение двух локалок средствами OpenVPN  (Прочитано 1071 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн HOBATOP

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Друзья, подскажите, пожалуйста.. сломал уже всю голову.
Есть необходимость объединить две локальные сети LAN1 и LAN2. Собрал стенд как на картинке.. Настроил OpenVPN - все соединяется, LAN2 видит LAN1, а вот обратно (LAN1 не видит LAN2)нет, т.е. впн-сервер не видит сети своих клиентов.

конфиги следующие:
Server:
/home/root # route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth2.2
10.8.0.0        10.8.0.2        255.255.255.0   UG    0      0        0 tun1
10.8.0.0        0.0.0.0         255.255.255.0   U     0      0        0 tun1
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
192.168.1.0     10.8.0.2        255.255.255.0   UG    0      0        0 tun1
192.168.3.0     0.0.0.0         255.255.255.0   U     0      0        0 br0
/home/root # iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N bfplimit
-N logdrop
-N upnp
-N vpnlist
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A logdrop -m state --state INVALID,NEW -j LOG --log-prefix "DROP " --log-tcp-op                                                                                                                                                             tions --log-ip-options
-A logdrop -j DROP
-A vpnlist -i tun1 -j ACCEPT
/home/root # ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
^C
--- 192.168.1.1 ping statistics ---
4 packets transmitted, 0 packets received, 100% packet loss




CLIENT:
/home/root # route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth2.2
10.8.0.0        0.0.0.0         255.255.255.0   U     0      0        0 tun0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 br0
192.168.3.0     10.8.0.1        255.255.255.0   UG    0      0        0 tun0
/home/root # iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N bfplimit
-N upnp
-N vpnlist
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i br0 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state INVALID -j DROP
-A INPUT -i tun0 -j ACCEPT
-A INPUT -p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A INPUT -p icmp -m icmp ! --icmp-type 8 -j ACCEPT
-A FORWARD -i br0 -o br0 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m state --state INVALID -j DROP
-A FORWARD -i br0 -j ACCEPT
-A FORWARD -i tun0 -j ACCEPT
-A FORWARD -m conntrack --ctstate DNAT -j ACCEPT

Если запустить пинг с server - ping 192.168.1.1 и мониторить tun1 tcpdump-om - пакеты видны, т.е.  маршрутизация правильно. Но в то же время tcpdump на клиенте молчит..
Очень сильно подозреваю, что пакеты режет iptables на client'e, но не могу понять, где зарыта собака..

помоите, пожалуйста.

UPD: каритинки не дает прикрепить к сообщению, пришлось нарисовать пдф

Пользователь добавил сообщение 18 Января 2017, 16:08:24:
вот, пдф
« Последнее редактирование: 18 Января 2017, 16:08:25 от HOBATOP »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: Объединение двух локалок средствами OpenVPN
« Ответ #1 : 18 Января 2017, 16:50:25 »
Забыли сказать, что это ни фига не Ubuntu
А также показать конфиги участников OVPN и ВСЕ правила netfilter (iptables-save было бы информативней)

Оффлайн HOBATOP

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Объединение двух локалок средствами OpenVPN
« Ответ #2 : 18 Января 2017, 17:02:55 »
Забыли сказать, что это ни фига не Ubuntu
А также показать конфиги участников OVPN и ВСЕ правила netfilter (iptables-save было бы информативней)

совершенно верно! Это Два роутера с прошивкой от Падавана..

Server:
/home/root # cat /etc/openvpn/server/server.conf
proto udp
port 11940
dev tun1
topology subnet
server 10.8.0.0 255.255.255.0
client-config-dir ccd
route 192.168.1.0 255.255.255.0 10.8.0.2
push "route 192.168.3.0 255.255.255.0"
auth SHA1
cipher BF-CBC
comp-lzo adaptive
push "comp-lzo adaptive"
ca /etc/storage/openvpn/server/ca.crt
dh /etc/storage/openvpn/server/dh1024.pem
cert /etc/storage/openvpn/server/server.crt
key /etc/storage/openvpn/server/server.key
persist-key
persist-tun
user nobody
group nogroup
script-security 2
tmp-dir /tmp/openvpn
writepid /var/run/openvpn_svr.pid
client-connect ovpns.script
client-disconnect ovpns.script

### User params:
max-clients 10
client-to-client
keepalive 10 120
nice 3
verb 0
mute 10
route 10.8.0.0 255.255.255.0
/home/root # iptables-save
# Generated by iptables-save v1.4.16.3 on Fri Jan 13 14:40:21 2017
*nat
:PREROUTING ACCEPT [2972:238729]
:INPUT ACCEPT [2354:134413]
:OUTPUT ACCEPT [15:1851]
:POSTROUTING ACCEPT [57:3647]
:upnp - [0:0]
:upnp-post - [0:0]
:vserver - [0:0]
-A PREROUTING -d 10.0.0.3/32 -j vserver
-A POSTROUTING -s 192.168.3.0/24 -o eth2.2 -j SNAT --to-source 10.0.0.3
-A POSTROUTING -s 10.8.0.0/24 -o eth2.2 -j SNAT --to-source 10.0.0.3
-A POSTROUTING -s 192.168.3.0/24 -d 192.168.3.0/24 -o br0 -j SNAT --to-source 192.168.3.1
COMMIT
# Completed on Fri Jan 13 14:40:21 2017
# Generated by iptables-save v1.4.16.3 on Fri Jan 13 14:40:21 2017
*filter
:INPUT ACCEPT [2967:185708]
:FORWARD ACCEPT [131:6648]
:OUTPUT ACCEPT [12035:3540498]
:bfplimit - [0:0]
:logdrop - [0:0]
:upnp - [0:0]
:vpnlist - [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A logdrop -m state --state INVALID,NEW -j LOG --log-prefix "DROP " --log-tcp-options --log-ip-options
-A logdrop -j DROP
-A vpnlist -i tun1 -j ACCEPT
COMMIT
# Completed on Fri Jan 13 14:40:21 2017
/home/root #






Client:
/home/root # iptables-save
# Generated by iptables-save v1.4.16.3 on Wed Jan 18 19:57:36 2017
*nat
:PREROUTING ACCEPT [3124:193904]
:INPUT ACCEPT [2627:152752]
:OUTPUT ACCEPT [17:1945]
:POSTROUTING ACCEPT [186:9722]
:upnp - [0:0]
:upnp-post - [0:0]
:vserver - [0:0]
-A PREROUTING -d 10.0.0.1/32 -j vserver
-A POSTROUTING -s 192.168.1.0/24 -o eth2.2 -j SNAT --to-source 10.0.0.1
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.1.0/24 -o br0 -j SNAT --to-source 192.168.1.1
COMMIT
# Completed on Wed Jan 18 19:57:36 2017
# Generated by iptables-save v1.4.16.3 on Wed Jan 18 19:57:36 2017
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [9116:1425976]
:bfplimit - [0:0]
:upnp - [0:0]
:vpnlist - [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i br0 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state INVALID -j DROP
-A INPUT -i tun0 -j ACCEPT
-A INPUT -p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A INPUT -p icmp -m icmp ! --icmp-type 8 -j ACCEPT
-A FORWARD -i br0 -o br0 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m state --state INVALID -j DROP
-A FORWARD -i br0 -j ACCEPT
-A FORWARD -i tun0 -j ACCEPT
-A FORWARD -m conntrack --ctstate DNAT -j ACCEPT
COMMIT
# Completed on Wed Jan 18 19:57:36 2017
/home/root # cat /etc/openvpn/client/
client.conf   ovpnc.script
/home/root # cat /etc/openvpn/client/client.conf
client
proto udp
remote 10.0.0.3 11940
resolv-retry infinite
nobind
dev tun0
ca /etc/storage/openvpn/client/ca.crt
cert /etc/storage/openvpn/client/client.crt
key /etc/storage/openvpn/client/client.key
auth SHA1
cipher BF-CBC
comp-lzo adaptive
persist-key
script-security 2
writepid /var/run/openvpn_cli.pid
up ovpnc.script
down ovpnc.script

### User params:
ns-cert-type server
nice 0
verb 5
mute 10
/home/root #

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: Объединение двух локалок средствами OpenVPN
« Ответ #3 : 18 Января 2017, 17:21:07 »
route 192.168.1.0 255.255.255.0 10.8.0.2
Думаю здесь загвоздка.
Убирайте последнее поле.
И, на всякий случай, покажите интерфейсы tunX на обоих участниках

Оффлайн HOBATOP

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Объединение двух локалок средствами OpenVPN
« Ответ #4 : 19 Января 2017, 11:09:01 »
route 192.168.1.0 255.255.255.0 10.8.0.2
Думаю здесь загвоздка.
Убирайте последнее поле.
И, на всякий случай, покажите интерфейсы tunX на обоих участниках

не помогает..
Server:
/home/root # cat /etc/openvpn/server/server.conf
proto udp
port 11940
dev tun1
topology subnet
server 10.8.0.0 255.255.255.0
client-config-dir ccd
push "route 192.168.3.0 255.255.255.0"
auth SHA1
cipher BF-CBC
comp-lzo adaptive
push "comp-lzo adaptive"
ca /etc/storage/openvpn/server/ca.crt
dh /etc/storage/openvpn/server/dh1024.pem
cert /etc/storage/openvpn/server/server.crt
key /etc/storage/openvpn/server/server.key
persist-key
persist-tun
user nobody
group nogroup
script-security 2
tmp-dir /tmp/openvpn
writepid /var/run/openvpn_svr.pid
client-connect ovpns.script
client-disconnect ovpns.script

### User params:
max-clients 10
client-to-client
keepalive 10 120
nice 3
verb 0
mute 10
route 10.8.0.0 255.255.255.0
/home/root # route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        *               255.255.255.0   U     0      0        0 eth2.2
10.8.0.0        10.8.0.2        255.255.255.0   UG    0      0        0 tun1
10.8.0.0        *               255.255.255.0   U     0      0        0 tun1
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
192.168.3.0     *               255.255.255.0   U     0      0        0 br0
/home/root # ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
ping: sendto: Network is unreachable
/home/root # ifconfig tun1
tun1      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.0.1  P-t-P:10.8.0.1  Mask:255.255.255.0
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)




Client:
/home/root # ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.0.2  P-t-P:10.8.0.2  Mask:255.255.255.0
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 B)  TX bytes:1932 (1.8 KiB)


Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: Объединение двух локалок средствами OpenVPN
« Ответ #5 : 19 Января 2017, 11:12:51 »
я разве сказал убрать весь параметр?

Пользователь добавил сообщение 19 Января 2017, 11:26:13:
кстати, тут начинаются какие-то расхождения со стандартной реализацией OVPN.
Для режим tun, должны создаваться интерфейсы с маской 30, а у Вас же интерфейсы с маской 24

Кстати, раз у Вас в системе существует директория ccd, то и параметр route лучше перенести туда (только он уже будет iroute) с привязкой к клиенту.
« Последнее редактирование: 19 Января 2017, 11:26:13 от fisher74 »

Оффлайн HOBATOP

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Объединение двух локалок средствами OpenVPN
« Ответ #6 : 19 Января 2017, 11:47:23 »
имеете ввиду, что праивльнее будет так:
/home/root # route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        *               255.255.255.0   U     0      0        0 eth2.2
10.8.0.0        10.8.0.2        255.255.255.0   UG    0      0        0 tun1
10.8.0.0        *               255.255.255.0   U     0      0        0 tun1
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
192.168.1.0     10.8.0.2        255.255.255.0   UG    0      0        0 tun1
192.168.3.0     *               255.255.255.0   U     0      0        0 br0
/home/root # route del -net 192.168.1.0/24
/home/root # route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        *               255.255.255.0   U     0      0        0 eth2.2
10.8.0.0        10.8.0.2        255.255.255.0   UG    0      0        0 tun1
10.8.0.0        *               255.255.255.0   U     0      0        0 tun1
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
192.168.3.0     *               255.255.255.0   U     0      0        0 br0
/home/root # route add -net 192.168.1.0/25 dev tun1
/home/root # route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        *               255.255.255.0   U     0      0        0 eth2.2
10.8.0.0        10.8.0.2        255.255.255.0   UG    0      0        0 tun1
10.8.0.0        *               255.255.255.0   U     0      0        0 tun1
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
192.168.1.0     *               255.255.255.128 U     0      0        0 tun1
192.168.3.0     *               255.255.255.0   U     0      0        0 br0


картина не меняется..
/home/root # ping 192.168.1.1 &
/home/root # PING 192.168.1.1 (192.168.1.1): 56 data bytes

/home/root # tcpdump -i tun1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun1, link-type RAW (Raw IP), capture size 65535 bytes
14:01:41.796024 IP 10.8.0.1 > 192.168.1.1: ICMP echo request, id 48642, seq 16, length 64
14:01:42.796196 IP 10.8.0.1 > 192.168.1.1: ICMP echo request, id 48642, seq 17, length 64
14:01:43.796360 IP 10.8.0.1 > 192.168.1.1: ICMP echo request, id 48642, seq 18, length 64
14:01:44.796526 IP 10.8.0.1 > 192.168.1.1: ICMP echo request, id 48642, seq 19, length 64
^C
4 packets captured
4 packets received by filter
0 packets dropped by kernel


подскажите пожалуйста, tcpdump работает до iptables на отправку или после?

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: Объединение двух локалок средствами OpenVPN
« Ответ #7 : 19 Января 2017, 12:07:20 »
На интерфейс, предшествующий tun, трафик попадает зашифрованным, т.е. там его ловить бессмысленно.
Далее он передается OVPN. Если OVPN его по какой-то причине дропает, то Вы его уже нигде не увидите.

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

ЗЫ А зачем таблица маршрутизации аж три раза?
ЗЗЫ Кстати, откройте для себя теги code и spoiler

Пользователь добавил сообщение 19 Января 2017, 12:28:59:
А, да, сорри. Пропустил параметр topology subnet, потому и маска на интерфейсах такая.
Тогда однозначно iroute 192.168.1.0 255.255.255.0 в ccd-файл клиента
А в основном конфиге указываем route 192.168.1.0 255.255.255.0 10.8.0.2
На счёт последнего не уверен, так как сам это нигде не использовал, а когда кому-то решали подобный вопрос не отложилось что именно помогло - наличие этого параметра, или отсутствие )))
« Последнее редактирование: 19 Января 2017, 12:28:59 от fisher74 »

Оффлайн HOBATOP

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Объединение двух локалок средствами OpenVPN
« Ответ #8 : 19 Января 2017, 12:34:42 »
На интерфейс, предшествующий tun, трафик попадает зашифрованным, т.е. там его ловить бессмысленно.
так я же ловлю его как раз на интерфейсе tun*.. на обоих сторонах.. на сервере ловится, а на клиенте нет.. т.е. хочется локализировать узкое место (уходят ли пакеты с сервера)

я вижу только результаты Ваших действий, а как Вы этого добились у меня не телепатится, почему-то... видимо хрустальный шарик перегрелся.
ЗЫ А зачем таблица маршрутизации аж три раза?
ЗЗЫ Кстати, откройте для себя теги code и spoiler
добился ручками поправив таблицу маршрутизации
route
route del
route add

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: Объединение двух локалок средствами OpenVPN
« Ответ #9 : 19 Января 2017, 12:43:00 »
так это Вы системе маршруты разложили, а серверу OVPN до них, как до лампочки - у него своя внутренняя.маршрутизация.

Пользователь добавил сообщение 19 Января 2017, 13:02:45:
Перепроверил. Нужно обязательно и в ccd-файле клиента и в основном конфиге. Не забываем рестартануть сервис
« Последнее редактирование: 19 Января 2017, 13:02:45 от fisher74 »

Оффлайн HOBATOP

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Объединение двух локалок средствами OpenVPN
« Ответ #10 : 19 Января 2017, 13:38:39 »
там уже есть такие записи..
/home/root # cat /etc/openvpn/server/server.conf
proto udp
port 11940
dev tun1
topology subnet
server 10.8.0.0 255.255.255.0
client-config-dir ccd
route 192.168.1.0 255.255.255.0 10.8.0.2
push "route 192.168.3.0 255.255.255.0"
auth SHA1
cipher BF-CBC
comp-lzo adaptive
push "comp-lzo adaptive"
ca /etc/storage/openvpn/server/ca.crt
dh /etc/storage/openvpn/server/dh1024.pem
cert /etc/storage/openvpn/server/server.crt
key /etc/storage/openvpn/server/server.key
persist-key
persist-tun
user nobody
group nogroup
script-security 2
tmp-dir /tmp/openvpn
writepid /var/run/openvpn_svr.pid
client-connect ovpns.script
client-disconnect ovpns.script

### User params:
max-clients 10
client-to-client
keepalive 10 120
nice 3
verb 0
mute 10
route 10.8.0.0 255.255.255.0
/home/root #
/home/root # cat /etc/openvpn/server/ccd/client
[b]ifconfig-push 10.8.0.2 255.255.255.0
iroute 192.168.1.0 255.255.255.0[/b]
/home/root #

Вообще, для меня открытие, что OVPN не использует системную маршрутизацию.. разве не ее он меняет используя роуты в конфигах?

рэбус :(

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: Объединение двух локалок средствами OpenVPN
« Ответ #11 : 19 Января 2017, 14:32:55 »
Меняет. Но некоторые параметры нужны для системы, а некоторые для ядра самого OVPN. Да-да, у него внутри своя кухня, в том числе интерфейсы и маршрутизация. Просто для нас она как тот суслик в поле.

 

Страница сгенерирована за 0.045 секунд. Запросов: 25.