Как ограничить доступ к сервисам на публичном VPS?
Всем доброго дня!
Вопрос по поводу того как огородить от внешней сети сервис на публичном VPS.
Для этого я так понял, что надо использовать VPN. И я решил использовать OpenVPN. И не получается понять принцип, помогите пожалуйста разобраться.
На сервере он будет настроен, и частная сеть будет условно 10.1.0.0/16. /dev/tun0 будет иметь адрес 10.1.0.1, а клиенты получать по dhcp в этой сети (получается, надо ещё настроить на dhcpcd на прослушивание /dev/tun0 и выдачу адресов в частной сети?). Внутри сервера настрою маршрутизацию, чтобы клиенты из 10.1.0.0/16 не отправлялись в публичный порт /dev/enp3s0.
После этого, я могу на сервисах ставить бинд частного адреса 10.1.0.1, и только частные клиенты смогут получить доступ.
Простите за такие глупые вопросы, я правда сам не смог до конца разобраться, и интересуют ваши лучшие практики, если вы не против с ними поделиться на данную тему. А также какие теоретические моменты мне изучить, чтобы в этой теме стать лучше.
Ниже Drno прекрасно ответил.
Несколько замечаний.
10.1.0.0/16 Вам не надо Вам /24 хватит.
DHCP сервер настраивать не надо, он есть внутри OpenVPN и обслуживает только клиентов OpenVPN.
Маршрутизацию настраивать не надо в Вашем случае, ни какого маскарадинга, форварда пакетов и прочего.
Может быть проблема с биндингом сервиса, если сервис стартует раньше OpenVPN, т.е. /dev/tun ещё нет, но это легко решается.
в целом мысль верная.
в конфиге опенВПН сервера ставится dhcp, он так уже есть "внутри", ничего сверх ненужно
отключи(не включай) masquerade на интерфейсе WAN на сервере - и клиенты в инет не выйдут, тут придумывать тоже особо нечего
но при таких настройках у тебя на клиентах сломается инет - чтобы этого не произошло НЕ ставь в конфиге сервера и клиентах настройку "шлюз по умолчанию"
Так же сделай просто пуш нужной подсети в впн - push-route
тогда только эта подсеть пойдет в впн, а остальное будет работать как обычно.
Ну и еще момент - в РФ опенВПН может запросто блочиться, учитывай это. Лично я перешёл на p2p сети, ну либо SSTP на крайняк \ CiscoAnyConnec(ocserv для убунты)