دستور تعیین IP عمومی من؟


به جواب پذیرفته شده بروید




اگر با گوگل چک کنم ، می توانم IP عمومی من را ببینم. آیا چیزی در خط فرمان اوبونتو وجود دارد که همین جواب را به من می دهد؟


651









22 :تعداد پاسخها


اگر پشت یک روتر نیستید ، می توانید با استفاده از آن اطلاعات کسب کنید ifconfig .

اگر پشت یک روتر هستید ، کامپیوتر شما از آدرس IP عمومی اطلاع نخواهد داشت زیرا روتر ترجمه آدرس شبکه را انجام می دهد. می توانید از برخی وب سایت بپرسید که آدرس IP عمومی شما از چه اطلاعاتی استفاده می کند curl یا wget اطلاعات مورد نیاز خود را از آن استخراج می کنید:

 curl -s https://checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'  
 

یا کوتاه تر

 curl https://ipinfo.io/ip
 

935



برای یافتن ip خارجی ، می توانید از خدمات خارجی مبتنی بر وب استفاده کنید یا از روش های مبتنی بر سیستم استفاده کنید. استفاده آسانتر از سرویس خارجی ، ifconfig راه حلهای مبتنی بر کار در سیستم شما تنها درصورتی است که پشت تلفن نباشید NAT . دو روش در زیر به تفصیل مورد بحث قرار گرفته است.

یافتن IP خارجی با استفاده از خدمات خارجی

ساده ترین راه استفاده از یک سرویس خارجی از طریق مرورگر خط فرمان یا ابزار بارگیری است. از آنجا که wget به طور پیش فرض در اوبونتو موجود است ، می توانیم از آن استفاده کنیم.
برای یافتن IP ، از-

 $ wget -qO- https://ipecho.net/plain ; echo
 

ادب :

همچنین می توانید از lynx (مرورگر) یا curl به جای wget تغییرات جزئی در دستور فوق استفاده کنید تا IP خارجی خود را پیدا کنید.

با استفاده از curl برای یافتن IP:

 $ curl https://ipecho.net/plain
 

برای استفاده بهتر از فرم خروجی:

 $ curl https://ipecho.net/plain ; echo
 

سریع تر (مسلما سریع ترین) روش با استفاده از dig با OpenDNS عنوان برطرف:

پاسخهای دیگر در اینجا همه از طریق HTTP به یک سرور از راه دور منتقل می شوند. برخی از آنها نیاز به تجزیه خروجی دارند یا به هدر کاربر (Agent Agent) تکیه می کنند تا سرور به متن ساده پاسخ دهد. آنها همچنین اغلب تغییر می کنند (پایین بروید ، نام خود را تغییر دهید ، تبلیغات کنید ، ممکن است فرمت خروجی و غیره را تغییر دهید).

  1. پروتکل پاسخ DNS بصورت استاندارد (فرمت سازگار خواهد بود).
  2. از نظر تاریخی سرویس های DNS (OpenDNS ، Google Public DNS ، ..) بسیار طولانی تر زنده می مانند و با ثبات تر ، مقیاس پذیر تر و عموماً مراقب آن هستند تا سرویس جدید HTTP whatismyip.com HTTP امروزه داغ باشد.
  3. (برای آن دسته از حرفهایهایی که به بهینه سازی میکرو اهمیت می دهند) ، این روش باید ذاتاً سریعتر باشد (فقط با چند میکرو ثانیه).

استفاده از حفاری با OpenDNS به عنوان حل کننده:

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

111.222.333.444
 

کپی شده از: https://unix.stackexchange.com/a/81699/14497

یافتن IP خارجی بدون تکیه بر خدمات خارجی

  • اگر نام رابط شبکه خود را می دانید

موارد زیر را در ترمینال خود تایپ کنید:

 $ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
 

در بالا ، <interface_name> نام رابط واقعی خود را جایگزین کنید ، به عنوان مثال: eth0 ، eth1 ، pp0 ، و غیره ...

کاربرد مثال:

 $ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
 
  • اگر نام رابط شبکه خود را نمی دانید

موارد زیر را در ترمینال خود تایپ کنید (این نام و آدرس IP هر رابط شبکه در سیستم شما را بدست می آورد):

 $ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
 

کاربرد مثال:

 $ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
lo: 127.0.0.1
ppp0: 111.222.333.444
 

NB: خروجی ها نشانگر هستند و واقعی نیستند.

ادب: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/

به روز رسانی

  1. LANG=c به ifconfig کاربردهای مبتنی بر آن افزوده شده است ، به طوری که همیشه ، فارغ از تنظیمات محلی ، به خروجی انگلیسی می دهد.

388



مورد علاقه من همیشه بوده است:

 curl ifconfig.me
 

ساده ، آسان برای تایپ

ابتدا باید فر را نصب کنید؛)

اگر ifconfig.me خراب است ، icanhazip.com یا ipecho.net را امتحان کنید

 curl icanhazip.com
 

یا

 curl ipecho.net
 

118



icanhazip.com مورد علاقه من است.

 curl icanhazip.com
 

می توانید IPv4 را صریح بخواهید:

 curl ipv4.icanhazip.com
 

اگر ندارید curl می توانید wget به جای آن استفاده کنید:

 wget -qO- icanhazip.com
 

59



من همه چیز را آزار دهنده و کند نشان داده ام ، بنابراین خودم را نوشتم. ساده و سریع است.

API آن در http://api.ident.me/

مثال ها:

 curl ident.me
curl v4.ident.me
curl v6.ident.me
 

48



برای اطلاع از IP عمومی خود می توانید به جای درخواست HTTP از یک درخواست DNS استفاده کنید:

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

از resolver1.opendns.com سرور dns برای حل و فصل myip.opendns.com نام میزبان جادویی به آدرس IP شما استفاده می کند.


43


2014-02-27

آمازون AWS

 curl http://checkip.amazonaws.com
 

خروجی نمونه:

 123.123.123.123
 

من آن را دوست دارم زیرا:

  • این فقط IP ساده متن است ، هیچ چیز دیگری
  • آن را از یک ارائه دهنده مشهور است که بعید است به زودی آفلاین شوید

24



مورد استفاده من این است:

 wget -O - -q icanhazip.com
 

بله ، شما می توانید ip :-) داشته باشید


18



دقیقاً این را تایپ کنید ، مطابق شکل Enterنشان دهید

telnet ipecho.net 80 Enter
GET /plain HTTP/1.1 Enter
HOST: ipecho.net Enter
BROWSER: web-kit Enter
Enter

این به صورت دستی یک درخواست HTTP را ارسال می کند ، که IP شما را در انتهای یک برمی گرداند HTTP/1.1 200 OK reply

خروجی مثال:

 $ telnet ipecho.net 80
Trying 146.255.36.1...
Connected to ipecho.net.
Escape character is '^]'.
GET /plain HTTP/1.1
HOST: ipecho.net
BROWSER: web-kit

HTTP/1.1 200 OK
Date: Tue, 02 Jul 2013 07:11:42 GMT
Server: Apache
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Cache-Control: no-cache
Pragma: no-cache
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html

f
111.222.333.444
0
 

11



برای این ، STUN اختراع شد. به عنوان مشتری می توانید یک درخواست را به یک سرور STUN در دسترس عموم ارسال کرده و آدرس IP را که می بیند به شما برگرداند. طبقه بندی Whatismyip.com از سطح پایین ، زیرا از هیچ HTTP و هیچ سرور DNS کاملاً دستکاری شده ای استفاده نمی کند اما پروتکل STUN که به طرز چشمگیری سرعت دارد.

استفاده كردن stunclient

اگر stunclient نصب کرده اید ( apt-get install stuntman-client روی debian / ubuntu) می توانید به سادگی انجام دهید:

 $stunclient stun.services.mozilla.com
Binding test: success
Local address: A.B.C.D:42541
Mapped address: W.X.Y.Z:42541
 

A.B.C.D آدرس IP دستگاه شما در شبکه محلی کجاست و W.X.Y.Z سرورهای آدرس IP مانند وب سایتهایی که از خارج می بینند (و یکی از آنها به دنبال آن هستید). با استفاده از sed شما می توانید خروجی بالا را فقط به یک آدرس IP کاهش دهید:

 stunclient stun.services.mozilla.com |
    sed -n -e "s/^Mapped address: \(.*\):.*$/\1/p"
 

با این حال ، سوال شما این بود که چگونه با استفاده از خط فرمان ، آن را پیدا کنید ، که ممکن است استفاده از یک مشتری STUN را حذف کند. بنابراین من تعجب می کنم ...

استفاده كردن bash

یک درخواست STUN را می توان netcat با استفاده از پردازش به سرور STUN خارجی ارسال کرد و پس از پردازش با استفاده از آن dd ، hexdump و sed مانند اینها:

 $echo -en '\x00\x01\x00\x08\xc0\x0c\xee\x42\x7c\x20\x25\xa3\x3f\x0f\xa1\x7f\xfd\x7f\x00\x00\x00\x03\x00\x04\x00\x00\x00\x00' |
    nc -u -w 2 stun.services.mozilla.com 3478 |
    dd bs=1 count=4 skip=28 2>/dev/null |
    hexdump -e '1/1 "%u."' |
    sed 's/\.$/\n/'
 

echo یک درخواست STUN باینری را تعریف می کند (0x0001 نشان دهنده درخواست اتصال) با طول 8 (0x0008) با کوکی 0xc00cee و برخی از موارد چسبیده از wireshark است. فقط چهار بایت به نمایندگی از IP خارجی از جواب گرفته شده ، تمیز و چاپ می شوند.

کار ، اما برای استفاده در تولید توصیه نمی شود :-)

PS بسیاری از سرورهای STUN در دسترس هستند زیرا این یک فناوری اصلی برای SIP و WebRTC است. استفاده از یکی از موزیلا باید ایمن باشد اما می توانید از دیگری استفاده کنید: لیست سرور STUN


10



سریع دیگر (ممکن است سریعترین ، نسبتاً)

 curl ipecho.net/plain
 

9



من یک سرویس احمقانه برای این کار از طریق telnet دارم. چیزی مثل این:

 telnet myip.gelma.net

Your IPv4: xxx.xxx.xxx.xxx
Your IPv6: ::ffff:xxxx:xxxx
 

برای استفاده از آن راحت باش.


7



می توانید یک صفحه وب را با استفاده از فقط bash ، بدون curl ، بخوانید wget :

 $ exec 3<> /dev/tcp/icanhazip.com/80 && # open connection
  echo 'GET /' >&3 &&                   # send http 0.9 request
  read -u 3 && echo $REPLY &&           # read response
  exec 3>&-                             # close fd
 

5


2014-09-18

برای کسانی از ما که به روترهای خود دسترسی دارند ، با استفاده از یک اسکریپت از روتر سؤال می کنند که آدرس WAN IP آن چیست ، کارآمدترین روش برای تعیین آدرس IP خارجی است. به عنوان مثال ، اسکریپت پایتون زیر IP خارجی برای روتر Medialink MWN-WAPR300N را چاپ می کند:

 import urllib, urllib2, cookielib
import re
from subprocess import check_output as co

cookie_jar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie_jar))
urllib2.install_opener(opener)

def get(url, values=None):
  data = None
  if values: data = urllib.urlencode(values)
  req = urllib2.Request(url, data)
  rsp = urllib2.urlopen(req)
  return rsp.read()

router = co(['ip', '-o', 'ro', 'list', '0.0.0.0/0']).split()[2]
url = "http://" + router

get(url+"/index.asp")
get(url+"/LoginCheck", dict(checkEn='0', Username='admin', Password='admin'))
page = get(url+"/system_status.asp")

for line in page.split("\n"):
  if line.startswith("wanIP = "):
    print line.split('"')[1]
    exit(1)
 

توجه داشته باشید که این مسئله بسیار ایمن نیست (مانند پرونده های متن ساده و ورود به اکثر روترها) ، و مطمئناً قابل حمل نیست (برای هر روتر نیاز به تغییر دارد). این در حالی است که بسیار سریع و یک راه حل کاملاً مناسب در یک شبکه خانگی از نظر جسمی ایمن است.

برای شخصی سازی اسکریپت برای روتر دیگر ، توصیه می کنم از addon tamperdata در فایرفاکس استفاده کنید تا مشخص شود که HTTP چه درخواستی می کند.


2



اینها IP محلی را دریافت می کنند:

 ifconfig
 

یا برای خروجی کوتاهتر:

 ifconfig | grep inet
 

همچنین

 ip addr show
 

و احتمالاً:

 hostname -I
 

این باید IP خارجی را بدست آورد

 wget http://smart-ip.net/myip -O - -q ; echo
 

NB اگر قصد نصب ندارید curl ، این کار را هم انجام دهید:

 curl http://smart-ip.net/myip
 

2



بسیاری از روترهای خانگی توسط UPnP می توان از آنها درخواست کرد:

 curl "http://fritz.box:49000/igdupnp/control/WANIPConn1" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress" -d "<?xml version='1.0' encoding='utf-8'?> <s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'> <s:Body> <u:GetExternalIPAddress xmlns:u='urn:schemas-upnp-org:service:WANIPConnection:1' /> </s:Body> </s:Envelope>" -s
 

سپس ، آدرس IP را از جواب بگیرید.

 grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'
 

2


2016-09-18

اگر از DD-WRT استفاده می کنید ، این کار برای من انجام می شود:

 curl -s 192.168.1.1 | grep "ipinfo" | awk -v FS="(IP: |</span)" '{print $2}'
 

یا

 curl -s -u your_ddwrt_username:your_ddwrt_password http://192.168.1.1 | grep "ipinfo" | awk -v FS="(IP: |</span)" '{print $2}'
 
  • جایی که 192.168.1.1 آدرس IP Gateway / Router LAN روتر DD-WRT است.

  • -s یعنی جزء سکوت (یعنی انجام حلقه اطلاعات پیشرفت را نشان نمی دهد).

  • اوه ، لازم به ذکر است که از موارد فوق با "DD-WRT v24-sp2 (01/04/15) std" استفاده می کنم .

2


2017-04-14

اگر لینوکس را در نوع اوبونتو نصب کرده اید

 lynx bot.whatismyipaddress.com
 

1



استفاده کنید ip !

 ip addr show
 

سپس آداپتور مربوطه را جستجو کنید ( lo و معمولاً eth0 ) و آدرس IP را در نزدیکی پیدا کنید inet .


0



شاید من کمی دیر شده ام ، اما Inxi می تواند این کار را نسبتاً آسان انجام دهد.

نصب inxi

 sudo apt install inxi
 

سپس دستور زیر را اجرا کنید

 inxi -i
 

با استفاده از z گزینه کپی کردن و چسباندن به سایتهایی مانند این ، اطلاعات من مسدود شده است :

 ~$ inxi -iz
Network:   Card: NVIDIA MCP77 Ethernet driver: forcedeth
           IF: eth0 state: up speed: 1000 Mbps duplex: full mac: <filter>
           WAN IP: <filter>
           IF: eth0 ip-v4: <filter> ip-v6-link: N/A
 

جایی که می گوید <filter> مکان WAN IP ، IPv4 ، آدرس MAC و غیره شما ظاهر می شود


0



به سادگی یک دنباله دار برای هر وب سایت یا خدمات صادر کنید ..

 sudo traceroute -I google.com
 

به نظر می رسد خط 2 همیشه پس از گذر از دروازه روتر من ، آدرس IP عمومی من است.

 [email protected] ~ $ sudo traceroute -I google.com
traceroute to google.com (173.194.46.104), 30 hops max, 60 byte packets
 1  25.0.8.1 (25.0.8.1)  230.739 ms  231.416 ms  237.819 ms
 2  199.21.149.1 (199.21.149.1)  249.136 ms  250.754 ms  253.994 ms**
 

بنابراین ، دستور bash را انجام دهید.

 sudo traceroute -I google.com | awk -F '[ ]' '{ if ( $2 ="2" ) { print $5 } }'
 

و خروجی ...

 (199.21.149.1)
 

من فکر نمی کنم که به اسکریپت های PHP تکیه کنید و مرتب سازی بر اساس آن عمل خوبی است.


-2



دستوری بدون وابستگی به جز 8.8.8.8 GOogle DNS:

 echo $(ip route get 8.8.8.8 | awk '{print $NF; exit}')
 

-2



انتشارات مرتبط


چگونه آدرس IP داخلی خود را پیدا کنم؟

دستور تعیین IP عمومی من؟

چگونه می توانم آدرس IP شبکه ، netmask و اطلاعات دروازه خود را پیدا کنم؟

آدرس IP عمومی برای ظرف LXC

فرمان برای تعیین اینکه اوبونتو در یک ماشین مجازی در حال اجرا است یا خیر؟

آدرس IP رایانه من از دانستن روتر چیست؟

دستور تعیین IP عمومی من؟

درخواستهای خود را به IP / پورت خارجی من به IP / پورت خارجی متفاوت هدایت کنید؟

دستور aa-enforce برای apparmor منجر به خطای "فرمان یافت نشد" می شود

آیا راهی برای نشان دادن دائم آدرس IP خارجی من در نوار اتحاد بالا وجود دارد؟

[networking] سوال برچسب


دایرکتوری ریشه سیستم فایل اوبونتو در سیستم فرعی ویندوز برای لینوکس و برعکس کجاست؟

چگونه می توان نامه را از خط فرمان ارسال کرد؟

چگونه آدرس IP داخلی خود را پیدا کنم؟

چگونه می توانم rsync پرونده هایی را که از پوشه منبع حذف شده اند حذف کنم؟

چگونه می توانم از آینه ای نزدیک به خودم استفاده کنم یا آینه ای سریع تر انتخاب کنم؟

apt-get at 0 [اتصال به us.archive.ubuntu.com]

mv: دایرکتوری خالی نیست

وضوح صفحه نمایش بالاتر در VirtualBox؟

تفاوت بین PGP و GPG

چگونه می توانم یک فایل .jar را از ترمینال اجرا کنم