簡體   English   中英

如何將動態更改的私有IP映射到vps_ip?

[英]How to map my private ip which change dynamically onto my vps_ip?

我在digitalocean中創建了一個小滴,我可以使用一個vps_ip。
在我家中,連接互聯網的方式是:route + modem + adsl。
我在家里的本地PC上建立了一個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                                                                    

我的目標:讓公眾通過vps_ip digitalocean給我的信息,在家用PC上訪問我的wordpress網站。

感謝CrypticDesigns。
https://www.digitalocean.com/community/questions/how-to-map-my-local-ip-192-168-1-100-with-my-vps_ip嗎?
我已經借助CrypticDesigns解決了這個問題。

在我的本地網絡中:
在我的路由器上,將端口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。
重要的是我在WAN上的IP地址大約每30分鍾更改一次。大約30分鍾后如何更改?
publicip將更改,配置文件/ etc / nginx / sites-available / default無法使用。
我想對此問題進行改進。
我認為完成任務是:
1.在我的家用電腦中
curl ipinfo.io/ip命令可以獲取我的公共IP。
每30分鍾將其寫入crontab中。
2.發送vpsip並在/ etc / nginx / sites-available / default中更改publicip的值
,然后重新啟動nginx。

如何用shell命令表示兩個步驟以使過程自動化?

如果您用Google“ dyndns”搜索,您會發現多個提供免費的“動態域名”的提供商。 您應該注冊其中之一。

有很多客戶端將使動態域名與您的動態IP地址保持同步。 您選擇的dyndns提供商可能會為您提供適合其服務的客戶所需的所有信息。 只需在家用計算機和中提琴上運行客戶端,動態域名就會始終指向您的動態IP! 即使是某些家用路由器也可以為您更新動態域名,然后您甚至不必運行客戶端。

然后更改您的nginx配置,使其指向您的動態域名(而不是IP)。

我正在使用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 ,應該是免費的(我不確定新用戶)。

  1. 我建議您使用proxy_pass和一個upstream ,而不要rewrite 這樣可以確保您的網站始終可以通過VPS提供商訪問,而不會透露動態IPv4地址,該地址可能會不時發生變化(因此,如果您通過rewrite指令使用重定向,則使用戶創建的書簽無效,例如以及使Google / Yandex等生成的搜索索引無效)。

    1. 就像其他人建議的那樣,您可以雇用那些動態DNS提供程序之一來確保始終擁有一個解析為您的IPv4地址的域名,然后在nginx配置中使用該域名。 只是一些最受歡迎的選項:

      但是請注意,nginx只會在啟動時嘗試解析一次域名,因此,您必須繼續重新啟動域名才能進行任何可能的更改。

      此外,如果您的IPv4地址確實確實每30分鍾更改一次,而不是每隔兩年左右更改一次,那么無論您是否進行此更新(無論是否通過動態DNS),這種方法都可能不僅導致可能的停機(您可以使用nginx中的proxy_cache來解決proxy_cache問題),但也可以讓您的家庭ISP的其他訂閱者在您的IPv4地址更改到在VPS上應用更新之間假冒您的網站,或者,另外,以防您的線路或電源中斷。

      因此,我不建議您使用動態DNS路由。

    2. 您可以嘗試獲得免費的IPv6隧道和靜態IPv6分配,而不是嘗試跟蹤您的動態IPv4地址。 在這種情況下,您可以決定直接向世界發布您的IPv6地址,而僅使用VPS代理IPv4客戶端。

      http://SixXS.net/

    3. 與其讓您的VPS連接到您的家用計算機,不如將它變成您的家用計算機電話回到VPS的更好,可靠和強大的方法。 您可以使用VPN或IPsec解決方案,甚至是普通的舊OpenSSH來完成此類回撥。

      在這種情況下,您只需將(0)硬編碼在家用盒上的VPS地址,以及(1)硬編碼在VPS上的nginx內的家用計算機的專用IP地址和端口號。 這將確保不僅沒有人會竊取您的連接(因為它將被完全加密和認證),而且還確保在任何配置文件中都不會對您的動態IPv4地址進行硬編碼。

      如果使用ssh ,則可以使用較新版本的隧道接口,也可以使用普通的舊端口轉發。


在VPS上:

server {
  listen *:80;
  listen [::]:80;
  server_name vps;
  location / {
      proxy_pass http://127.0.0.1:2280;
  }
}

在家用計算機上,前提是您要在端口8080上運行Webapp:

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'

有很多方法可以解決這個問題。 對我來說,這是最簡單的方法,而無需安裝額外的軟件或訂閱動態dns站點。

我不知道這是否是暫時性的問題,但是ipinfo.io不適用於我,因此我在解決方案中使用了另一項服務。 如果需要,請更改它。

首先,在本地PC中,將遠程/ etc / nginx / sites-available / default (您稱為publlic_ip )中的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM