Почему мои клиенты OpenVPN не могут получать доступ к компьютерам в той же локальной сети, что и сервер OpenVPN?

5

Я настроил OpenVPN на моем сервере Linux и клиенте Windows в соответствии с инструкциями здесь . Мой клиент может получить доступ к серверу, но не может пройти дальше по локальной сети.

Мой сервер - 10.23.29.64/24, моя подсеть OpenVPN - 10.23.30.0/24, а мой клиент - 10.0.0.71/24, поэтому перекрытия нет.

Мой файл конфигурации сервера:

port 53
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 10.23.30.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.23.29.0 255.255.255.0"
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3

Мой клиентский конфиг

client
dev tun
proto udp
remote HOSTNAME_REMOVED 53
resolv-retry infinite    
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
comp-lzo
verb 3

При подключении мой клиент получает 10.23.30.6/30 и добавляет 4 маршрута:

   10.23.29.0    255.255.255.0       10.23.30.5      10.23.30.6       1
   10.23.30.1  255.255.255.255       10.23.30.5      10.23.30.6       1
   10.23.30.4  255.255.255.252       10.23.30.6      10.23.30.6       30
   10.23.30.6  255.255.255.255        127.0.0.1       127.0.0.1       30

Мой сервер получает 10.23.30.1/32 (возможно, это проблема ?)

Мой клиент может пропинговать сервер 10.23.30.1 и 10.23.29.64, но дальше этого не может. Что еще мне нужно сделать, чтобы этот клиент получил доступ к остальной части моей локальной сети?

ОБНОВИТЬ:

Я добавил статический маршрут к маршрутизатору, чтобы таблица маршрутизации выглядела следующим образом

{admin}=>ip rtlist
Label             Destination          Gateway  Interface     Mtc Admin  Oper
                 10.0.0.138/32       127.0.0.1  loop          0   UP     [UP]
                 10.0.0.255/32       127.0.0.1  loop          0   UP     [UP]
               10.23.29.254/32       127.0.0.1  loop          0   UP     [UP]
               10.23.29.255/32       127.0.0.1  loop          0   UP     [UP]
             87.115.131.206/32       127.0.0.1  loop          0   UP     [UP]
                  127.0.0.1/32       127.0.0.1  loop          0   UP     [UP]
            255.255.255.255/32       127.0.0.1  loop          0   UP     [UP]
            195.166.128.189/32  87.115.131.206  Internet      0   UP     UP
                212.159.6.9/32                  Internet      10  UP     UP
               212.159.6.10/32                  Internet      10  UP     UP
                   10.0.0.0/24      10.0.0.138  LocalNetwork  0   UP     [UP]
                 10.23.29.0/24    10.23.29.254  LocalNetwork  0   UP     [UP]
                 10.23.30.0/24     10.23.29.10  LocalNetwork  0   UP     [UP]
                    0.0.0.0/0                   Internet      10  UP     UP

но когда я сделал трассировку с 10.23.29.10 по 10.23.30.1, я получил:

traceroute to 10.23.30.1 (10.23.30.1), 30 hops max, 60 byte packets
 1  dsldevice.lan (10.23.29.254)  2073.983 ms  2073.481 ms  74.545 ms
 2  * * *

и все звезды, пока он не сдался. Это заставляет меня поверить, что пакеты traceroute не перенаправляются на 10.23.29.10, как в таблице маршрутизации сказано, что они должны быть.

Grezzo
источник
@caffinatedmonkey Эта ссылка очень полезна.
Греццо

Ответы:

6

Я наконец узнал, в чем проблема. Я использую опцию «маршрутизации» OpenVPN, которая создает новую подсеть для всех соединений OpenVPN. Моему клиенту был назначен IP-адрес из этой подсети, как и мой сервер, чтобы они могли общаться друг с другом через эту сеть. С включенной переадресацией IPv4 на моем сервере я также мог отправлять пакеты в свою локальную сеть и, очевидно, мог общаться с сервером через его IP-адрес в локальной сети.

Когда клиент пытался общаться с другими компьютерами в моей локальной сети, пакеты от моего клиента доходили до моих хостов локальной сети (я не проверял это, но я почти уверен, что они были), но адрес источника этих пакетов был адрес из сети OpenVPN. Хосты локальной сети знали, что это не было в их локальной сети, и единственное, что они знали, чтобы сделать в этом случае, было отправить их на шлюз по умолчанию, который был моим маршрутизатором. Я сомневаюсь, что с ними что-то произошло, поскольку отправка пакета на частный IP-диапазон в Интернет бессмысленна.

Решение состоит в том, чтобы добавить статический маршрут ко всем узлам локальной сети или использовать опцию OpenVPN «мост» вместо «маршрутизация». Я еще не сделал этого, но уверен, что это путь.

Grezzo
источник
2
Я не скорость Стив Гибсон очень высоко (см theregister.co.uk/2001/06/25/steve_gibson_really_is_off ), но эта статья объясняет это довольно хорошо: grc.com/vpn/routing.htm
Grezzo
... также см. ссылку, которую @caffinatedmonkey разместил в комментарии к моему вопросу
Grezzo
2

Я не думаю, что вам нужно добавлять статический маршрут ко всем узлам локальной сети. Вы можете просто добавить статический маршрут в ваш шлюз в этой локальной сети, указав все адреса openvpn-сети на сервере openvpn "адрес lan-ip".

Anony
источник
Я слышал это, но я пытался, и это не сработало. Возможно, вы сможете объяснить, почему? Я обновил свой оригинальный вопрос, чтобы включить детали того, что я попробовал
Grezzo
1

Та же проблема с моим конфигом, но исправлена:

Поскольку вы используете настройки OpenVPN Road warrior, пакеты отмечаются как маршрутизированные, но с NAT. Вам следует настроить параметры исходящего NAT для преобразования любых исходных портов с виртуальных IP-адресов OpenVPN на интерфейсе LAN в любые порты назначения с адресом WAN NAT.

В pfSense вы должны отключить правило «Автоматический исходящий NAT» в правило «Ручной исходящий NAT» и просто добавить новое правило для внутренней сети OpenVPN.

AsynKc
источник
Можете ли вы объяснить, как добавить правило вручную?
Чарли
0

Была такая же проблема здесь (с помощью этого руководства по настройке: https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-ubuntu-14-04 )

Ответ Анони о статическом маршруте был ключевым. На настройке dd-wrt -> расширенная маршрутизация:

статическая настройка маршрута dd-wrt

где

  • назначение: интерфейс openvpn tun0
  • Шлюз: сервер, на котором работает openvpn (lan ip)

Это помогло мне!

Том Рэтклифф
источник