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

Как разрешить vpn-клиентам доступ к LAN-серверам

Мне нужна помощь в понимании того, как разрешить vpn-клиентам доступ к серверам, находящимся в «интрасети».

У меня есть один выделенный / физический сервер на ovh (если это имеет значение) с 4 дополнительными IP-адресами. Установленная ОС - proxmox, и у меня есть два сетевых устройства (их тип - «мост Linux»). Одному назначен публичный IP-адрес сервера (vmbr0), другому (vmbr1) назначен IP-адрес 172.20.0.1 с 255.252.0.0 в качестве сетевой маски.

Я создал несколько виртуальных машин, которым назначен только vmbr1. Я могу с радостью пинговать между этими машинами. Я также получаю доступ в Интернет с этих машин, как если бы они находились за моим домашним маршрутизатором. Если это важно, на 172.20.0.2 у меня есть DHCP-сервер, а на 172.20.0.3 и 172.20.0.4 у меня есть два DNS-сервера.

Я создал еще одну виртуальную машину, которой назначены как vmbr0, так и vmbr1. Я настроил один из дополнительных общедоступных IP-адресов на vmbr0 и могу использовать его по ssh. Я также установил openvpn и настроил его так, чтобы клиенты получали доступ в Интернет через сервер vpn. Клиенты vpn получают IP-адреса из сети 10.8.0.0/24.

Что я хочу сделать сейчас, так это разрешить всем серверам с 172.20.0.0/14 пинговать / ssh / и т. Д. В клиенты vpn, которые находятся в сети 10.8.0.0/24.

Я понял, что мне нужно заставить сервер openvpn проталкивать некоторые маршруты к клиентам (чтобы клиенты знали о другой сети);

Я почти уверен, что мне нужно что-то сделать на самом хосте proxmox (потому что есть шлюз для сети 172.20.0.0/14), и я считаю, что мне также нужно добавить некоторые правила iptable на самом сервере openvpn, чтобы пересылать / маскировать трафик между сетями, но я не могу точно понять, какие правила.

Итак, мой вопрос: что мне нужно сделать, чтобы позволить клиентам vpn получить доступ к виртуальным серверам с учетом этой настройки?

Если у вас нет брандмауэра на хосте OpenVPN, он по умолчанию разрешает трафик, поэтому вы можете игнорировать это.

У клиентов должны быть отправлены маршруты, чтобы гарантировать, что трафик, предназначенный для внутренней подсети, маршрутизируется через VPN. Это может быть маршрут по умолчанию (при котором ВСЕ трафик будет отправляться через VPN от клиентов) или конкретный маршрут для вашей внутренней подсети. Вы определили, что можете нажать это в конфигурации VPN (при условии, что вы используете аутентификацию на основе сертификатов).

Вам необходимо включить переадресацию IP на хосте OpenVPN. Использовать sysctl установить значение net.ipv4.conf.all.forwarding в 1. Добавить файл в /etc/sysctl.d чтобы это сохранялось при перезапусках.

Локальным хостам также требуются маршруты, чтобы они знали, как получить доступ к подсети OpenVPN. Вы могли либо:

  • Используйте NAT на хосте OpenVPN, чтобы перенаправленные пакеты приходили с его внутреннего IP-адреса. Это скрывает существование подсети 10.8.0.0/24 и, следовательно, устраняет требование о том, чтобы любые другие устройства знали об этом, но означает, что весь трафик от всех клиентов VPN, похоже, исходит от одного хоста.

  • Настройте маршруты, чтобы трафик, предназначенный для 10.8.0.0/24, направлялся на хост OpenVPN. Их можно добавить на каждую виртуальную машину или на хост-машину. Использовать route tool и добавьте команды в объявления сетевого интерфейса, чтобы гарантировать, что они сохранятся при перезагрузке.