Как передавать данные на сервер без статического IP?
И так, у меня есть домашний сервер, который не имеет статического айпи (за nat'ом провайдера), и дешевый VPS. Получить статический IP в данный момент - не вариант. Провайдер хочет чтобы заключивший с ними договор ЛИЧНО ПРИШЁЛ В ОФИС И В ПИСЬМЕННОМ ВИДЕ ОБЪЯСНИЛ ЗАЧЕМ ЕМУ СТАТИЧЕСКИЙ АЙПИ. Договор заключал не я, возможности подключиться к кому-то другому сейчас нет.
Мне нужно чтобы HTTP-запросы попадающие на VPS обрабатывались домашним сервером, я это реализовал так:
0. На VPS с помощью BaseManager из библиотеки multiprocessing.managers создаётся сервер и Queue очередь в нём.
1. Далее запускается скрипт, который с помощью socket слушает 80-й порт.
2. Он разбирает полученные запрос, проверяя есть ли в заголовках и теле нужные мне данные.
3. Если они есть, эти данные обрабатываются и попадают в Queue очередь. Сервер возвращает соответствующий HTTP-ответ
4. Если их нет, то в очередь ничего не попадает и происходит редирект.
5. Домашний сервер коннектится к серверу, созданному в BaseManager.
6. Получает эту Queue-очередь из объекта и ждёт пока в ней появятся какие-то данные, как только они появляются он работает с ними дальше.
Вроде бы всё круто, но на деле почему-то вся эта лабуда постоянно крашится и более 50% данных исчезают. Есть ли ещё какие-то варианты как можно решить эту проблему иначе?
На сервере с выделенным ip вы настраиваете и запускаете openvpn сервер, на сервере без белого ip настраиваете openvpn клиент и подключаетесь к серверу. И у сервера и у клиента теперь есть маршрутизируемые между собой IP, какие именно, зависит от настроек openvpn.
Дальше вы можете обращаться в любую сторону по этим IP адресам, как будто сервера соединены напрямую кабелем.
Как именно настроить openvpn полно мануалов в сети. И тут не сильно уместно было бы писать ещё один.
Если же будут конкретные вопросы по настройке openvpn, лучше спросите отдельным вопросом.
А если что-то не понятно концептуально - пишите, что именно, попробую объяснить.
Arti Markelov, Можно - любой reverse-proxy это сделает, если вопрос о http запросах, да и даже iptables можно обойтись, прокинув траффик 80/443 порта. Только учтите задержку между домашним сервером и VPS, она будет прибавляться к времени обработки запроса.(т.е. vps лучше ближе к дому иметь, с маленьким пингом).
Arti Markelov, Учтите, что в большей части мануалов предлагается гонять весь трафик через VPN, а вам нужно только трафик во внутренней сети. Стоит обратить на это внимание.
Поднимаете VPN сервер на вашем VPS.
Коннектитесь к нему со своего домашнего компьютера или сервера.
Настраиваете на VPS проброс портов - банальные правила iptables
В итоге все запросы приходящие на белый адрес VPS перенаправляются на нужный вам компьютер в вашей локальной сети.
Хотя VPN это не единственный вариант, можно городить и SSH тоннели, и еще есть варианты.
Можно реализовать с помощью функции connect back в 3proxy
(один прокси ставится на домашний компьютер, один на VPS, со стороны VPS пробрасывается порт на домашний компьютер) https://3proxy.ru/howtor.asp#CONNBACK
работает это похоже на вашу текущую схему.
Но если нет каких-то серьезных причин, то правильнее сделать VPN, как вам уже посоветовали.
Нашёл решение для себя:
Все манипуляции производил на VPS
1. Сначала очистил iptables, чтобы устаревшие правила никак не повлияли на будущую работу iptables -F
2. Далее установил nginx sudo apt-get install nginx
3. И в его конфиге прописал настройки для использования его в качестве прокси-сервера с перенаправлением на локальный сервер без статического айпи
Сменить провайдера.
С провайдерами, как физик, у меня конечно нет такого опыта работы, чем как юрик, но среди того количества, что я знаю, как физик, никто не доходил до такого выраженного кретинизма. Тут либо пров совсем без лицензии и сидит на единственном своем белом IP, либо что-то типа "местечкового прова", у которого два с половиной адреса и такую политику он придумал просто чтобы отсечь.
Ну, а если никак - АртемЪ дал хороший совет
Письменное заявление на выделение статического IP - уже лет 8, как нормальная практика у любого провайдера. Адреса Ipv4 кончаются. Можешь написать "я хочу смотреть, как ссыт в лоток мой кот по IP-камере".
Для получения естественно потребуется твой скан паспорта - положенно по закону.
По "скрипт крашиться" - это проблема скрипта походу, возможно просто очередь сообщений выходит за рамки RAM позволенного процессу на VPS и кирдык скрипту.