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

Открытие подсети LAN за сервером OpenVPN

Я установил сервер OpenVPN в своей рабочей сети, и я могу получить доступ к серверу с удаленного компьютера через vpn. Однако я не могу понять, как получить доступ к локальной сети за сервером.

Схема сети:

----------   -------   --------   ----------------  
|Internet|-->|Modem|-->|Switch|-->|OpenVPN Server|  
----------   -------   --------   ----------------

Сервер - это сервер ubuntu. Я включил переадресацию IP на сервере.

Наш шлюз / модем - это Linksys WAG54G2 и подключается к машине WinXP.

Кто-нибудь знает, как открыть подсеть, в которой находится сервер OpenVPN ???

Эта установка специфична для CentOS, но ваша установка, вероятно, будет аналогичной. Конфигурация также предназначена для версии 2.0, в серии 2.1 используется другой формат файла конфигурации. Также предполагается, что для этого вы используете два Linux-сервера, а не просто присоединяетесь к конечной точке Windows XP. - поэтому вам нужно будет внести изменения в используемую вами установку Windows XP. В этом примере адреса были выбраны случайным образом, поэтому вот как они назначаются:

  • 1.1.1.1 - это публичный адрес вашего рабочего сервера, обращенный к Интернету.
  • 2.2.2.2 - это публичный адрес вашего домашнего сервера, выходящий в Интернет.
  • 192.168.1.0/24 - это сеть на работе
  • 192.168.1.1 - это внутренний адрес вашего компьютера, на котором установлено 1.1.1.1
  • 192.168.1.254 будет конечной точкой VPN машины с 1.1.1.1
  • 192.168.2.0/24 - это сеть у вас дома
  • 192.168.2.1 - это внутренний адрес вашего компьютера с 2.2.2.2.
  • 192.168.2.254 будет конечной точкой VPN на машине с 2.2.2.2

и

  • и 1.1.1.1, и 2.2.2.2 принимают трафик через ваш брандмауэр на порт 1194 только друг от друга. Нет смысла принимать трафик откуда-то еще, и это снизит вероятность атак.

Секретный статический ключ

Вам будет проще всего использовать статический ключ. Прочтите здесь инструкции, как его сделать. Вот короткая версия, сделанная из 1.1.1.1 с правами root:

openvpn --genkey --secret > /etc/openvpn/secret.key
chmod 600 /etc/openvpn/secret.key
scp /etc/openvpn/static.key root@2.2.2.2:/etc/openvpn/secret.key
ssh root@2.2.2.2
chmod 600 /etc/openvpn/secret.key
exit

Пример локальной (рабочей) конфигурации:

Вы бы поместили этот текст в /etc/openvpn/home-vpn на вашем рабочем компьютере (1.1.1.1), предполагая, что OpenVPN читает содержимое /etc/openvpn при запуске.

#daemon home-vpn 
local 1.1.1.1 
remote 2.2.2.2 
proto tcp-server 
port 1194 
dev tun0 
ifconfig 192.168.1.254 192.168.2.254 
route 192.168.2.0 255.255.255.0 192.168.1.254 6
route-delay 5
verb 3 
nice 1
secret /etc/openvpn/secret.key
comp-lzo
passtos

Пример конфигурации удаленного доступа (домашняя сеть):

Вы бы поместили этот текст в /etc/openvpn/work-vpn на вашем домашнем компьютере (2.2.2.2), предполагая, что OpenVPN читает содержимое /etc/openvpn при запуске.

#daemon work-vpn 
local 2.2.2.2 
remote 1.1.1.1 
proto tcp-server 
port 1194 
dev tun0 
ifconfig 192.168.2.254 192.168.1.254
route 192.168.1.0 255.255.255.0 192.168.2.254 6
route-delay 5
verb 3 
nice 1
secret /etc/openvpn/secret.key
comp-lzo
passtos

Комментарий

В приведенных здесь примерах служба openvpn работает с хорошим приоритетом 1; если вы этого не хотите, удалите всю строку, которая гласит nice 1 чтобы он работал как любая другая программа. Сжатие включено через comp-lzo на обоих концах, и passtos позволяет битам пакета TOS выжить через VPN. Оба они также могут быть отключены, если хотите. Некоторые заметят, что стоимость маршрута 6 кажется немного завышенной, и это правда, она может быть намного ниже (4-5 в зависимости от настройки), но 6 обеспечивает достаточный «охват» для подсетей и дополнительной маршрутизации.

И, наконец, поскольку я публикую это в 1:31 утра, я уверен, что что-то забыл или что-то пометил неправильно, поэтому, пожалуйста, не стесняйтесь просмотреть настройки и перепроверить их.

Полный ответ.

  • см. подробные записи Эйвери Пэйн, там все.

Короткий ответ.

  • Удаленному клиенту необходимо направлять трафик в вашу локальную сеть через VPN-соединение.
  • Хосты LAN должны направлять трафик для частной сети VPN на сервер OpenVPN.

Средний ответ.

Удаленный клиент

Когда ваш клиент OpenVPN подключается к серверу OpenVPN, он теперь будет иметь как минимум 2 IP-адреса.

  • Клиент «IP-адрес A» используется для подключения к Интернету и серверу OpenVPN.
  • «IP-адрес B», установленный клиентом OpenVPN

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

Лучшее решение этой дилеммы - настроить маршрутизацию клиентом OpenVPN после того, как он успешно установит VPN-туннель. Взгляните на функцию push для конфигурации сервера OpenVPN. Например:

нажимаем "маршрут LAN-IP SUBNET"

(если ваш удаленный клиент - это Windows, вам может потребоваться добавить что-то вроде приведенного ниже в его конфигурацию клиента)

маршрут-метод exe

Комбинация вышеперечисленного должна получать трафик от вашего удаленного клиента через VPN к узлам локальной сети, но теперь вам нужно, чтобы узлы локальной сети знали, куда отправлять ответы.

Хосты LAN

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

  • на узле LAN установите маршрут для подсети «IP Address B» к шлюзу через ваш OpenVPN Server.
  • Вы можете соединить вашу локальную сеть и сеть openvpn.
  • Добавьте машины в вашей локальной сети к vpn.