В настоящее время у меня есть один VPS с сервером OpenVPN. Моя идея, лежащая в основе этой настройки, заключается в том, что во время разработки я буду подключаться к серверу через VPN, что позволит мне получить доступ к портам на сервере, которые заблокированы iptables / ufw для внешнего мира.
OpenVPN настроен таким образом, что маскируется и перенаправляет весь трафик. Это хорошо работает для любого внешнего веб-сайта. Однако, когда я пытаюсь получить доступ к какой-либо службе / порту, работающему на самом сервере, запрос не кажется замаскированным, и сервер не рассматривает его как запрос, сделанный от клиента интерфейса tun0 и, следовательно, на основе правил UFW устанавливает запрос заблокирован.
У меня нет большого опыта в настройке VPN или пользовательской маршрутизации, поэтому мой вопрос: какая конфигурация мне не хватает, чтобы запросы, сделанные от клиента OpenVPN, были разрешены?
В моем before.rules
:
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
Ошибка при доступе к сервису на самом сервере (от подключенного клиента):
[UFW BLOCK] IN=eth0 OUT= MAC=[...] SRC=[MY-ACTUAL-CLIENT-IP] DST=[SERVER-IP] LEN=60 TOS=0x08 PREC=0x00 TTL=55 ID=46182 DF PROTO=TCP SPT=47449 DPT=9332 WINDOW=14600 RES=0x00 SYN URGP=0
Похоже, вы блокируете входящее VPN-соединение. Весь клиентский VPN-трафик должен проходить через VPN-соединение.
Маскарадинг уже должен быть пойман существующим правилом для всех исходящих соединений на eth0. Вам не нужно добавлять это правило.
У VPN-подключений будет другое устройство. Возможно, вам потребуется добавить правила принятия для этого устройства. Название устройства зависит от брандмауэра и того, как они создают виртуальный интерфейс, который они используют.