YardalGedal
@YardalGedal
yeah boy

Как передавать данные на сервер без статического 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% данных исчезают. Есть ли ещё какие-то варианты как можно решить эту проблему иначе?
  • Вопрос задан
  • 1859 просмотров
Решения вопроса 4
kotomyava
@kotomyava
Системный администратор
Поднять VPN, например, с помощью openvpn, и работать как будто у него есть IP. =)
Ответ написан
Jump
@Jump
Системный администратор со стажем.
Поднимаете VPN сервер на вашем VPS.
Коннектитесь к нему со своего домашнего компьютера или сервера.
Настраиваете на VPS проброс портов - банальные правила iptables

В итоге все запросы приходящие на белый адрес VPS перенаправляются на нужный вам компьютер в вашей локальной сети.

Хотя VPN это не единственный вариант, можно городить и SSH тоннели, и еще есть варианты.
Ответ написан
Комментировать
Можно реализовать с помощью функции connect back в 3proxy
(один прокси ставится на домашний компьютер, один на VPS, со стороны VPS пробрасывается порт на домашний компьютер)
https://3proxy.ru/howtor.asp#CONNBACK
работает это похоже на вашу текущую схему.
Но если нет каких-то серьезных причин, то правильнее сделать VPN, как вам уже посоветовали.
Ответ написан
Комментировать
YardalGedal
@YardalGedal Автор вопроса
yeah boy
Нашёл решение для себя:
Все манипуляции производил на VPS
1. Сначала очистил iptables, чтобы устаревшие правила никак не повлияли на будущую работу
iptables -F
2. Далее установил nginx
sudo apt-get install nginx
3. И в его конфиге прописал настройки для использования его в качестве прокси-сервера с перенаправлением на локальный сервер без статического айпи
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
        worker_connections 768;
        multi_accept on;
}
http {
        sendfile on;
        keepalive_timeout 15;
        proxy_buffers 8 64k;
        proxy_intercept_errors on;
        proxy_connect_timeout 1s;
        proxy_read_timeout 3s;
        proxy_send_timeout 3s;
        server {
            listen 80;
            server_name a.ru b.ru;
            access_log /var/log/nginx/1.access_log;
            error_log /var/log/nginx/1.error_log warn;
            charset utf-8;
            ssi on;
            ssi_value_length 1024;
            location / {
                proxy_pass http://10.8.0.6:9000;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_intercept_errors off;
                proxy_read_timeout 5s;
                proxy_send_timeout 3s;
                gzip on;
                gzip_min_length 1024;
                gzip_proxied expired no-cache no-store private auth;
                gzip_types text/plain application/xml;
            }
        }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
Сменить провайдера.
С провайдерами, как физик, у меня конечно нет такого опыта работы, чем как юрик, но среди того количества, что я знаю, как физик, никто не доходил до такого выраженного кретинизма. Тут либо пров совсем без лицензии и сидит на единственном своем белом IP, либо что-то типа "местечкового прова", у которого два с половиной адреса и такую политику он придумал просто чтобы отсечь.
Ну, а если никак - АртемЪ дал хороший совет
Ответ написан
@Xilian
Программист 1С, сетевые технологии, SQL
Письменное заявление на выделение статического IP - уже лет 8, как нормальная практика у любого провайдера. Адреса Ipv4 кончаются. Можешь написать "я хочу смотреть, как ссыт в лоток мой кот по IP-камере".
Для получения естественно потребуется твой скан паспорта - положенно по закону.

По "скрипт крашиться" - это проблема скрипта походу, возможно просто очередь сообщений выходит за рамки RAM позволенного процессу на VPS и кирдык скрипту.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы