Lệnh xác định IP công cộng của tôi?


636

Nếu tôi kiểm tra với google , tôi có thể thấy IP công cộng của mình. Có điều gì trên dòng lệnh Ubuntu sẽ mang lại cho tôi câu trả lời tương tự không?


2
"Có IP động", "SSH sử dụng một số hệ thống khác trên internet", "lệnh sẽ hiển thị IP PUBLIC hiện tại". Bạn thấy vấn đề gà / trứng ở đây? Làm thế nào bạn có thể chạy các lệnh trên một máy chủ từ xa mà không biết địa chỉ của nó? Bạn có thể quan tâm nhiều hơn đến các dịch vụ như no-ip.com / DynDNS.org.
gertvdijk

người ta không thể SSH mà không biết IP công khai, bạn của tôi ... dynDNS tốn rất nhiều công sức và không có ip nhưng tình huống không cho phép ... dù sao câu hỏi đã được trả lời .. cảm ơn vì lời đề nghị của bạn
Bhavesh Diwan

1
PS duckduckgo.com/?q=ip (không có dòng lệnh, nhưng cũng không có anh lớn G)
Campa

1
Có lẽ đây là một câu hỏi riêng biệt, nhưng tôi muốn thấy một cảnh báo khi địa chỉ IP công cộng của tôi thay đổi. Hiện tại, tôi chỉ sử dụng các câu trả lời sau trong một crontab với notify-send.
PJ Brunet

giải pháp tuyệt vời dưới đây. Đối với Centos sử dụng: ifconfig eth1 | sed -nre '/^[^ ]+/{N;s/^([^ ]+).*inet *([^ ]+).*/\2/p}'trong đó eth1 là thiết bị mạng quan tâm, bạn có thể bỏ qua chuỗi 'et1' để hiển thị tất cả ips của tất cả các bộ điều hợp. Thay vì \2bạn có thể viết \1 \2để hiển thị tên của từng bộ chuyển đổi.
Hafenkranich

Câu trả lời:


916

Nếu bạn không ở phía sau bộ định tuyến, bạn có thể tìm thấy nó bằng cách sử dụng ifconfig.

Nếu bạn đứng sau bộ định tuyến, thì máy tính của bạn sẽ không biết về địa chỉ IP công cộng vì bộ định tuyến thực hiện dịch địa chỉ mạng. Bạn có thể hỏi một số trang web địa chỉ IP công cộng của bạn đang sử dụng curlhoặc wgettrích xuất thông tin bạn cần từ nó:

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

hoặc ngắn hơn

curl https://ipinfo.io/ip

27
ty - ngay sau khi tôi đăng bài, tôi nhận ra rằng tôi đã không tìm kiếm câu trả lời trước: có vẻ như điều này sẽ hoạt động curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//' Các khả năng khác được liệt kê ở đây: go2linux.org/what-is-my-public-ip-address-with-linux
kfmfe04

1
chắc chắn - bạn có thể thêm nó vào câu trả lời của mình
kfmfe04

1
Để làm rõ: Đó là một hack, và rất xấu ở đó, vì vậy tôi đã thực hiện một chỉnh sửa để làm cho nó đơn giản hơn và một cái gì đó mà mọi người có thể nhớ.
jrg

2
Exacly như Giovanni P đã nêu. OP nên thay đổi anwser được chấp nhận.
loostro

36
curl -s ipinfo.io/ip
chao

385

Để tìm ip bên ngoài, bạn có thể sử dụng các dịch vụ dựa trên web bên ngoài hoặc sử dụng các phương pháp dựa trên hệ thống. Cách dễ dàng hơn là sử dụng dịch vụ bên ngoài, các ifconfiggiải pháp dựa trên sẽ chỉ hoạt động trong hệ thống của bạn nếu bạn không đứng sau a NAT. hai phương pháp đã được thảo luận chi tiết dưới đây.

Tìm IP bên ngoài bằng các dịch vụ bên ngoài

Cách dễ nhất là sử dụng dịch vụ bên ngoài thông qua trình duyệt dòng lệnh hoặc công cụ tải xuống. Vì wgetcó sẵn theo mặc định trong Ubuntu, chúng tôi có thể sử dụng điều đó.
Để tìm ip của bạn, hãy sử dụng-

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

Lịch sự :

Bạn cũng có thể sử dụng lynx(trình duyệt) hoặc curlthay cho wgetcác biến thể nhỏ cho lệnh trên, để tìm ip bên ngoài của bạn.

Sử dụng curlđể tìm ip:

$ curl https://ipecho.net/plain

Để sử dụng đầu ra được định dạng tốt hơn:

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

Phương pháp nhanh hơn (được cho là nhanh nhất) sử dụng digvới OpenDNStrình phân giải:

Các câu trả lời khác ở đây đều chuyển qua HTTP đến một máy chủ từ xa. Một số trong số chúng yêu cầu phân tích cú pháp đầu ra hoặc dựa vào tiêu đề Tác nhân người dùng để làm cho máy chủ phản hồi bằng văn bản thuần túy. Họ cũng thay đổi khá thường xuyên (đi xuống, thay đổi tên, đăng quảng cáo, có thể thay đổi định dạng đầu ra, v.v.).

  1. Giao thức phản hồi DNS được chuẩn hóa (định dạng sẽ vẫn tương thích).
  2. Các dịch vụ DNS trong lịch sử (OpenDNS, Google Public DNS, ..) có xu hướng tồn tại lâu hơn và ổn định hơn, có thể mở rộng và thường được chăm sóc hơn bất kỳ dịch vụ HTTP mới nào của hipismismip.com đang nóng hiện nay.
  3. (đối với những chuyên viên máy tính quan tâm đến tối ưu hóa vi mô), phương pháp này vốn đã nhanh hơn (chỉ trong vài giây).

Sử dụng đào với OpenDNS làm trình phân giải:

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

111.222.333.444

Sao chép từ: https://unix.stackexchange.com/a/81699/14497

Tìm IP bên ngoài mà không cần dựa vào các dịch vụ bên ngoài

  • Nếu bạn biết tên giao diện mạng của bạn

Nhập nội dung sau vào thiết bị đầu cuối của bạn:

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

Ở phía trên, thay thế <interface_name>với tên của giao diện thực tế của bạn, ví dụ như: eth0, eth1, pp0, vv ...

Cách sử dụng ví dụ:

$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
  • Nếu bạn không biết tên giao diện mạng của mình

Nhập thông tin sau vào thiết bị đầu cuối của bạn (cái này lấy tên và địa chỉ IP của mọi giao diện mạng trong hệ thống của bạn):

$ 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 }'

Cách sử dụng ví dụ:

$ 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: Đầu ra là chỉ định và không có thật.

Lịch sự: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/

CẬP NHẬT

  1. LANG=cđã được thêm vào các ifconfigứng dụng dựa trên, để nó luôn cung cấp đầu ra tiếng Anh, bất kể cài đặt ngôn ngữ.

1
@ Z9iT, Chắc chắn .. Nó sẽ hoạt động trong mọi bản phân phối linux miễn là bạn đã cài đặt wget. Như đã nói nếu bạn có sẵn curl hoặc lynx, vui lòng sử dụng thay thế. Bạn sẽ cần quyền root để cài đặt, vì vậy hãy sử dụngsudo apt-get install wget
saji89

13
Các lệnh với ifconfig chỉ hoạt động, nếu bạn không đứng sau NAT.
lukassteiner

1
chỉ sử dụng -wtùy chọn curl thay vì echo :)curl -w '\n' ident.me
drAlberT

3
Đề xuất này sử dụng đào là khá đẹp unix.stackexchange.com/questions/22615/...
binaryanomaly

4
Phiên bản cuối cùng không có dịch vụ bên ngoài chỉ hoạt động, nếu máy tính của bạn được kết nối trực tiếp với internet, điều này hiếm khi xảy ra, nếu không bạn chỉ nhận được địa chỉ IP cục bộ của mình.
rubo77

117

Yêu thích của tôi luôn luôn là:

curl ifconfig.me

đơn giản, dễ gõ.

Bạn sẽ phải cài đặt curl trước;)

Nếu ifconfig.me không hoạt động, hãy thử icanhazip.com và hoặc ipecho.net

curl icanhazip.com

hoặc là

curl ipecho.net

3
@ Z9iT, tôi mới kiểm tra cái này bây giờ. Có, nó sẽ xuất ip bên ngoài trong thiết bị đầu cuối của bạn.
saji89

7
Thời gian phản hồi từ ifconfig.medường như khá chậm hơn một chút ipecho.net.
vẽ Noakes

3
Nếu bạn không có curlnhưng có wget:wget -U curl -qO- ifconfig.me
Stéphane Chazelas

2
ifconfig.me dường như không trả lời :(
Asfand Qazi

1
@AsfandYarQazi - làm việc ở đây. Bạn có thể thử một trong những lựa chọn thay thế, icanhazip.com
Panther

60

icanhazip.com là yêu thích của tôi.

curl icanhazip.com

Bạn có thể yêu cầu IPv4 một cách rõ ràng:

curl ipv4.icanhazip.com

Nếu bạn không có, curlbạn có thể sử dụng wgetthay thế:

wget -qO- icanhazip.com

Cảm ơn! Tôi đã phải thử nhiều đề xuất ở trên cho đến khi tôi tìm thấy một số có khả năng IPv6. Thật đáng tiếc khi các dịch vụ như vậy thường vẫn chỉ là IPv4.
Vladimír Čunát

48

Tôi đã tìm thấy mọi thứ gây phiền nhiễu và chậm chạp, vì vậy tôi đã tự viết. Thật đơn giản và nhanh chóng.

API của nó là trên http://api.ident.me/

Ví dụ:

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

1
Ái chà, thật là nhanh!
Waldyrious

1
Tôi tìm thấy giải pháp icanhazip.com nhanh hơn và nó bao gồm một dòng mới trong đầu ra.
Tyler Collier

1
Vâng, gần đây nó đã thực sự nhanh hơn. Chỉ cần điều chỉnh giải pháp của tôi.
Pierre Carrier

2
Thanh danh! 2 năm và bạn vẫn đang duy trì nó. Làm tốt. "XÁC NHẬN TÔI", là những gì tôi nghĩ đến, khi tôi cần kiểm tra ip :)
Mohamel

aws nhanh hơn time curl http://checkip.amazonaws.com-> 0.91svs .241svì chúng ident.meta chỉ cầu nguyện aws không đi xuống;)
Avindra Goolcharan

42

Bạn có thể sử dụng yêu cầu DNS thay vì yêu cầu HTTP để tìm ra IP công khai của mình:

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

Nó sử dụng resolver1.opendns.commáy chủ dns để phân giải myip.opendns.comtên máy chủ ma thuật đến địa chỉ IP của bạn .


3
Điều này thực sự nhanh chóng. Tôi đã thực hiện một lần thực hiện khởi động, sau đó 10 lần thực hiện điều này và curl icanhazip.com. Trung bình cho curlphiên bản: 174ms. Trung bình cho phiên bản chỉ DNS: 9ms. ~ 19 lần nhanh hơn. Xem thêm: unix.stackexchange.com/a/81699/8383
Adam Monsen

1
@AdamMonsen Cảm ơn bạn đã liên kết. Điểm quan trọng của việc sử dụng DNS (như câu trả lời mà bạn đã liên kết nói) là phản hồi là tiêu chuẩn (và không có khả năng thay đổi) và dịch vụ (OpenDNS) có thể tồn tại lâu hơn hầu hết các lựa chọn thay thế http của nó. Thời gian cần thiết để thực hiện yêu cầu có thể bị che khuất bởi thời gian khởi động lệnh.
jfs

Vâng. Tôi sẽ không ngạc nhiên nếu curlbản thân nó chậm hơn dig. Ngay cả khi chúng được viết lại giống nhau nhất có thể, curlvẫn sẽ chậm hơn; nó sử dụng HTTP ( bao gồm DNS) và digchỉ sử dụng DNS.
Adam Monsen

22

Amazon AWS

curl http://checkip.amazonaws.com

Đầu ra mẫu:

123.123.123.123

Tôi thích nó bởi vì:

  • nó chỉ trả về IP bản rõ, không có gì khác
  • đó là từ một nhà cung cấp nổi tiếng không có khả năng sớm ngoại tuyến bất cứ lúc nào

18

Cái tôi đang sử dụng là:

wget -O - -q icanhazip.com

Có, bạn có thể có ip :-)


3
Tôi thích curl icanhazip.comđôi khi wgetlà duy nhất có sẵn, nhưng đôi khi cũng không wgetcó sẵn và curllà lựa chọn duy nhất của bạn (như OS / X). Dù bằng cách nào curl icanhazip.comthì cũng dễ như curl ifconfig.menhưng vui hơn nhiều ;-)
TryTryAgain

11

Nhập chính xác, nhấn vào Enternơi được chỉ định:

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

Điều này sẽ tự gửi một yêu cầu HTTP, sẽ trả lại IP của bạn ở cuối một HTTP/1.1 200 OK reply

Ví dụ đầu ra:

$ 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

6
Thật tuyệt, điều này hoạt động tốt, không phải cài đặt curl là một lợi thế đối với tôi: một lớp lót: printf "GET / plain HTTP / 1.1 \ nHOST: ipecho.net \ nBROWSER: web-kit \ n \ n" | nc ipecho.net 80
Ozone

9

Một cách nhanh khác (cũng có thể là nhanh nhất, tương đối)

curl ipecho.net/plain

9

Đối với điều này, STUN đã được phát minh. Là một khách hàng, bạn có thể gửi yêu cầu đến máy chủ STUN có sẵn công khai và yêu cầu trả lại địa chỉ IP mà nó nhìn thấy. Sắp xếp mức độ thấp whatismyip.com vì nó không sử dụng HTTP và không có máy chủ DNS được tạo thủ công thông minh nhưng giao thức STUN cực kỳ nhanh.

Sử dụng stunclient

Nếu bạn đã stunclientcài đặt ( apt-get install stuntman-clienttrên debian / ubfox), bạn chỉ cần làm:

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

nơi A.B.C.Dlà địa chỉ IP của máy tính của bạn trên mạng địa phương và W.X.Y.Zlà các máy chủ địa chỉ IP như các trang web nhìn thấy từ bên ngoài (và một trong những bạn đang tìm kiếm). Sử dụng sedbạn có thể giảm đầu ra ở trên chỉ còn một địa chỉ IP:

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

Tuy nhiên, câu hỏi của bạn là làm thế nào để tìm thấy nó bằng cách sử dụng dòng lệnh, có thể loại trừ bằng cách sử dụng máy khách STUN. Vì vậy, tôi tự hỏi ...

Sử dụng bash

Một yêu cầu STUN có thể được làm thủ công, được gửi đến một máy chủ STUN bên ngoài sử dụng netcatvà được sau xử lý sử dụng dd, hexdumpsednhư vậy:

$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/'

Tiếng vang xác định yêu cầu STUN nhị phân (0x0001 biểu thị Yêu cầu liên kết) có độ dài 8 (0x0008) với cookie 0xc00cee và một số nội dung được dán từ wireshark. Chỉ có bốn byte đại diện cho IP bên ngoài được lấy từ câu trả lời, được làm sạch và in.

Làm việc, nhưng không được khuyến khích sử dụng cho sản xuất :-)

PS Nhiều máy chủ STUN có sẵn vì đây là công nghệ cốt lõi của SIP và WebRTC. Sử dụng một từ Mozilla sẽ là quyền riêng tư an toàn nhưng bạn cũng có thể sử dụng một cái khác: danh sách máy chủ STUN


+1 cho công nghệ apropos geekiest và thực sự nhất. Truy vấn http hoạt động, đó là những gì tôi đã sử dụng trong suốt cuộc đời mình, nhưng tôi thích rằng thực sự đã có một số suy nghĩ được đặt vào câu hỏi. Tôi không biết điều này. Cảm ơn!
Mike S

7

Tôi có một dịch vụ ngu ngốc cho việc này bằng telnet. Một cái gì đó như thế này:

telnet myip.gelma.net

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

Hãy sử dụng nó.


5

Bạn có thể đọc một trang web chỉ sử dụng bash, mà không 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

Điều này kết hợp với checkip.amazonaws.comlà nhanh nhất đối với tôi
Avindra Goolcharan

1
@AvindraGoolcharan thử yêu cầu dns
jfs

2

Đối với những người trong chúng ta có quyền truy cập đăng nhập vào bộ định tuyến của mình, sử dụng tập lệnh để hỏi bộ định tuyến địa chỉ IP WAN của nó là cách hiệu quả nhất để xác định địa chỉ IP bên ngoài. Ví dụ, tập lệnh python sau đây in ra IP bên ngoài cho bộ định tuyến Medialink MWN-WapR300N của tôi:

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)

Lưu ý rằng điều này không an toàn lắm (như trường hợp thông tin đăng nhập và đăng nhập vào hầu hết các bộ định tuyến) và chắc chắn không thể di động (cần phải thay đổi cho mỗi bộ định tuyến). Tuy nhiên, nó rất nhanh và là một giải pháp hoàn toàn hợp lý trên mạng gia đình an toàn về mặt vật lý.

Để tùy chỉnh tập lệnh cho bộ định tuyến khác, tôi khuyên bạn nên sử dụng addon tamperdata trong firefox để xác định những yêu cầu HTTP cần thực hiện.


2
Bạn nên thử lấy địa chỉ IP của bộ định tuyến theo ngữ pháp. Ví dụ router = subprocess.check_output(['ip', '-o', 'ro', 'list', '0.0.0.0/0']).split()[2].
Cristian Ciupitu

2

Chúng sẽ nhận được các IP cục bộ:

ifconfig

hoặc cho đầu ra ngắn hơn:

ifconfig | grep inet

cũng thế

ip addr show

và có lẽ:

hostname -I

Điều này sẽ nhận được IP bên ngoài

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

NB Nếu bạn không nhớ cài đặt curl, điều này cũng:

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

