2016-10-08 2 views
1

나는 PHP 응용 프로그램을 개발하고 $_SERVER['REMOTE_ADDR']IP가 로컬 환경에서 :: 1로 표시되는 이유는 무엇입니까?

이 (아파치가 맥 OS 시에라에서 로컬로 설정) 로컬 환경에 ::1을 반환 사용하여 데이터베이스에서 사용자의 IP 주소를 저장하고있다.

나는이 기사가 이전 ISP의 "왕복"이 아니기 때문에이 사실을 알고 있습니다. 하지만이를 테스트 할 수있는 방법이 있습니까? 즉, 응용 프로그램이 라이브 (로컬이 아닌) 호스팅 환경에 배포 된 후 코드 $_SERVER['REMOTE_ADDR']이 올바른 주소를 반환하는지 확인하는 것입니까?

내가 http://www.whatsmyip.org/

나는 또한의 IP 주소를 표시합니다 짓고 있어요 응용 프로그램과 같은 사이트를 방문 할 때 무엇을 보여 것 같이 내가 후, 내 "진짜"아웃 바운드 IP 주소를지고있어 효과 데이터베이스에 저장된 사용자 두 번째 질문으로, 로컬 IP를 걸러 내기위한 논리를 작성하여 표시하려면 ::1127.0.0.1을 필터링해야합니까? 그렇지 않은 경우도 있습니까?

+0

호스트가 다르기 때문에 이에 대한 답변이 없습니다. 어떤 호스팅 서비스를 사용하고 있습니까? – Machavity

답변

0

::1127.0.0.1에서 IPv4

https://en.wikipedia.org/wiki/IPv6_address

:: 1/128 인 것처럼, IPv6의에서 "홈"주소 - 루프백 주소가 유니 캐스트 로컬 호스트 주소입니다. 호스트의 응용 프로그램이이 주소로 패킷을 보내는 경우 IPv6 스택은 동일한 가상 인터페이스 (IPv4의 127.0.0.1/8에 해당)에서 이러한 패킷을 다시 루프합니다.

"실제"아웃 바운드 주소를 가져 오는 문제는 로컬 컴퓨터가 그 주소를 모른다는 것입니다. 예를 들어, Amazon Web Services에는 서버가 실제로 존재하는 제어 평면이 있습니다. 따라서 시스템의 IP는 인터넷이 아닌 해당 제어 평면 내에 있습니다. 외부 IP를 지정할 수는 있지만 컴퓨터가 해당 IP를 찾을 수있는 내부 방법은 없습니다. 가져 오기 위해서는 실제로 perform other actions (AWS에만 해당)이 있어야합니다.

관련 문제