Bir yönlendiricinin arkasındaysam, genel IP adresimi komut satırından nasıl alabilirim?


37

Genel (WAN) IP adresimi komut satırından almamın bir yolu var mı? ISS'im tarafından atanan dinamik bir IP adresi olan bir yönlendiricinin (LAN ağı) arkasındayım.

Harici bir web servisi (gibi ifconfig.me) kullanarak çözümler gördüm , ancak harici bir servis olmadan yapıp yapamayacağımı bilmek istiyorum.


Lütfen ağ kurulumunuzla ilgili daha fazla ayrıntı ekleyebilir misiniz? Eğer bir yönlendirici / anahtar arkasında mısınız YAPAR internet erişimi ve yönlendirici / anahtar ISS den elde ettiğini WAN IP adresi tespit etmek için çalışıyoruz?
slm

@slm ISS tarafından yönlendiriciye atanan
ipi

Cevabımı eklediğim 3. yolu görün. WAN IP'nizi yönlendiricinizden almanın bir yolu olup olmadığını görmek isteyeceksiniz. Yönlendirici ne marka / model?
slm

Bir çeşit harici servis sorgulamanız gerekiyor. Genel olarak konuşursak, bir bilgisayar diğer bilgisayarların hangi IP adresinin bağlantılarını geldiğini göreceklerini bilmiyor.
David Schwartz

Yanıtlar:


27

Sisteminizde 2 ethernet cihazı olduğunu eth0ve eth1ve eth0LAN'ınıza bağlı olduğunu varsayalım, IP 192.168.1.X diyelim ve eth1cihazınız ISS'nize (WAN) bağlıysa, IP’nizi ifconfigalmak için aşağıdaki komutu kullanmak isteyeceksiniz. WAN tarafı.

NOT: İlk 2 yöntem, onları 2 ethernet aygıtına sahip bir bilgisayara karşı çalıştırdığınızı ve bunlardan birinin ISS'nize (kablolu modem ve / veya DSL modem) bağlı olduğunu varsaymaktadır. Bu senaryoda, ethernet cihazı (eth1) İnternet üzerindeki IP adresinizle (WAN IP) yapılandırılacaktır.

1. yol

                          +------------------------+
  +--------+    WAN IP    |   Computer that wants  |  LAN IP
  |Internet|--------------|     to know WAN IP     |------------
  +--------+  54.234.1.33 | +------+      +------+ | 192.168.1.1
                          +-| eth1 |------| eth0 |-+
                            +------+      +------+

% ifconfig eth1 | awk '/inet / { print $2 }' | sed -e s/addr://
54.234.1.33

ipKomutu da kullanabilirsiniz .

% ip addr show eth1 | awk '/inet/ {print $2}' | sed 's#/.*##'
54.234.1.33

2. yol

Bunu yalnızca LAN'da oturan bir sistemden bulmanız gerekirse, parola içermeyen bir ssh anahtarı ayarlayabilir ve WAN erişimi gibi sisteme uzaktan erişebilmesi için LAN makinenizdeki bir hesaba ekleyebilirsiniz.

                                                            +----------------+
  +--------+    WAN IP      +-------------+      LAN IP     | Computer that  |
  |Internet|----------------|remote-server|-----------------| wants to know  |
  +--------+  54.234.1.33  +----+-----+----+  192.168.1.x  +----+ WAN IP     |
                           |eth1|     |eth0|               |eth0|------------+
                           +----+     +----+               +----+

% ssh ruser1@remote-server "ifconfig eth1 | awk '/inet / { print \$2 }' | sed -e s/addr://"
54.234.1.33

3. yol

WAN erişimi olan kutuya giremiyorsanız ve Linksys veya Netgear kutusu gibi bir ev yönlendiricisi / anahtarı kullanıyorsanız. IP'yi bu cihazdan bir HTTP durum sayfası aracılığıyla alabilirsiniz. Bunu geçmişte de yaptım, bu whatismyip.com forumunda açıklananlara benzer bir şey .

                                                               192.168.1.2
                                                            +----------------+
  +--------+    WAN IP      +-------------+      LAN IP     | Computer that  |
  |Internet|----------------|router/switch|-----------------| wants to know  |
  +--------+  54.234.1.33   +-------------+   192.168.1.x  +----+ WAN IP     |
                              192.168.1.1                  |eth0|------------+
                                                           +----+

# something like this....

