Как отобразить мой частный IP, который динамически меняется на мой vps_ip?
Я создал каплю в digitalocean, есть vps_ip, который я могу использовать.
В моем доме способ подключения к Интернету: маршрут + модем +adsl.
Я построил WordPress на локальном компьютере в моем доме.
Сетевой статус, как показано ниже, при подключении к сети.
WAN:
MAC:ommitted for privacy
IP :public_ip PPPoE
subnet mask:255.255.255.255
gateway:153.0.68.1
DNS:114.114.114.114 223.5.5.5
LAN
MAC:ommitted for privacy
IP :192.168.1.1
subnet mask:255.255.255.0
DHCP:active
ifconfig
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
Моя цель: предоставить общественности доступ к моему WordPress-сайту на домашнем компьютере с помощью vps_ip digitalocean.
Спасибо CrypticDesigns .
https://www.digitalocean.com/community/questions/how-to-map-my-local-ip-192-168-1-100-with-my-vps_ip?
Я решил проблему с помощью CrypticDesigns .
В моей локальной сети:
На моем маршрутизаторе portforward порт 80 и частный IP 192.168.1.100 вне вашей сети.
В публичной капельной системе:
sudo apt-get install nginx
sudo nano /etc/nginx/sites-available/default
server {
listen *:80;
server_name vps_ip;
rewrite .* http://publlic_ip$request_uri permanent;
}
sudo service nginx restart
Любой, кто заходит на vpsip, может просмотреть мою WordPress сейчас.
Важно, чтобы мой IP-адрес на wan менялся примерно каждые 30 минут. Как примерно через 30 минут?
Publicip изменится, файл конфигурации /etc/nginx/sites-available/default не может работать.
Я хочу сделать улучшения по этой проблеме.
По моему мнению, задача должна быть выполнена так:
1. в моем домашнем ПК
Команда curl ipinfo.io/ip может получить мой публичный ip.
Запишите его в crontab каждые 30 минут.
2. отправьте vpsip и измените значение publicip в /etc/nginx/sites-available/default
и перезапустите nginx.
Как выразить два шага командой shell, чтобы сделать процесс автоматическим?
4 ответа
Есть много способов с этим справиться. Для меня это самый простой способ без необходимости установки дополнительного программного обеспечения или подписки на динамические DNS-сайты.
Я не знаю, является ли это временной проблемой, но ipinfo.io не работает для меня, поэтому я использую другой сервис в решении. Измените его, если хотите.
Во-первых, на своем локальном ПК запишите IP-адрес, который у вас есть, в / etc / nginx / sites-available / default (тот, который вы назвали publlic_ip) в / tmp / oldIP. Просто IP, как:
20.20.20.20
Это необходимо сделать только один раз. Затем сохраните следующий скрипт в любом месте, предоставьте ему разрешения на выполнение и добавьте его в cron:
#!/bin/bash
VPS_IP= #fill this
VPS_USER= #fill this
MyOldIP=$(cat /tmp/oldIP)
MyIP=$(curl http://bot.whatismyipaddress.com)
if [ $MyOldIP != $MyIP ] ; then
ssh $VPS_USER@$VPS_IP "sudo sed -i 's/$MyOldIP/$MyIP/' /etc/nginx/sites-available/default" \
&& ssh $VPS_USER@$VPS_IP sudo service nginx restart
fi
Я использую ddclient, который на дистрибутивах на основе Debian должен быть уже доступен
apt-get install ddclient
Не должно быть сложно настроить /etc/ddclient.conf
:
protocol=dyndns2
syslog=yes
ssl=yes
use=web, web=checkip.dynu.com/, web-skip='IP Address'
server=api.dynu.com
login=<your email>
password='<your password>'
<your subdomain>.dynu.com
Он должен поддерживать разные протоколы, а провайдеры dyndns, которые я лично использовал dynu.com годами, должны быть бесплатными (я не уверен насчет новых пользователей).
Я бы предложил вам использовать
proxy_pass
иupstream
вместо того, чтобы идти сrewrite
, Это обеспечит постоянную доступность вашего веб-сайта через вашего провайдера VPS, не раскрывая ваш динамический IPv4-адрес, который может время от времени меняться (что делает недействительными закладки, которые ваши пользователи могут сделать, если вы будете использовать перенаправления черезrewrite
директива, а также делает недействительным поисковый индекс, сгенерированный Google/Yandex и т. д.).Как и предполагали другие, вы можете нанять одного из этих провайдеров динамического DNS, чтобы убедиться, что у вас всегда есть доменное имя, которое соответствует вашему IPv4-адресу, а затем использовать это доменное имя из конфигурации nginx. Просто некоторые самые популярные варианты:
Тем не менее, обратите внимание, что nginx будет пытаться разрешить доменное имя только один раз при запуске, поэтому вам придется его перезапускать, чтобы заметить возможные изменения.
Кроме того, если ваш IPv4-адрес действительно меняется каждые 30 минут, а не раз в пару лет или около того, то, как бы вы ни делали это обновление (будь то через Динамический DNS) или нет, такой подход, скорее всего, приведет не только к вероятному простою (с которыми вы могли бы бороться
proxy_cache
в nginx), но также позволит вашим подписчикам в вашем домашнем интернет-провайдере выдавать себя за ваш веб-сайт в период между изменением вашего IPv4-адреса и временем применения обновления на VPS, а также, в случае, если ваша линия или сила падает.Поэтому я не рекомендовал бы использовать динамический DNS-маршрут.
Вместо того, чтобы пытаться отследить ваш динамический IPv4-адрес, вы могли бы иметь некоторый успех в получении свободного туннеля IPv6 и статического распределения IPv6. В этом случае вы могли бы вместо этого решить опубликовать свой IPv6-адрес напрямую в мире и использовать VPS только для прокси-клиентов IPv4.
Вместо того, чтобы ваш VPS подключался к домашней машине, было бы гораздо лучше, надежнее и надежнее вместо этого вернуть телефон домашней машины обратно к VPS. Вы можете выполнить такие звонки обратно с помощью VPN или IPsec, или даже старого доброго OpenSSH.
В этом случае вы просто будете иметь (0) адрес VPS, жестко закодированный на вашем домашнем ящике, и (1) частный IP-адрес и номер порта вашей домашней машины, жестко закодированный в nginx на вашем VPS. Это гарантирует, что не только никто не сможет украсть ваше соединение (так как оно будет полностью зашифровано и аутентифицировано), но также и то, что нигде в любых файлах конфигурации ваш адрес динамического IPv4 не будет жестко закодирован.
Если вы используете ssh, вы можете использовать туннельный интерфейс в более новой версии или просто переадресацию старого порта.
На VPS:
server {
listen *:80;
listen [::]:80;
server_name vps;
location / {
proxy_pass http://127.0.0.1:2280;
}
}
На домашней машине при условии, что вы запускаете ваше веб-приложение через порт 8080:
sh -xc 'while (true); do ssh -v -N -C -R127.0.0.1:2280:127.0.0.1:8080 -oServerAliveInterval=20 -oServerAliveCountMax=1 user@vps; date; sleep 1; done'
Если вы гуглите "dyndns", вы найдете несколько провайдеров, которые бесплатно предоставят вам "динамическое доменное имя". Вы должны подписаться на один из них.
Существует множество клиентов, которые будут синхронизировать динамическое доменное имя с вашим динамическим IP-адресом. Выбранный вами провайдер dyndns, вероятно, будет располагать всей необходимой вам информацией о клиентах, подходящих для их обслуживания. Просто запустите клиент на своем домашнем компьютере, и альт, динамическое имя домена всегда будет указывать на ваш динамический IP! Даже некоторые домашние маршрутизаторы могут обновить ваше динамическое доменное имя, и вам даже не нужно запускать клиент.
Затем измените конфигурацию nginx, указав имя вашего динамического домена (не вашего IP).