명령 줄에서 공용 (WAN) IP 주소를 얻는 방법이 있습니까? ISP가 할당 한 동적 IP 주소를 가진 라우터 (LAN 네트워크) 뒤에 있습니다.
외부 웹 서비스 (예 :)를 사용하는 솔루션을 보았지만 ifconfig.me
외부 서비스없이 수행 할 수 있는지 알고 싶습니다.
명령 줄에서 공용 (WAN) IP 주소를 얻는 방법이 있습니까? ISP가 할당 한 동적 IP 주소를 가진 라우터 (LAN 네트워크) 뒤에 있습니다.
외부 웹 서비스 (예 :)를 사용하는 솔루션을 보았지만 ifconfig.me
외부 서비스없이 수행 할 수 있는지 알고 싶습니다.
답변:
시스템을 가정하면 2 개 이더넷 장치를 가지고, eth0
그리고 eth1
및 eth0
LAN에 연결되어 IP를 192.168.1.X하고 말할 eth1
장치가 다음 사용하려는거야 당신의 ISP (WAN)에 연결 ifconfig
을 위해 IP를 얻기 위해 명령을 WAN 쪽.
참고 : 첫 번째 2 가지 방법은 2 개의 이더넷 장치가있는 컴퓨터에 대해 실행 중이고 그 중 하나가 ISP (케이블 모뎀 및 / 또는 DSL 모뎀)에 연결되어 있다고 가정합니다. 이 시나리오에서는 이더넷 장치 (eth1)가 인터넷상의 IP 주소 (WAN IP)로 구성됩니다.
첫번째 방법
+------------------------+
+--------+ 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
ip
명령을 사용할 수도 있습니다 .
% ip addr show eth1 | awk '/inet/ {print $2}' | sed 's#/.*##'
54.234.1.33
두 번째 방법
LAN에만있는 시스템에서이 정보를 찾아야하는 경우 암호가없는 ssh 키를 설정하고이를 LAN 시스템의 계정에 추가하여 WAN 액세스와 같이 시스템에 원격으로 액세스 할 수 있습니다.
+----------------+
+--------+ 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
세번째 방법
WAN 액세스가 가능한 상자에 ssh를 연결할 수없고 Linksys 또는 Netgear 상자와 같은 홈 라우터 / 스위치를 사용중인 경우. HTTP 상태 페이지를 통해 해당 장치에서 IP를 가져올 수 있습니다. 과거 에도이 작업을 수행했습니다 . 이 whatismyip.com 포럼 게시물에 설명 된 것과 비슷한 내용 입니다.
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
참고 : 이 방법은 Linksys, Netgear 등 브랜드에 관계없이 사용중인 라우터 / 스위치에 따라 크게 달라집니다. 각각에는 WAN IP가있는 고유 한 페이지가 있습니다.
네번째 방법
WAN IP 주소를 다시보고하는 외부 인터넷 사이트에 대해 쿼리를 보냅니다.
참고 : 나는 원래의 질문에 그들이이 접근법에 대한 대안을 찾고 있다고 언급했지만이 답변이 모든 기반을 포함하도록 여기에 넣었습니다.
+---------------+
+-------------+ +--------+ +------+ 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
추가 정보는 여기에 있습니다 : HOWTO : 커맨드 라인에서 외부 IP 주소를 확인하십시오
eth*
장치도 WAN IP 를 갖지 않습니다 . 라우터가 ssh를 지원하지 않으면 액세스 권한이 있으며 ifconfig이면 작동하지 않습니다. downvoting이 아니라 이것을 시도하는 사람은 누구나 알고 있습니다.
시스템에 컬이 설치된 경우 (대부분의 경우)
curl ifconfig.me
UPNP가있는 NAT 라우터 뒤에있는 경우 miniupnpc를 사용하여 wan ip 주소를 감지 할 수 있습니다.
# debian/ubuntu setup:
# sudo apt-get install miniupnpc
# get WAN IP address from UPNP router:
upnpc -s | grep ^ExternalIPAddress | cut -c21-
cron과 같은 스크립트에서 다음과 같이 사용할 수 있습니다.
#!/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
대부분의 경우 외부 서비스를 사용할 수 없거나 사용할 수없는 경우 (다른 답변이 이미 표시된 것처럼) 라우터가 외부 IP를 얻는 방법을 제공해야합니다. 외부 서비스의 경우 대부분의 다른 답변에서 웹 서비스가 사용됩니다. Unix SE 에서이 답변 은 DNS를 대신 사용하는 것이 좋습니다.
dig +short myip.opendns.com @resolver1.opendns.com
curl ident.me
우리가 특정 서비스에 의존 하는 것과 같은 사용 ( myip.opendns,com
DNS 서버 에서 특수한 경우)
불행히도 원격 서비스 연결과 관련이없는 NAT와 같은 메커니즘을 탐지 할 수있는 방법이 없습니다. NAT는 본질적으로 손상된 서비스 외에 사용자에게 완전히 투명하며 NAT 검색을위한 표준 프로토콜이 없습니다.
그러나 외부 서비스와 관련하여 필자는 필자가 작성한 빠르고 간단한 ident.me를 제안해야합니다. ident.me는 IPv4와 IPv6 모두에 사용할 수 있습니다. 가장 간단한 형태로 사용할 수 curl ident.me
있으며 전체 API는 http://api.ident.me/에 문서화되어 있습니다.
당신이 찾고있는 리눅스 명령 ifconfig
은 인터넷에 직접 연결되어 있다고 가정합니다.
그렇지 않은 경우 프록시 또는 특수 라우팅을 통해 액세스하는 경우 다른 호스트가 나타내는 것처럼 가장 쉬운 방법은 다른 호스트에 로그인 / 액세스하여 호스트에서 확인하는 것입니다.
또한이 질문에 대해 친절한 이웃 시스템 관리자와상의 할 수도 있습니다.
ifconfig
더 이상 사용되지 않습니다.
ifconfig
최신 버전 날짜입니다. 이제 ìproute2
최신 릴리스를보십시오. 출처는 lartc.org/howto/lartc.iproute2.html#LARTC.IPROUTE2.WHY