발신 웹 요청을하지 않고 외부 IP 주소를 볼 수 있습니까?


21

연결이 NAT 인 경우 아웃 바운드 웹 요청을하지 않고 외부 IP 주소를 볼 수 있습니까?

모든 OS (Windows, Linux 등)는 정상입니다.


7
HTTP 만 피하려고합니까, 아니면 나가는 트래픽을 전혀 보내지 않으려 고합니까? 유일한 범용 솔루션은 발신 트래픽을 보내는 것과 관련이 있지만 HTTP 일 필요는 없습니다.
Spiff

이것은 단순한 가상의 것이 었으므로 아웃 바운드 트래픽을 전혀 만들고 싶지 않았습니다.
Axel Persinger

2
네트워크 / 라우터가 엔터프라이즈 급 NAT 설정 뒤에 있다는 것입니까 (즉, ISP에서 개인 IP 주소를 얻는 중)? 그렇다면 공용 네트워크에 접속하지 않고 whatsmyip.com 또는 이와 유사한 서비스와 같이 본질적으로 "돌아보기"없이 공용 IP 주소를 찾을 수 있다고 생각할 방법이 없습니다.
acejavelin

내가했던 해킹은 내 라우터를 확인하는 것이 었습니다. 실제로 어떤 웹 기반 서비스가 내 IP를 올바르게 감지하지 못하기 때문에 실제로 스크래핑하는 더러운 스크립트가있었습니다. 내 ISP는 정말 재미 있습니다.
Journeyman Geek

2
고객 세부 사항으로 ISP에 전화를 걸 수 있습니다. 인터넷 연결과 컴퓨터가 필요하지 않습니다.
토마스

답변:


24

컴퓨터가 NAT 뒤에있는 경우 라우터의 외부 IP 주소를 볼 수 있지만 라우터에 대한 관리 액세스 권한이 필요합니다.

라우터는 외부 IP 주소를 알고 있으므로 구성 페이지에 액세스하면 해당 IP 주소를 찾을 수 있습니다. 이 방법에는 웹 브라우저를 제외한 특수 도구가 필요하지 않습니다.

정보를 얻기위한 도구가 필요한 다른 프로토콜 :

@dirkt 사용자가 테스트 한대로 모든 방법은 IPv4에서만 작동합니다 (PCP 제외).


@NicHartley 쌍곡선은 분명히 풍자에 속할 수 있지만, 풍자 음은 어조 나 조롱하려는 의도에 더 가깝습니다. 둘 다 사람과 텍스트 형식이 다르게 전달됩니다. 즉, 모든 프로토콜은 IP를 사용하여 IP 주소를 결정해야하지만 (사용하지 않는 것을 결정할 수 없기 때문에) 팽팽한 요구 사항이지만 IP 위에 구축 된 프로토콜은 여전히 ​​다른 프로토콜이며 이론적으로 여러 가지를 사용하여 그 목적을 달성 할 수 있습니다. Lightness의 요점은 웹 요청의 요구 사항에 대한 주장을 반대하는 것이 었습니다.
eques

2
"다른 방법으로는 외부 웹 요청을해야합니다."웹 (예 : HTTP)은 필요하지 않지만 가장 쉽게 파악할 수 있습니다.
eques

1
다른 답변에서 언급했듯이 uPnP, NAT-PMP 및 PCP는 구성 페이지에 액세스하는 것 외에도 라우터에서 정보를 얻는 다른 방법입니다. 당신이 말한대로, "구성 페이지에 액세스하는 것 외에 다른 방법은 웹 요청을해야합니다." 올바른 것은 "라우터에서 정보를 얻는 것 외에 다른 방법은 필요하고 아웃 바운드 연결을 시도합니다"(웹 요청 일 필요는 없음)입니다.
dirkt

@dirkt : UPnP의 경우 확신이 없습니다. NAT-PMP IPv4에서만 작동한다고 생각합니다. IPv6 네트워크의 PCP는 IPv6 접두사를 반환하며 더 많은 작업을 수행 할 수 있지만 일반적으로 상용 라우터에서는 구현되지 않습니다.
harrymc

1
@harrymc : Fritzbox의 UPnP 서비스 엔드 포인트는 WANIPConn1/GetExternalIPAddress입니다. 올바른 주소를 성공적으로 반환했습니다.
dirkt

12

일부 NAT에서 작동하는 몇 가지 방법이 있지만 모든 곳에서 작동하는 것은 아닙니다.

uPnP, NAT-PMP 및 PCP (범용 플러그 앤 플레이, NAT 포트 매핑 프로토콜 및 포트 제어 프로토콜)에는 모두 호환되는 NAT 게이트웨이에 공개 주소를 묻는 방법이 있지만 모든 NAT가 이러한 프로토콜을 지원하는 것은 아닙니다. 가정용 또는 라우터 급 NAT 솔루션보다 홈 게이트웨이 라우터에서 지원이 더 일반적입니다.

NAT 뒤에서 자신을 발견 할 때 트래픽을 변환하는 퍼블릭 IP 주소를 확인하는 유일한 방법은 나가는 트래픽을 퍼블릭 호스트에게 보내어 NAT가 변환되지 않는 방식으로 다시보고하는 것입니다. 트래픽이 발생한 것으로 보입니다. 웹 기반 서비스를 사용하는 것이 한 가지 방법이지만 클라우드 서버 인스턴스에 sshdSSH로 연결하여 SSH 세션의 출처를 확인하는 방법도 있습니다.


8
또한 시스템이 이중 (또는 그 이상) NAT 뒤에있는 경우 UPnP 등은 잘못된 결과를 제공 할 수 있습니다.
user71659

@ user71659 그런 종류의 요청에 사용할 수 있도록 가장 바깥 쪽 NAT로 자동 라우팅되는 애니 캐스트 주소가 있는지 궁금합니다.
kasperd

1
@kasperd 모든 NAT는 그것이 가장 바깥 쪽 NAT라고 생각합니다. 모든 NAT 외부에 자동으로 라우팅되는 IP가 있습니다. 이를 공개 IP라고합니다.
user253751

1
@ user20574 아니요, NAT는 그런 식으로 생각하지 않으며 대부분 신경 쓰지 않습니다. 그러한 애니 캐스트 주소가 정의되어야한다면 표준은 NAT가 IP를 자신에게 할당 할 때와 그렇지 않을 때도 정의해야합니다. 이에 대한 답은 외부 IP가 RFC 1918 또는 RFC 6598에있는 경우 NAT는 애니 캐스트 주소를 자신에게 할당하지 않습니다.
kasperd

8

"웹 요청"범주에 속하지 않는 DNS 요청을 사용할 수 있습니다.

nslookup myip.opendns.com resolver1.opendns.com

1
을 사용할 수도 있습니다 dig +short @8.8.8.8 o-o.myaddr.l.google.com txt | grep edns. 다음 명령을 찾았습니다 : groups.google.com/d/msg/public-dns-discuss/uyzmMcHQBE0/…
kasperd

당신의 nsslookup명령이 나에게 실패합니다. 나는 얻는다 Server: resolver1.opendns.com Address: 2620:119:35::35#53 ** server can't find myip.opendns.com: NXDOMAIN
kasperd

1
@kasperd : IPv4에서만 작동합니다. 죄송합니다. digWindows에 없기 때문에 피 했습니다. myaddr구글 에 관한 좋은 지적 이지만, 나는 그것을 몰랐다! 나는 Windows nslookup와 동등한 것 같아요nslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
Mehrdad

IPv4와 IPv6이 모두있는 시스템에서이 명령을 실행 했으므로 실제로 IPv4를 지원한다면 제대로 작동했을 것입니다. 문제는 분명히 nslookup전송에 사용할 IP 버전을 지시 할 수는 없지만 OpenDNS가하는 방식은 반드시해야한다는 것을 의미합니다. 그렇지 않으면 nslookup전송에 사용할 IP 버전을 예측 하고 그에 따라 A 또는 AAAA를 요청해야합니다. 당신이 붙어 있다면 당신은 nslookup구글과 같은 다른 공급자를 사용할 수 있습니다. 그러나 응답에서 여전히 하나의 프로토콜 버전 만 가져 오며 어떤 버전을 선택할 수 없습니다.
kasperd

나는 테스트 nslookup -type=txt o-o.myaddr.l.google.com ns3.google.com했고 실제로 작동합니다. 그러나 IPv4와 IPv6이 모두 있으면 볼 수있는 것을 선택할 수 없습니다. IPv6 주소가 표시 될 가능성이 가장 높으며 NAT의 IPv4 주소를 알고 싶어서 사용하고있을 가능성이 높습니다. 이 문제를 해결하려면 IPv4 전용 이름과 IPv6 전용 이름을 가진 서비스를 사용해야하며 NAT64 문제도 해결해야합니다.
kasperd