% wget -q -O - http://<username>:<password>@192.168.1.1/Status_Router.asp | grep "ipaddress" | cut -d" " -f2

NOT: Bu yaklaşım, sahip olduğunuz yönlendirici / anahtara, bir Linksys, Netgear, vb. Markanın olmasına bağlıdır. Her birinin üzerinde WAN IP'si olan kendine özgü bir sayfası olacak.

4. yol

WAN IP adresinizi geri bildirecek harici bir internet sitesine karşı sorgu gönderme.

NOT: Orijinal sorunun, bu yaklaşıma alternatifler aradıklarını belirttiğinin farkındayım, ancak bu cevabı tüm temelleri kapsayacak şekilde buraya koyuyorum.

                                                        +---------------+
  +-------------+   +--------+   +------+     LAN IP    | Computer that |
  |whatsmyip.com|---|Internet|---|router|---------------| wants to know |
  +-------------+   +--------+   +------+  192.168.1.x +----+ WAN IP    |
you're 54.234.1.33                                     |eth0|-----------+
                                                       +----+

# 1st server
% wget -qO - ipv4bot.whatismyipaddress.com
54.234.1.33

# 2nd server
% curl 'https://api.ipify.org?format=json'

{"ip":"54.234.1.33"}
% curl 'https://api.ipify.org?format=txt'
54.234.1.33

# 3rd server
% curl -s checkip.dyndns.org | sed 's#.*Address: \(.*\)</b.*#\1#'
54.234.1.33

Ek bilgi burada bulunabilir: NASIL : NASIL: Harici IP Adresini komut satırından kontrol edin


Sistemim bir yönlendiriciye bağlanmış ve intrnet'e bağlı gibi bir şey var
user61954

5
Doğrudan bağlı olmadığını söylediğinden beri, hiçbir eth*cihazda WAN IP yok. Yönlendiricisi ssh'yi desteklemediği sürece erişebilir ve ifconfig, bu işe yaramayacaktır. Aşağı oy değil, ama sadece bunu yapmaya çalışan herkes farkındadır.
AaronLS

Sorusunu tekrar okuyun. LAN erişimi olduğunu, sadece internet erişimi olmadığını, 1. maddeyi söylediğini söyledi. Madde # 2, ISS'sinden dinamik bir IP aldığını söylüyor, sadece LAN bağlantısıyla ve internet bağlantısıyla başka bir sisteme sahip olduğunu ya da interneti VEYA onu ve interneti kullanarak ev yönlendiricisi / anahtarı aldığını düşünüyorum.
slm

Katılanlar, bir yorum bırakmayı deneyin, bu cevap bugüne kadar en eksiksiz ve henüz insanlar aşağı oy kullanıyor. @ user61954 yorumunda bile bir yönlendiricinin arkasında olduğunu söyledi, bu yüzden tarif ettiğim yöntemlerden biri işe yarayacak.
slm

Ben oy kullandım. Ancak birinci ve ikinci yol çalışmaz, yalnızca yerel adres adresini döndürür. Teşekkürler!
Jared Burrows,

12

Sisteminizde yüklü curl varsa (çoğu yapar),

curl ifconfig.me

Hey, teşekkürler, bana bu yardım, sadece bir soru, "ifconfig.me" nedir ifconfig işlevini biliyorum, ama genellikle bununla değilim. Lütfen bana bu konuyu okumak veya açıklamak için bir link verebilir misiniz? - Güncelleme - soruyu okumadı. ups
Aby K

ifconfig.me size IP’nizi veren bir web sitesidir.
Rory,

ifconfig.me https'yi desteklemiyorsa, sahte olabilir. VPN'inizde olup olmadığını kontrol etmek için kullanmak iyi bir fikir değildir.
Dan Dascalescu

9

UPNP'li bir NAT Router'in arkasındayken, wan ip adresini saptamak için miniupnpc kullanabilirsiniz:

# debian/ubuntu setup: 
# sudo apt-get install miniupnpc

# get WAN IP address from UPNP router:
upnpc -s | grep ^ExternalIPAddress | cut -c21-

Bir komut dosyasında örneğin cron gibi kullanabilirsiniz:

#!/bin/bash
#
# In this example, lynx is used as http client. you could also use something else
# like wget etc.
# debian/ubuntu lynx setup: 
#
# apt-get install lynx
#

