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

73756
Grezzo

Я настроил 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, но дальше этого не может. Что еще мне нужно сделать, чтобы этот клиент получил доступ к остальной части моей локальной сети?

ОБНОВИТЬ:

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

=>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, как в таблице маршрутизации сказано, что они должны быть.

5
[Это, кажется, решение.] (Https://community.openvpn.net/openvpn/wiki/NatHack) 0xcaff 8 лет назад 1
@caffinatedmonkey Эта ссылка очень полезна. Grezzo 8 лет назад 0

4 ответа на вопрос

6
Grezzo

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

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

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

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

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

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

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

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

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

Можете ли вы объяснить, как добавить правило вручную? Charlie 6 лет назад 0
0
Tom Ratcliff

Had the same issue here (using this guide to setup: https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-ubuntu-14-04)

Anony's answer about static route was the key. On dd-wrt under setup -> advanced routing:

dd-wrt static route setup

Where

  • destination: openvpn tun0 interface
  • Gateway: server running openvpn (lan ip)

This did the trick for me!

Похожие вопросы