연결이 NAT 인 경우 아웃 바운드 웹 요청을하지 않고 외부 IP 주소를 볼 수 있습니까?
모든 OS (Windows, Linux 등)는 정상입니다.
연결이 NAT 인 경우 아웃 바운드 웹 요청을하지 않고 외부 IP 주소를 볼 수 있습니까?
모든 OS (Windows, Linux 등)는 정상입니다.
답변:
컴퓨터가 NAT 뒤에있는 경우 라우터의 외부 IP 주소를 볼 수 있지만 라우터에 대한 관리 액세스 권한이 필요합니다.
라우터는 외부 IP 주소를 알고 있으므로 구성 페이지에 액세스하면 해당 IP 주소를 찾을 수 있습니다. 이 방법에는 웹 브라우저를 제외한 특수 도구가 필요하지 않습니다.
정보를 얻기위한 도구가 필요한 다른 프로토콜 :
@dirkt 사용자가 테스트 한대로 모든 방법은 IPv4에서만 작동합니다 (PCP 제외).
WANIPConn1/GetExternalIPAddress
입니다. 올바른 주소를 성공적으로 반환했습니다.
일부 NAT에서 작동하는 몇 가지 방법이 있지만 모든 곳에서 작동하는 것은 아닙니다.
uPnP, NAT-PMP 및 PCP (범용 플러그 앤 플레이, NAT 포트 매핑 프로토콜 및 포트 제어 프로토콜)에는 모두 호환되는 NAT 게이트웨이에 공개 주소를 묻는 방법이 있지만 모든 NAT가 이러한 프로토콜을 지원하는 것은 아닙니다. 가정용 또는 라우터 급 NAT 솔루션보다 홈 게이트웨이 라우터에서 지원이 더 일반적입니다.
NAT 뒤에서 자신을 발견 할 때 트래픽을 변환하는 퍼블릭 IP 주소를 확인하는 유일한 방법은 나가는 트래픽을 퍼블릭 호스트에게 보내어 NAT가 변환되지 않는 방식으로 다시보고하는 것입니다. 트래픽이 발생한 것으로 보입니다. 웹 기반 서비스를 사용하는 것이 한 가지 방법이지만 클라우드 서버 인스턴스에 sshd
SSH로 연결하여 SSH 세션의 출처를 확인하는 방법도 있습니다.
"웹 요청"범주에 속하지 않는 DNS 요청을 사용할 수 있습니다.
nslookup myip.opendns.com resolver1.opendns.com
dig +short @8.8.8.8 o-o.myaddr.l.google.com txt | grep edns
. 다음 명령을 찾았습니다 : groups.google.com/d/msg/public-dns-discuss/uyzmMcHQBE0/…
nsslookup
명령이 나에게 실패합니다. 나는 얻는다 Server: resolver1.opendns.com
Address: 2620:119:35::35#53
** server can't find myip.opendns.com: NXDOMAIN
dig
Windows에 없기 때문에 피 했습니다. myaddr
구글 에 관한 좋은 지적 이지만, 나는 그것을 몰랐다! 나는 Windows nslookup
와 동등한 것 같아요nslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
nslookup
전송에 사용할 IP 버전을 지시 할 수는 없지만 OpenDNS가하는 방식은 반드시해야한다는 것을 의미합니다. 그렇지 않으면 nslookup
전송에 사용할 IP 버전을 예측 하고 그에 따라 A 또는 AAAA를 요청해야합니다. 당신이 붙어 있다면 당신은 nslookup
구글과 같은 다른 공급자를 사용할 수 있습니다. 그러나 응답에서 여전히 하나의 프로토콜 버전 만 가져 오며 어떤 버전을 선택할 수 없습니다.
nslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
했고 실제로 작동합니다. 그러나 IPv4와 IPv6이 모두 있으면 볼 수있는 것을 선택할 수 없습니다. IPv6 주소가 표시 될 가능성이 가장 높으며 NAT의 IPv4 주소를 알고 싶어서 사용하고있을 가능성이 높습니다. 이 문제를 해결하려면 IPv4 전용 이름과 IPv6 전용 이름을 가진 서비스를 사용해야하며 NAT64 문제도 해결해야합니다.
기존 답변에 한 점을 추가하고 싶습니다.
또한 네트워크 복잡성에 따라 다릅니다. 컴퓨터가 여러 외부 IP 주소가있는 네트워크 내에 있고 회선의 어딘가에있는 라우터가 일부 기준 (예 : 대상 IP 주소 또는 시간)에 따라 인터넷으로 트래픽을 전송합니다 (예 : 하나의 업 링크 채널은 밤이나 다른 이유로 저렴합니다.)
따라서 "외부 IP 주소"개념을 완성하려면 주소가 외부인 대상 지점을 정의해야합니다.
아래 예에서 Router #2
NAT를 수행하고 업 링크로 트래픽을 전송할 수 있으며 수신 호스트는에 대한 다른 외부 IP 주소를 볼 수 있습니다 Host
.
또는 특정 대상 (예 host1.example.com
:)이 항상을 통해 라우팅 Uplink A
되고 호스트가 host2.example.com
항상을 통해 라우팅 될 수 Uplink B
있습니다. 그래서, 그 호스트에서 볼 수 있듯이 외부 IP 주소가 다를 수가 제공됩니다 Uplink A
및 Uplink 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 |
-----------
따라서 트래픽을 전송하면보다 안정적인 결과를 얻을 수 있습니다.
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 주소를 볼 수있었습니다.
웹은 일반적으로 HTTP가 귀하의 질문의 의미 인 경우 HTTP를 의미하며, 예를 들어 "NAS의 세션 트래버스 유틸리티"를 나타내는 STUN ( Wikipedia Article )을 사용할 수 있습니다 .
주석에서 강조 표시되었으므로 외부 IP가 여러 개있을 수 있습니다. 또한 무선 연결이 점점 일반화되면서 (4G) 라우터가보고 한 IP 주소가 공용 주소가되지는 않습니다. ISP가 로컬 라우터에 개인 IP를 제공하고 나중에 네트워크를 떠날 때 공용 IP로 1 : 1 변환되는 일부 국가의 광섬유 연결에 대한 시나리오를 충족했습니다.
따라서 귀하의 질문이 "네트워크에서 패킷을 보내지 않고 내 공개 IP를 찾을 수 있습니까?"라면 상황에 따라 다를 수 있지만 100 % 증거 솔루션은 없습니다.