Как включить доступ к LAN для клиентов OpenVPN

Вопрос или проблема

У меня есть сервер с 2 реальными NIC и 1 виртуальным NIC (tun0), созданным OpenVPN.

eth0 — это LAN — IP 192.168.2.1
eth1 — это Интернет — IP — публичный интернет IP
tun0 создан OpenVPN

Мне нужно, чтобы клиенты, подключающиеся к VPN-серверу через eth1, также получили доступ к сети eth0, т.е. смогли подключиться к 192.168.2.21.

Ранее это работало, пока я не перезагрузил сервер, и информация о маршрутизации не сбросилась :/ Я настраивал это несколько лет назад и забыл, как я это сделал.

Таблица маршрутизации сейчас выглядит так:

Таблица маршрутизации IP ядра
Назначение     Шлюз         Маска подсети         Флаги Метрика Ссылка Использование Интерфейс
default         публичный шлюз       0.0.0.0         UG    0      0        0 eth1
публичный ip       *               255.255.255.0   U     0      0        0 eth1
192.168.2.0     *               255.255.255.0   U     0      0        0 eth0
192.168.8.0     192.168.8.2     255.255.255.0   UG    0      0        0 tun0
192.168.8.2     *               255.255.255.255 UH    0      0        0 tun0

Когда я запускаю OpenVPN, он пытается добавить маршрут

Вт Окт 11 19:29:58 2016 /sbin/ip route add 192.168.2.0/24 via 192.168.8.2
RTNETLINK отвечает: Файл существует
Вт Окт 11 19:29:58 2016 ОШИБКА: команда добавления маршрута Linux завершилась с ошибкой: внешняя программа завершила работу с кодом ошибки: 2

Тем не менее, это, похоже, невозможно, потому что он уже существует. Когда я удаляю этот маршрут, OpenVPN успешно добавляет его, но сервер больше не может достичь сети 192.168.2.0/24.

Как я могу это исправить?

ИСПРАВЛЕНИЕ: да, у меня включена пересылка как IPv4, так и IPv6.

Вам нужно установить ip_forward в sysctl и строку принятия в таблице FORWARD в iptables (которая часто по умолчанию является ACCEPT).

http://www.ducea.com/2006/08/01/how-to-enable-ip-forwarding-in-linux/

Сначала необходимые маршруты:

  • Клиенты VPN нуждаются в маршруте к 192.168.2.0/24 через ваш VPN-шлюз (предположительно по адресу 192.168.8.1 внутри виртуальной сети)
  • Устройства в 192.168.2.0/24 нуждаются в маршруте к 192.168.8.0/24 — поскольку ваш VPN-сервер, похоже, находится на шлюзе по умолчанию, дополнительная настройка не требуется.

Теперь конфигурация. Специфика зависит от топологии (net30/p2p или подсеть), но в целом это выглядит так:

топология net30    
сервер 192.168.8.0 255.255.255.0

push "route 192.168.2.0 255.255.255.0"

Я пропустил все несущественные (но тем не менее обязательные) параметры. Обратите внимание, что route только передается клиентам. Он не должен быть установлен на сервере.

Поскольку клиент получает все необходимые настройки через push, никакая специальная настройка не требуется.

Ответ или решение

Чтобы предоставить клиентам OpenVPN доступ к локальной сети (LAN), такой как 192.168.2.0/24, с VPN-сервера, необходимо правильно настроить маршрутизацию и разрешения как на сервере, так и на клиентских устройствах. Здесь приведены шаги и рекомендации для достижения этой цели:

1. Включение IP-прослушивания

Убедитесь, что у вас включено IP-прослушивание на сервере. Это можно сделать, меняя параметры в конфигурации sysctl. Для этого выполните следующие команды:

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

2. Настройка маршрутизации

Для успешного доступа к сети 192.168.2.0/24 с клиентских устройств необходимо, чтобы клиенты получали корректные маршруты при подключении к VPN:

  • На сервере OpenVPN:

    В файле конфигурации OpenVPN (обычно /etc/openvpn/server.conf) добавьте следующую строку:

    push "route 192.168.2.0 255.255.255.0"

    Это позволит серверу "прокидывать" маршрут в сеть 192.168.2.0 к клиентам OpenVPN.

3. Настройка iptables

Проверьте и настройте правила iptables, чтобы разрешить маршрутизацию между tun0 и eth0. Важно настроить цепочку FORWARD:

iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT

С помощью этих правил вы разрешаете передавать пакеты между интерфейсами tun0 и eth0.

4. Проверка маршрутов

Проверьте таблицу маршрутов, чтобы убедиться, что она настроена правильно. Выполните команду:

ip route

Убедитесь, что у вас есть маршрут для 192.168.2.0/24, через ваш VPN-шлюз (например, 192.168.8.1).

5. Проверка клиентских настроек

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

6. Устранение неполадок

Если возникнут проблемы, проверьте следующие моменты:

  • Логирование: Просмотрите логи OpenVPN для выявления ошибок в процессе подключения.
  • Проверка сетевых конфигураций: Убедитесь, что все IP-адреса и подсети корректны.
  • Firewall: Убедитесь, что другие правила в iptables не блокируют трафик между интерфейсами.

Заключение

Следуя приведённым шагам, вы сможете восстановить доступ клиентов OpenVPN к локальной сети. Если возникнут трудности, стоит обратиться к документации OpenVPN или сообществу поддержки для более детальной помощи. Благодаря правильной конфигурации и разрешениям ваше соединение станет безопасным и эффективно работающим.


Я постарался сделать текст подробным и полезным, но если у вас есть конкретные аспекты, которые вы бы хотели дополнить или уточнить, сообщите мне об этом!

Оцените материал
Добавить комментарий

Капча загружается...