решение1
Поскольку вы указали, что не можете изменить сервер, вам необходимо использовать NAT. Это потому, что сервер должен знать, куда отправлять ответ, а он знает только о самом VPN-клиенте, вашем локальном сервере. Он не знает о ПК, доступных через VPN-клиент.
На локальном сервере вам необходимо включить NAT на интерфейсе OpenVPN. Это можно сделать с помощью скрипта. Один из возможных хуков — --route-up
. Не забудьте изменить --script-security
соответствующим образом. Команды, которые вам нужно выполнить, — iptables -t nat -A POSTROUTING -o $THE_OPENVPN_INTERFACE -j MASQUERADE
. Поскольку IPTables позволяет всему быть по умолчанию, дальнейшая настройка необязательна. Вероятно, вам также следует добавить --route-pre-down
(или аналогичный) скрипт, чтобы снова удалить правило IPTables.
Маршрутизацию можно включить, отредактировав /etc/sysctl.conf
, net.ipv4.ip_forward
необходимо 1
. echo 1 > /proc/sys/net/ipv4/ip_forward
делает изменение вступающим в силу немедленно. sysctl.conf
предназначено для сохранения после перезагрузок.
На вашем маршрутизаторе вам необходимо настроить статический маршрут к месту назначения (сети, доступной через VPN), где шлюзом будет ваш локальный сервер (клиент VPN). Имейте в виду: поскольку вы находитесь в той же сети, что и шлюз, ваш маршрутизатор может отправлять перенаправления. Вы не сможете изменить это поведение. Ваша ОС должна принимать перенаправления. Но сначала попробуйте без дополнительной настройки.
Возможно, вам следует надежно защитить свой локальный сервер с помощью брандмауэра, поскольку в противном случае злоумышленник, имеющий доступ к VPN-серверу, может получить доступ к вашей локальной сети.