7

기존 답변에 한 점을 추가하고 싶습니다.

또한 네트워크 복잡성에 따라 다릅니다. 컴퓨터가 여러 외부 IP 주소가있는 네트워크 내에 있고 회선의 어딘가에있는 라우터가 일부 기준 (예 : 대상 IP 주소 또는 시간)에 따라 인터넷으로 트래픽을 전송합니다 (예 : 하나의 업 링크 채널은 밤이나 다른 이유로 저렴합니다.)

따라서 "외부 IP 주소"개념을 완성하려면 주소가 외부인 대상 지점을 정의해야합니다.

아래 예에서 Router #2NAT를 수행하고 업 링크로 트래픽을 전송할 수 있으며 수신 호스트는에 대한 다른 외부 IP 주소를 볼 수 있습니다 Host.

또는 특정 대상 (예 host1.example.com:)이 항상을 통해 라우팅 Uplink A되고 호스트가 host2.example.com항상을 통해 라우팅 될 수 Uplink B있습니다. 그래서, 그 호스트에서 볼 수 있듯이 외부 IP 주소가 다를 수가 제공됩니다 Uplink AUplink B다른 ISP가 있습니다.

   Uplink A                                  Uplink B
-------------                             -------------
      |                                         |
      |                                         |
      |     192.168.1.1         192.168.50.50   |
      |               -----------               |
      |---------------|Router #2|---------------|
                      -----------
                           |  192.168.100.1
                           |
                           |  192.168.100.2
                      -----------
                      |Router #1|
                      -----------
                           |  192.168.200.1
                           |
                           |  192.168.200.2
                      -----------
                      |   Host  |
                      -----------

따라서 트래픽을 전송하면보다 안정적인 결과를 얻을 수 있습니다.


4

HTTP 대신 DNS를 사용할 수 있습니다. 예를 들어 다음을 사용할 수 있습니다.

dig +short TXT o-o.myaddr.l.google.com

여기에는 사용중인 DNS 서버의 유니 캐스트 주소가 표시되고 EDNS를 지원하는 경우 잘릴 수 있지만 IP 주소도 표시됩니다.

전체 IP 주소를 얻으려면 로컬 DNS 서버를 건너 뛰고 위 요청을 ns {1,2,3,4} .google.com으로 직접 보낼 수 있습니다.

dig +short TXT o-o.myaddr.l.google.com @ns3.google.com

당신은 당신이 사용할 수있는 특정 프로토콜 버전에 IP 주소를보고 싶다면 -6-4:

dig -6 +short TXT o-o.myaddr.l.google.com @ns3.google.com
dig -4 +short TXT o-o.myaddr.l.google.com @ns3.google.com

원하는 경우 OpenDNS를 사용할 수도 있습니다. OpenDNS는이를 위해 TXT 레코드를 사용하지 않고 A 및 AAAA 레코드를 사용하므로 원하는 프로토콜 버전을 지정해야합니다.

dig -6 +short AAAA myip.opendns.com @resolver2.opendns.com
dig -4 +short A myip.opendns.com @resolver2.opendns.com

트래픽이 프로토콜 변환을 거치면 다른 결과를 얻거나 전혀 얻지 못할 수 있습니다. NAT64 뒤의 컴퓨터에서 테스트 한 결과 NAT64의 IPv4 주소가 아닌 위의 명령으로 내 IPv6 주소를 볼 수있었습니다.

이 답변은 이러한 소스 1 2 3 과 내 자신의 약간의 연구를 기반으로합니다 .


2

웹은 일반적으로 HTTP가 귀하의 질문의 의미 인 경우 HTTP를 의미하며, 예를 들어 "NAS의 세션 트래버스 유틸리티"를 나타내는 STUN ( Wikipedia Article )을 사용할 수 있습니다 .

주석에서 강조 표시되었으므로 외부 IP가 여러 개있을 수 있습니다. 또한 무선 연결이 점점 일반화되면서 (4G) 라우터가보고 한 IP 주소가 공용 주소가되지는 않습니다. ISP가 로컬 라우터에 개인 IP를 제공하고 나중에 네트워크를 떠날 때 공용 IP로 1 : 1 변환되는 일부 국가의 광섬유 연결에 대한 시나리오를 충족했습니다.

따라서 귀하의 질문이 "네트워크에서 패킷을 보내지 않고 내 공개 IP를 찾을 수 있습니까?"라면 상황에 따라 다를 수 있지만 100 % 증거 솔루션은 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.