Назад | Перейти на главную страницу

Как получить доступ к удаленной сети с помощью OpenVPN?

В настоящее время я пытаюсь настроить OpenVPN для удаленного доступа к сети нашей компании.

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

Сервер настроен на отправку маршрутов на сервер с помощью:

push "route 155.0.0.0 255.255.0.0 10.8.0.1 1"

где 155.0.0.0/16 - это сеть на стороне сервера.

Это не сработало, поэтому я добавил

push "route 155.0.0.68 255.255.255.255 net_gateway 1"

потому что я где-то читал, что может быть проблематично, если все пакеты, включая пакеты на сервер (155.0.0.68), маршрутизируются через туннель, но это все равно не работает. Я не могу пинговать ни один адрес в сети сервера. Даже сам сервер на 155.0.0.68.

Что я делаю не так?

Дополнительная информация: клиент и сервер запускают окна, а OpenVPN работает в режиме tun с протоколом udp. На клиенте и сервере отключены брандмауэры.

Я уже задавал этот вопрос о сетевой инженерии, но мне сказали, что ServerFault будет лучшим местом для решения подобной проблемы.

Требуются маршруты с обеих сторон VPN-туннеля.

Также на сервере должна быть включена IP-маршрутизация. Например, в Windows 7:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"IPEnableRouter"=dword:00000001

Предположим, что следующие IP-адреса и подсети:

  • Подсеть на стороне клиента 192.168.0.0/24
  • Клиентский IP 192.168.0.2
  • Клиентский VPN IP 10.8.0.2
  • Подсеть на стороне сервера 155.0.0.0/16
  • IP-адрес сервера 155.0.0.68
  • IP-адрес сервера VPN 10.8.0.1

Ключи

Создайте набор ключей для сервера и клиентов. Проверьте README в установочном каталоге OpenVPN. ..\OpenVPN\easy-rsa\README.txt для получения инструкций по их созданию.

Конфигурация на стороне сервера

Добавьте следующие строки в файл конфигурации сервера:

port 1194
proto udp
dev tun
topology subnet
server 10.8.0.0 255.255.255.0
client-config-dir C:\\OpenVPN\\config\\ccd
route 192.168.0.0 255.255.255.0 10.8.0.2
ca C:\\OpenVPN\\config\\ca.crt
cert C:\\OpenVPN\\config\\server.crt
key C:\\OpenVPN\\config\\server.key
dh C:\\OpenVPN\\config\\dh1024.pem
keepalive 10 60
comp-lzo
persist-key
persist-tun
status C:\\OpenVPN\\config\\openvpn-status-tun.log 20
log C:\\OpenVPN\\config\\openvpn-tun.log
verb 3

Замените пути на соответствующий установочный каталог.

Добавьте на сервер настраиваемый файл конфигурации клиента:

Создать каталог ccd в том же каталоге, что и файл конфигурации сервера, и там файл конфигурации, названный в честь CN (Распространенное имя) сертификата клиента.

Проверьте сертификат клиента и найдите эту строку (CN=<client_name>):

Subject: C=CH, ST=State, L=City, O=org, OU=unit, CN=client1/name=EasyRSA/emailAddress=root@localhost

В этом примере файл будет называться client1 (без расширения) добавьте в файл следующие строки:

ifconfig-push 10.8.0.2 255.255.255.0
push "route 155.0.0.0 255.255.0.0 10.8.0.1"
iroute 192.168.0.0 255.255.255.0
  • ifconfig-push предоставит статический IP-адрес этому клиенту
  • push "route ..." подталкивает маршрут к подсети на стороне сервера клиенту
  • iroute генерирует внутренний маршрут в OpenVPN в подсеть клиента

Конфигурация на стороне клиента

Добавьте следующие строки в файл конфигурации клиента:

client
dev tun
proto udp
remote 155.0.0.68 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
ca C:\\OpenVPN\\config\\client1.crt
cert C:\\OpenVPN\\config\\client1.crt
key C:\\OpenVPN\\config\\client1.key
remote-cert-tls server

Замените пути на ваш установочный каталог.

Дополнительные маршруты

Эта настройка работает, если сервер, на котором запущен OpenVPN, также является маршрутизатором и установлен как default-gateway на всех клиентах серверной подсети.

Если существует выделенный маршрутизатор, добавьте к нему следующие статические маршруты (или добавьте их на всех клиентах) для доступа к подсети VPN и подсети client1.

Статические маршруты подсети на стороне сервера:

Destination        Gateway             Genmask
192.168.0.0        155.0.0.68          255.255.255.0
10.8.0.0           155.0.0.68          255.255.255.0

Дополнительные подсказки по этой теме см. этот ответ.

Если ваш клиент работает под управлением Windows 7, вам необходимо запускать открытые клиенты vpn с правами администратора, иначе таблицы маршрутизации не будут заполнены, и вы не сможете пинговать хосты в сети сервера.

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

клиент vpn:

route add -net 192.168.0.0/24 gw 10.8.0.1 1 #in this way, the client knows, how to reach the other side.

удаленная сеть (на стороне сервера), если я хочу подключиться к компьютеру на стороне моего сервера vpn:

route add -net 10.0.0/16 gw "192.168.0.100(local lan ip of my vpn server)"` #in this way, the other pc knows, where to route the traffic for the vpn network

Извините, если для команд, но я не использую окна