1
ifconfig | sed -nre '/^[^ ]+/{N;s/^([^ ]+).*addr: *([^ ]+).*/\1,\2/p}'sẽ in các giao diện cục bộ và IP V4 tương ứng
Hannu

1
ifconfig | sed -nre '/^[^ ]+/{N;N;s/^([^ ]+).*addr: *([^ ]+).*addr: *([^ ]+).*/\1,\2,\3/p}'- IP v4 và v6.
Hannu

2

Nhiều bộ định tuyến gia đình có thể được truy vấn bởi 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

Sau đó, grep địa chỉ IP từ câu trả lời.

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

2

Nếu bạn đang sử dụng DD-WRT thì điều này hiệu quả với tôi:

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

hoặc là

curl -s -u your_ddwrt_username:your_ddwrt_password http://192.168.1.1 | grep "ipinfo" | awk -v FS="(IP: |</span)" '{print $2}'
  • Trong đó 192.168.1.1 là Địa chỉ IP LAN của Cổng / Bộ định tuyến của bộ định tuyến DD-WRT.

  • Thành phần -s có nghĩa là im lặng (tức là không hiển thị thông tin tiến trình cuộn tròn).

  • Ồ, tôi nên đề cập rằng tôi sử dụng ở trên với "DD-WRT v24-sp2 (01/04/15) std" .

1

Nếu bạn đã cài đặt lynx trong loại Ubuntu

lynx bot.whatismyipaddress.com

curl bot.whatismyipaddress.comlàm việc quá
Tomofumi

0

sử dụng ip!

ip addr show

sau đó tìm bộ điều hợp có liên quan (không phải lovà thường eth0) và tìm địa chỉ IP gần inet.


2
Câu hỏi là về các địa chỉ IP nội bộ không công khai
Wolf

0

Có thể tôi hơi muộn, nhưng inxi có thể làm điều đó khá dễ dàng.

Tải về inxi

sudo apt install inxi

Sau đó chạy lệnh sau

inxi -i

Ví dụ với thông tin của tôi bị chặn bằng cách sử dụng ztùy chọn sao chép và dán vào các trang web như thế này:

~$ 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

Nơi nó nói <filter>là nơi IP IP, IPv4, địa chỉ MAC của bạn, v.v.


-2

Đơn giản chỉ cần đưa ra một traceroute cho bất kỳ trang web hoặc dịch vụ ..

sudo traceroute -I google.com

Dòng 2 dường như luôn là địa chỉ IP công cộng của tôi sau khi nó vượt qua cổng bộ định tuyến của tôi.

user@user-PC ~ $ 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**

Vì vậy, thực hiện một lệnh bash.

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

Và đầu ra ...

(199.21.149.1)

Tôi không nghĩ dựa vào các tập lệnh PHP và sắp xếp là thực hành tốt.


Điều này thật thú vị, mặc dù rất chậm và không nhận được ip bên ngoài của tôi như thế này
rubo77

Câu trả lời này quá không chính xác để có ích. Trong môi trường công ty của tôi, tôi không nhận được địa chỉ IP của mình. Cách duy nhất nó hoạt động là nếu bạn hiểu cách các bộ định tuyến và chuyển mạch cục bộ của bạn được chế tạo, và thậm chí sau đó nó có thể không nằm trên dòng 2 tùy thuộc vào số bước nhảy cục bộ mà bạn nhảy qua. Không có cách nào để tạo ra một thuật toán mạch lạc từ kỹ thuật này, và có nhiều giải pháp khác ở đây đơn giản hơn và sẽ giúp bạn có câu trả lời thích hợp mỗi lần.
Mike S

Mặc dù nó có thể hoạt động trong một số cấu hình đặc biệt, nhưng tôi thực sự chưa bao giờ thấy IP bên ngoài của mình trong một traceroute. Nó thường là cổng của tôi (nếu tôi không đứng sau NAT) hoặc cổng của bộ định tuyến của tôi, nhưng chủ yếu là một số bộ định tuyến khác ở xa hơn.
mivk

bí danh ip = 'lynx --dump ipecho.net/plain '
phildobbin

-2

Một lệnh không có phụ thuộc ngoại trừ 8.8.8.8 là DNS GOogle:

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

Điều này chỉ cho bạn biết địa chỉ IP của giao diện gửi đi cục bộ của bạn.
guntbert

lệnh sẽ hiển thị địa chỉ IP công cộng nếu tôi chạy nó trên máy chủ đám mây. đó không phải là câu hỏi?
Rolf

Không, bạn thấy "máy chủ đám mây" ở đâu?
guntbert
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.