Вопрос или проблема
Моя цель — настроить публичный IP для смартфона Android, на котором запущено программное обеспечение “IP Камера”. Интерфейс доступен в локальной сети на (пример) 192.168.0.2:8080, но у него нет публичного IP, так как он также должен работать в сети 3G.
Я знаю, что существуют сервисы, которые предлагают VPN с статическими выделенными адресами; бесплатный, который я нашёл, предлагает только PPTP с IPv6 (не работал).
Остальные предлагают IPv4 по гораздо более высокой стоимости, чем актуальный VPS от Host1Plus с минимальными характеристиками, поэтому я выбрал последнее. По крайней мере, я могу попрактиковаться и/или использовать VPS для других проектов. Я следовал этому руководству.
Сейчас я на этапе, где создал нового пользователя, присвоил статический VPN Адрес в панели администрирования OpenVPN учетной записи и вошел в систему с устройства.
Всё работает до сих пор. Мое Android устройство получает публичный IP VPS при просмотре.
Я могу пинговать приватный VPN IP устройства в SSH терминале VPS.
Каков следующий шаг?
Я попробовал это, но это особо не работает. Я в потерянности на этом этапе. Я никогда не работал с маршрутами или перенаправлением.
Если я сейчас введу публичный IP VPS, я получу форму входа в openVPN, как и раньше. Если я введу [PublicVPSIP]:8080, я получаю ошибку “Сервер недоступен и т. д.”
В конце это должно работать так.
Android (работает какое-то сервис на порту 8080) (VPN IP: 1.2.3.4)
▼
подключается через openVPN к моему VPS
▼
VPS (запускает openVPN Server) (Публичный IP: 123.123.123.123)
▼
Трафик от посетителя на 123.123.123.123:8080 должен быть перенаправлен/переслан на мое устройство Android. (1.2.3.4:8080)
Я решил это. Для других людей с такой же проблемой.
Эта статья помогла мне: Перенаправление TCP порта на другой IP или порт с использованием NAT с помощью Iptables
Кроме того (так как у меня нет идеи, достаточно ли этого из-за атак)
я следовал этому: Как заблокировать все порты, кроме …
Просто чтобы заблокировать все оставшиеся порты, которые могут быть открыты и которые мне не нужны.
Конечно, не забудьте добавить ваш SSH порт в исключение, иначе вы заблокируете себя из SSH терминала.
Хотя я не уверен, достаточно ли этого для реального усиления Вашего VPS против атак и т. д. Поэтому я буду рад дальнейшим предложениям
Ответ или решение
Настройка VPS для перенаправления трафика на устройства с публичного IP может быть несколько сложной, особенно если вы новичок в работе с сетями и маршрутизацией. В данной ситуации, ваша цель — настроить доступ к Android-смартфону, который работает в режиме IP-камеры, через публичный IP-адрес, получаемый вашим VPS. Ваша основная задача — это правильно настроить VPN и использовать механизмы маршрутизации, такие как iptables, чтобы обеспечить нужную переадресацию трафика.
Теория
Перенаправление трафика через VPS включает несколько ключевых понятий: VPN, статическое маршрутизирование и iptables.
-
VPN (Virtual Private Network): Позволяет устройствам безопасно подключаться к удаленной сети через Интернет. Ваша задача — настроить OpenVPN на вашем VPS, что уже было сделано. Это дает вашему Android-смартфону возможность использовать IP-адрес вашего сервера как его внешний адрес.
-
Статическое маршрутизирование: Необходимо для направления трафика, полученного вашим VPS, на соответствующие устройства внутри вашей сети.
-
iptables: Это утилита для настройки правил брандмауэра Linux. Она позволяет контролировать входящие и исходящие сетевые пакеты и, в вашем случае, перенаправлять пакеты с определенного порта на вашем VPS к вашему Android-устройству.
Пример
Первым шагом станет правильная настройка OpenVPN. У вас уже настроено рабочее соединение, которое дает вашему Android-устройству возможность выходить в Интернет под IP вашего VPS. Далее нужно выполнить перенаправление трафика.
Ваша задача — реализовать механизмы NAT (Network Address Translation) и DNAT (Destination NAT) для перенаправления трафика на внутренняя сеть, связанная с вашим Android-устройством с использованием iptables. Предположим, у вас есть следующие данные на руках:
- Публичный IP вашего VPS:
123.123.123.123
- Внутренний VPN IP вашего Android-устройства:
1.2.3.4
- Порт:
8080
Применение
-
Настройка iptables:
Войдите в терминал вашего VPS через SSH и выполните следующую команду для включения NAT:
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 1.2.3.4:8080
Эта команда говорит iptables перенаправлять все входящие TCP-пакеты на порт 8080 вашего VPS на порт 8080 вашего Android-устройства.
-
Разрешение передачи данных:
Убедитесь, что IP-переадресация включена на вашем VPS. Это можно сделать, добавив или отредактировав файл
/etc/sysctl.conf
и добавив/изменив следующую строку:net.ipv4.ip_forward = 1
После чего, примените изменения:
sudo sysctl -p
-
Защита вашего сервера:
Чтобы минимизировать риски безопасности, убедитесь, что у вас настроены строгие правила брандмауэра, которые блокируют все ненужные порты, кроме тех, которые вы используете.
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT sudo iptables -A INPUT -j DROP
Эти команды разрешают входящие подключения только через SSH (порт 22), HTTP (порт 80), HTTPS (порт 443) и на порт 8080 для вашей IP-камеры.
Заключение
Вся вышеописанная конфигурация должна обеспечить нужную функциональность, а именно доступ по публичному IP с вашего VPS к сервису на вашем Android-устройстве. Несмотря на быстрое функционирование данной схемы, безопасность вашего сервера остается приоритетом. Рекомендуется регулярно проверять логи, настраивать дополнительные средства защиты (например, fail2ban), а также использовать сложные пароли и SSH-ключи для входа на VPS. Надеюсь, это руководство поможет вам достичь ваших целей в настройке VPS для перенаправления трафика.