EXTIP=`upnpc -s | grep ^ExternalIPAddress | cut -c21-`
DDNSURL="http://your-ddns-service.com/update/my/ip/to/$EXTIP"
TFILE=/tmp/.WAN_IP
if [ -f $TFILE ]; then
        OXTIP=`head -1 $TFILE`
else
        touch $TFILE
        OXTIP="NULL"
fi
if [ "$EXTIP" != "$OXTIP" ]; then
        mv $TFILE "$TFILE~"
        echo "$EXTIP" > $TFILE
        lynx -source $DDNSURL > /dev/null
        echo "================================"
        date
        echo "WAN_IP = $EXTIP"
fi

5

Büyük olasılıkla, yönlendirici, harici bir servis kullanılmaması veya kullanılamaması durumunda (önceden bazı diğer cevaplar belirtildiği gibi) harici IP almanın bir yolunu sağlamalıdır. Dış hizmetler için, diğer cevapların çoğunda, bir web servisi kullanılır. Unix SE’deki bu cevap bunun yerine DNS kullanılmasını önerir.

Örneğin, kullanılarak digolan OpenDNS çözümleyici olarak:

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

+1, ancak günün sonunda curl ident.me, belirli bir hizmete güveniyorsak kullandığımızla aynıdır ( myip.opendns,comDNS sunucusu tarafından özel olarak
kastedilmiştir

4

Yönlendiricinizden ssh veya curl ile bilgi alın.

Dyndns'den genel ipimi istemek için curl kullanıyorum ancak böyle bir komut sizin için uygun değil gibi görünüyor?

curl http://checkip.dyndns.org 2> /dev/null| perl -pe 's,.*Address: (\d+\.\d+\.\d+\.\d+).*,$1,'


2

Maalesef, bir uzak servisle iletişim kurmayı gerektirmeyen NAT gibi mekanizmaları tespit etmenin bir yolu yoktur. NAT, doğası gereği, kırık hizmetlerin yanı sıra kullanıcıya tamamen şeffaftır ve NAT keşfi için standart bir protokol yoktur.

Ancak, harici hizmetler söz konusu olduğunda, hem IPv4 hem de IPv6 için kullanabileceğiniz hızlı ve basit bir yazmayı önermek zorundayım. kullanabileceğiniz en basit formu için curl ident.meve tam API http://api.ident.me/ adresinde belgelenmiştir.


1

Yönlendiriciniz NAT PMP'yi (Port Eşleme Protokolü) destekliyorsa , genel IP'nizi natpmp kullanarak alabilirsiniz.

Linp natpmp kütüphanesinde natpmpc adında bir komut satırı arayüzü var. Ubuntu'da , natpmp-utils paketinde. Yönlendiricim natpmp'ı desteklemiyor gibi görünüyor, bu yüzden natpmpc yardımcı programının genel IP adresinizi döndüreceğinden emin değilim.


0

Aradığınız linux komutu ifconfigdoğrudan internete bağlı olduğunuzu farz ediyor.

Değilse ve proxy'ler veya özel yönlendirme yoluyla erişiyorsanız, en kolay yol (diğerleri belirtildiği gibi) başka bir ana bilgisayara giriş yapmak / erişmek ve oradan kontrol etmektir.

Ayrıca, bu soruyu arkadaşça komşuluk sistemleri yöneticinizle görüşmek isteyebilirsiniz.


ifconfigkullanımdan kaldırıldı.
BatchyX

"traceroute komutu, ancak lanın yerel ipini verir, 192.168.1.1". Sanırım bir lan var. Bu nedenle bir yerlerde bir tür yönlendirici / ağ geçidi / nat bulunmalıdır. O zaman ifconfig, herkese açık bir ip adresi vermez, çünkü çalışana göre comp doğrudan internete bağlı değildir.

@BatchyX. Hangi işletim sistemini kullanıyorsunuz? Çalıştırdığım her sistem ifconfig'e sahip. Fedora, CentOS, Ubuntu, vb
slm

2
@ batchx: Peki bu bilgiyi nereden alıyorsunuz? Bu konuda seninle aynı fikirde değilim.
mdpc

1
@sim: Bir komut bulunduğundan, onaylanmadığı anlamına gelmez. Sadece ifconfigson sürüm tarihine bakın. Şimdi en ìproute2son sürüme bakın. Bir kaynak için, bkz: lartc.org/howto/lartc.iproute2.html#LARTC.IPROUTE2.WHY
BatchyX

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.