日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
通過(guò)命令行的方式查找公網(wǎng)動(dòng)態(tài)IP地址

公網(wǎng)IP是運(yùn)行商給你的IP,是互聯(lián)網(wǎng)上的一個(gè)“門(mén)牌號(hào)”。內(nèi)網(wǎng)IP一般是你的局域網(wǎng)IP,比如你家有路由器,就必須有一個(gè)內(nèi)網(wǎng)IP,是內(nèi)網(wǎng)的一個(gè)“門(mén)牌號(hào)”。“門(mén)牌號(hào)”是“唯一”的,使別人能“找”到你。當(dāng)然,沒(méi)有路由也有內(nèi)網(wǎng)IP,是因?yàn)槟愕谋镜劓溄永镌O(shè)置了一個(gè)固定IP了。

公司主營(yíng)業(yè)務(wù):網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。成都創(chuàng)新互聯(lián)推出南陽(yáng)免費(fèi)做網(wǎng)站回饋大家。

1. 使用 Shell 命令獲取公網(wǎng) IP 地址

瀏覽器方式

如果我們使用瀏覽器打開(kāi)這個(gè)地址checkip.amazonaws.com你就會(huì)發(fā)現(xiàn)你的公網(wǎng)IP地址赫然在目,互聯(lián)網(wǎng)上的服務(wù)器總是能夠知道是什么 IP地址的客戶端發(fā)起了連接,當(dāng)然就可以通過(guò)這種方式獲取公網(wǎng) IP,同樣功能的網(wǎng)站有很多,這里列舉部分我收集到的:

https://checkip.amazonaws.com
https://api.ipify.org
https://ifconfig.me/ip
https://icanhazip.com
https://ipinfo.io/ip
https://ipecho.net/plain
https://checkipv4.dedyn.io
1.2.3.4.5.6.7.

cURL 方式

在命令行下我們當(dāng)然不能為這點(diǎn)小事隨便啟動(dòng)瀏覽器,我們可以請(qǐng)出另外一個(gè)功能強(qiáng)大的工具,那就是curl,cURL 是一個(gè)利用URL語(yǔ)法在命令行下工作的文件傳輸工具,關(guān)于cURL的快速用法可以參考阮一峰的網(wǎng)絡(luò)日志《curl 的用法指南》,這里不再詳述,最簡(jiǎn)單的用法就是curl 你要請(qǐng)求的網(wǎng)址,比如curl checkip.amazonaws.com。

使用 dig 命令

首次在別人腳本中看到這個(gè)方式獲取公網(wǎng)IP覺(jué)得比較新奇,命令如下:

dig +short myip.opendns.com @resolver1.opendns.com
1.

這個(gè)是由OpenDNS提供的服務(wù),如果你的主機(jī)上沒(méi)有安裝dig命令,對(duì)于Debian系列系統(tǒng)可以通過(guò)apt-get install dnsutils安裝,這個(gè)命令的原理是指定resolver1.opendns.com為域名myip.opendns.com的解析服務(wù)器,為什么要指定,主要是避免 DNS 下游服務(wù)器緩存,另外這個(gè)指定的解析服務(wù)器被 OpenDNS 進(jìn)行了特殊配置,其始終將域名myip.opendns.com解析為發(fā)起 DNS 請(qǐng)求的客戶端 IP 地址,這樣也就實(shí)現(xiàn)了查找公網(wǎng) IP的功能。

這個(gè)和 cURL 方式比有什么優(yōu)勢(shì)呢?當(dāng)然是數(shù)據(jù)量更小傳輸更快,畢竟使用 cURL 發(fā)起 HTTP 請(qǐng)求必然會(huì)導(dǎo)致協(xié)議頭等無(wú)關(guān)信息的交換,如果啟用了 HTTPS/TLS 那么還要進(jìn)行加密協(xié)商,效率會(huì)比較低,當(dāng)然這種方式的缺點(diǎn)就是 DNS 查詢?nèi)菀妆贿\(yùn)營(yíng)商審計(jì)和過(guò)濾,穩(wěn)定性略差,不過(guò)我測(cè)試下來(lái)除了偶爾查詢失敗外其余情況是完全 OK 的。

2. 使用 Shell 腳本獲取公網(wǎng) IP 地址

至此我有個(gè)新的主意,那就是首先采用 dig 命令快速檢索公網(wǎng) IP 地址,如果失敗則切換到 cURL 的方式,為了避免 cURL 單一服務(wù)器失敗,采用輪詢或者隨機(jī)的方式,盡可能提高成功率。

使用 Bash Shell 腳本 do it,比如獲取公網(wǎng) IPv4 的腳本如下:

#!/bin/bash
# This script try to ensure gets the current IP address (as assigned by the ISP) from
# OpenDNS and other online services as fallbacks
hosts=("checkip.amazonaws.com" "api.ipify.org" "ifconfig.me/ip" "icanhazip.com" "ipinfo.io/ip" "ipecho.net/plain" "checkipv4.dedyn.io")
CURL=`which curl`
DIG=`which dig`
check=$($DIG +short myip.opendns.com @resolver1.opendns.com A)  
if [ ! $? -eq 0 ] || [ -z "$check" ] || [[ ! $check =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
   echo "Unable to get your public IP address by OpenDNS service, try to another way."
   count=${#hosts[@]}
   while [ -z "$check" ] && [[ $count -ne 0 ]]; do
       selectedhost=${hosts[ $RANDOM % ${#hosts[@]} ]}
       check=$($CURL -4s https://$selectedhost | grep '[^[:blank:]]') && {
           if [ -n "$check" ] && [[ $check =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
               break
           else
               check=""
               count=$(expr $count - 1)
               echo "The host $selectedhost returned an invalid IP address."
           fi
       } || {
           check=""
           count=$(expr $count - 1)
           echo "The host $selectedhost did not respond."
       }
   done
fi
if [ -z "$check" ]; then
   echo "Unable to get your public IP address. Please check your internet connection."
   exit 1
fi
echo "Your public IP address is $check"
exit 0
1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.

上述腳本可以看出首先我使用 dig 方式查詢 OpenDNS,如果查詢失敗或者返回為空或者不是 IP 地址,那么進(jìn)入cURL模式,這里將可用服務(wù)器添加到 hosts 列表,并且隨機(jī)抽取一個(gè)進(jìn)行cURL,這里使用了curl -4s參數(shù)-4s分別表示僅使用 IPv4 方式連接(確保獲取 IPv4 地址)和抑制進(jìn)度條和錯(cuò)誤信息,如果抽取的服務(wù)發(fā)生錯(cuò)誤,那么進(jìn)入循環(huán)再抽取一個(gè),直到循環(huán)滿最大 hosts 數(shù)停止。

3. 總結(jié)

大部分腳本甚至一些程序僅使用了一種方式獲取公網(wǎng) IP,但是互聯(lián)網(wǎng)上這些服務(wù)往往是不可靠的,如果你所選用的服務(wù)出現(xiàn)故障,那么將會(huì)影響到你后續(xù)業(yè)務(wù)的開(kāi)展,所以本文的核心思想還是多個(gè)備份,另外對(duì)于 cURL 方式采用隨機(jī)確保所謂的“負(fù)載平衡”,避免 fallback 時(shí)過(guò)度請(qǐng)求某個(gè)服務(wù)導(dǎo)致 IP 被 Ban。


網(wǎng)站欄目:通過(guò)命令行的方式查找公網(wǎng)動(dòng)態(tài)IP地址
瀏覽地址:http://www.5511xx.com/article/dpgohoe.html