Мне нужна помощь в понимании того, как разрешить клиентам VPN доступ к серверам, находящимся во «внутренней сети».
У меня есть один выделенный/физический сервер в ovh (если это имеет значение) с 4 дополнительными ip. Установленная ОС - proxmox, и у меня есть два сетевых устройства (их тип - 'Linux bridge'). Одному назначен публичный 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 осуществлять ping/ssh/и т. д. в отношении vpn-клиентов, находящихся в сети 10.8.0.0/24.
Я понял, что мне нужно заставить сервер OpenVPN передавать некоторые маршруты клиентам (чтобы клиенты знали о другой сети);
Я почти уверен, что мне нужно что-то сделать на самом хосте proxmox (потому что он является шлюзом для сети 172.20.0.0/14), и я полагаю, что мне также нужно добавить некоторые правила iptable на самом сервере openvpn, чтобы пересылать/маскировать трафик между сетями, но я не могу понять, какие именно правила.
Итак, мой вопрос: что мне нужно сделать, чтобы разрешить клиентам VPN доступ к виртуальным серверам при такой настройке?
решение1
Если на хосте 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
и добавьте команды в декларации сетевых интерфейсов, чтобы они сохранялись при перезагрузках.