Câu hỏi Lệnh để xác định IP công cộng của tôi?


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


526
2018-01-16 11:50


gốc


"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 cộng bạn của tôi ... dynDNS chi phí rất nhiều và không có ip công việc khó khăn nhưng tình hình không cho phép điều đó ... dù sao câu hỏi đã được trả lời .. cảm ơn đề nghị của bạn - Z9iT
PS duckduckgo.com/?q=ip (không có dòng lệnh, nhưng không có anh trai lớn nào G) - Campa
Có lẽ đây phải là một câu hỏi riêng, 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. Bây giờ, tôi chỉ sử dụng các câu trả lời sau trong một crontab với notify-send. - PJ Brunet


Các câu trả lời:


Nếu bạn không ở phía sau một 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 đang ở phía sau một 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 curl hoặc là wget và trích xuất thông tin bạn cần từ nó:

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

hoặc ngắn hơn

curl ipinfo.io/ip

750
2018-01-16 11:56



ty - ngay sau khi tôi đăng, tôi nhận ra rằng trước tiên tôi không trả lời câu hỏi: trông như thế 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
chắc chắn - bạn có thể thêm nó vào câu trả lời của bạn - kfmfe04
Để làm rõ: Đó là một hack, và một cái rất xấu xí ở đó, vì vậy tôi đã làm một chỉnh sửa để làm cho nó đơn giản và một cái gì đó mà mọi người có thể nhớ. - jrg♦
Exacly như Giovanni P nói. OP nên thay đổi anwser được chấp nhận. - loostro
curl -s ipinfo.io/ip - chao


Để 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ũng là ifconfig các giả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 NAT. hai phương pháp đã được thảo luận dưới đây một cách chi tiết.

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 hoặc công cụ tải xuống dòng lệnh. Vì wget có sẵn theo mặc định trong Ubuntu, chúng ta có thể sử dụng nó.
Để tìm ip của bạn, sử dụng-

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

Lịch sự:

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

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

$ curl ipecho.net/plain

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

$ curl ipecho.net/plain ; echo

Phương thức nhanh hơn (được cho là nhanh nhất) sử dụng dig với OpenDNS làm người giải quyết:

Các câu trả lời khác ở đây tất cả đi qua HTTP đến một máy chủ từ xa. Một 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 của họ, đưa quảng cáo lên, có thể thay đổi   định dạng đầu ra, vv).

  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à nhìn chung   sau hơn bất kỳ dịch vụ HTTP mới nào của whatismyip.com hiện nay nóng.
  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 sẽ nhanh hơn (chỉ vài giây vi mô).

Sử dụng tính năng đào với OpenDNS làm trình giải quyết:

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

111.222.333.444

Được sao chép từ:  https://unix.stackexchange.com/a/81699/14497

Tìm IP bên ngoài mà không 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 mình

Nhập thông tin 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}'

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

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

Gõ như sau trong thiết bị đầu cuối của bạn (điều này sẽ có 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 }'

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

N.B: Các đầu ra mang tính biểu thị và không có thật.

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

CẬP NHẬT 

  1. LANG=c đã được thêm vào ifconfig dựa trên các tập quán, để nó luôn cung cấp cho đầu ra tiếng Anh, bất kể thiết lập miền địa phương.

364
2018-06-01 12:10



@ Z9iT, Chắc chắn .. Nó sẽ làm việc trong bất kỳ bản phân phối Linux nào miễn là bạn đã cài đặt wget. Như đã nói nếu bạn có curl hoặc lynx đã có sẵn, hãy sử dụng nó thay thế. Bạn sẽ cần quyền root để cài đặt để sử dụng sudo apt-get install wget - saji89
Các lệnh với ifconfig chỉ hoạt động, nếu bạn không đứng sau NAT. - lukassteiner
chỉ dùng -w tùy chọn curl thay vì echo :) curl -w '\n' ident.me - drAlberT
Đề xuất này bằng cách sử dụng đào là khá tốt đẹp unix.stackexchange.com/questions/22615/… - binaryanomaly
@saji ifconfig nếu lỗi thời, hãy sử dụng iproute2 ; ^). Lệnh sẽ là ip -o -4 a s eth0 | awk '{sub(/\/.*/, "", $4);print $4}'. - bufh


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

curl ifconfig.me

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

Bạn sẽ phải cài đặt curl đầu tiên;)

Nếu ifconfig.me là xuống hãy thử icanhazip.com và hoặc ipecho.net

curl icanhazip.com

hoặc là

curl ipecho.net

103
2018-06-01 12:41



@ Z9iT, tôi vừa kiểm tra điều này ngay 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
Thời gian phản hồi từ ifconfig.me có vẻ hơi chậm hơn một chút ipecho.net. - Drew Noakes
Nếu bạn không có curl nhưng có wget: wget -U curl -qO- ifconfig.me - Stéphane Chazelas
ifconfig.me dường như không phản hồi :( - Asfand Qazi
@AsfandYarQazi - làm việc ở đây. Bạn có thể thử một trong các thay thế, icanhazip.com - Panther


icanhazip.com Là sở 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ó curl bạn có thể dùng wget thay thế:

wget -qO- icanhazip.com

55
2018-06-01 17:23



thử ipv4.icanhazip.com - yprez
IPv4: curl ipv4.icanhazip.com     IPv6: curl ipv6.icanhazip.com - Peter
Busybox không có curl, sử dụng thay vào đó: wget -qO- http://icanhazip.com - Hengjie
đây là lệnh bash-only: exec 3<>/dev/tcp/icanhazip.com/80 && echo -e 'GET / HTTP/1.0\n' >&3 && cat <&3 - jfs
ipv6.icanhazip.com dường như không hoạt động nữa. - Hibou57


Tôi đã tìm thấy tất cả mọi thứ để được gây phiền nhiễu và chậm, vì vậy tôi đã viết của riêng tôi. Nó đơn giản và nhanh chóng.

API của nó đang bật http://api.ident.me/

Ví dụ:

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

44
2018-01-03 15:49



Woah, đó là có thật không Nhanh! - waldyrious
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
Vâng, nó thực sự nhanh hơn gần đây. Chỉ cần tinh chỉnh giải pháp của tôi. - Pierre Carrier
Thanh danh! 2 năm và bạn vẫn duy trì nó. Làm tốt. "IDENTify ME", là những gì đến với tâm trí của tôi, khi tôi cần kiểm tra ip :) - Mohnish
@PierreCarrier v6.ident.me không hoạt động - SebMa


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

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

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


37
2018-02-27 15:07



Đây là có thật không Nhanh. Tôi đã thực hiện một lần khởi động, sau đó thực hiện 10 lần và curl icanhazip.com. Trung bình cho curl phiên bản: 174ms. Trung bình cho phiên bản chỉ có DNS: 9ms. ~ 19x nhanh hơn. Xem thêm: unix.stackexchange.com/a/81699/8383 - Adam Monsen
@AdamMonsen Cảm ơn bạn đã liên kết. Điểm sử dụng DNS (như câu trả lời mà bạn đã liên kết nói) là đáp ứng là tiêu chuẩn (và không thể thay đổi) và dịch vụ (OpenDNS) có thể dài hơn hầu hết các lựa chọn thay thế của nó. Thời gian cần để 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 curl bản thân nó chậm hơn dig. Ngay cả khi chúng được viết lại càng giống càng tốt, curl vẫn sẽ chậm hơn; nó sử dụng HTTP (kể cả DNS) và dig chỉ sử dụng DNS. - Adam Monsen


Người tôi đang sử dụng là:

wget -O - -q icanhazip.com

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


18
2018-01-16 14:20



tôi thích curl icanhazip.com đôi khi wget là người duy nhất có sẵn, nhưng đôi khi không wget cũng có sẵn và curl là lựa chọn duy nhất của bạn (như OS / X). Dù bằng cách nào curl icanhazip.com gần như dễ dàng như curl ifconfig.me nhưng nhiều điều thú vị hơn ;-) - TryTryAgain


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ả lại IP nguyên bản, không có gì khác
  • nó là từ một nhà cung cấp nổi tiếng mà không có khả năng đi offline bất cứ lúc nào

16
2017-12-21 22:06





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

telnet ipecho.net 80Đi vào
GET /plain HTTP/1.1Đi vào
HOST: ipecho.net  Đi vào
BROWSER: web-kitĐi vào
Đi vào

Việc này sẽ gửi yêu cầu HTTP theo cách thủ công, điều này 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

12
2017-07-02 06:38



Nice, điều này làm việc tốt, không phải cài đặt curl là một lợi thế cho 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