2012-04-19 3 views
2

너무 이상한 질문이 아니길 바랍니다. 내부 네트워크 또는 외부 (즉, 인터넷)에서 포트 포워딩을 통해 액세스 할 수있는 IIS 서버에서 웹 서비스를 실행하고 있습니다. 외부요청이 방화벽에서 IIS로 전달되었는지 확인

: 예를 들어, 내 서버에 포트 80을 전달합니다 방화벽보다 http://my_public_domain_name와 함께 인터넷에서 내 서버에 연결하는 경우.

내부 : 내 서버에 로컬 네트워크에 ip 10.50.1.1이 있고 내 PC가 http://10.50.1.1에 의해 액세스 할 수있는 10.60.1.1 (동일한 서브넷, 다른 서브넷)에 있다고 가정합니다.

IIS (ASP.NET)에서 요청을 받았을 때 요청이 방화벽에 의해 전달되었는지 또는 내부적으로 도착했는지를 알아야합니다.

감사합니다.

+0

"X-Forwarded-For"HTTP 헤더를 사용 해본 적이 있습니까? 나는 그것이 비어 있거나 클라이언트 IP와 같으면 요청이 내부적이어야한다고 생각한다. – jbl

+0

X-Forwarded-For의 문제점은 모든 라우터/방화벽이이를 구현하지 않는다는 것이다. –

답변

4

서블릿에서는 한 번만 LAN에서 관리자 액세스 권한을 얻었으므로 사용중인 내부 IP 범위를 사용하고 admin으로 로그인하기위한 간단한 규칙을 만들었습니다. 범위.

자바에서는 HttpServletRequest.getRemoteAddr() 및 getRemoteHost()를 사용했습니다.

에서 Request.ServerVariables ("REMOTE_ADDR")

그리고 내부 (개인 인 경우이 페이지를 좋아 뭔가 결정하는 데 도움 것이다 다음 ASP의 상응처럼이 페이지 http://www.geekpedia.com/tutorial45_How-to-get-IP-address-of-client.html에서 찾고

, 그것은 본다) IP 범위 : https://en.wikipedia.org/wiki/Private_network (IPv6 IP에 도움이되는지 확실하지 않음)

+0

감사합니다. 이미 요청 변수를 살펴 보았습니다. 그러나 문제는 내부 네트워크 범위를 알 수 없다는 것입니다. 예를 들어 내부 클라이언트는 VPN을 통해 내부 네트워크에 연결되어있는 경우 10.60.1.1 또는 10.60.1.2 또는 172.25.4.1과 같은 값을 가질 수 있습니다. –

+1

맞아, 그 이유는 그 위키 피 디아 페이지를 연결 한 이유입니다. 개인 IP 범위가 나열되어 있습니다. 모든 범위에 대해 원격 IP를 검사하면 외부의 사람 중 아무도 그 중 하나와 일치합니다 (스푸핑을 제외하고는 다른 주제입니다). 10.0.0.0 - 10.255.255.255 172.16.0.0 - 172.31.255.255 192.168.0.0 - 192.168.255.255 – Peter

+0

또한 VPN을 외부로 간주 하시겠습니까? 그들의 범위를 아는 것 외에는 그들이 관문을 통과 한 것을 알 수있는 방법이 없습니다. – Peter

관련 문제