2017-10-22 14 views
0

웹 서버를 테스트하기위한 테스트 도구를 만들고 있습니다. 이 도구는 간단한 http 요청을 구성하여 서버에 전송할 수 있습니다. 그러나 각 요청에는 다른 src ip addr이 있어야합니다.Go/Java의 http 요청에서 IP 주소를 수정하는 방법

내 질문입니다. 거기에 HTTP 요청에서 IP 패키지를 구축 할 수있는 몇 가지 방법이 있나요, IP 주소를 수정하고 직접 인터넷에 보냅니다?

저는 java 또는 go (new to go)를 사용합니다. 많은 감사합니다! :)

+0

IP 주소를 스푸핑하는 것은 너무 어려울 것입니다. 서버에 직접 접속하여 요청 객체를 생성 할 수 있습니까? –

답변

0

IP 주소는 HTTP보다 낮은 수준에서 처리됩니다. 특히 IP 주소는 TCP/IP 프로토콜로 처리됩니다. Can I trust the source IP of an HTTP request?은 HTTP 클라이언트에서 가져온 IP가 신뢰할 수 있고 스푸핑하기 어려운 이유에 대한 개요를 제공합니다.

즉, HTTP 헤더는 TCP에서 얻은 IP 주소가 "잘못됨"을 나타내는 아이디어를 지원합니다. 가장 일반적인 방법은 X-Forwarded-For 헤더입니다. 서버를 가정하면 (! 아마 안 함), 당신은 아주 쉽게 당신의 IP 스푸핑 수이 값에 의존 :

물론
req, err := http.NewRequest("GET", "http://example.com", nil) 
// ... 
req.Header.Add("X-Forwarded-For", "1.2.3.4") 
resp, err := client.Do(req) 

, 대부분의 서버는이 필드에 의존하지 않습니다, 남용의 가능성으로 크다.

자신의 서버에 대한 테스트 도구를 작성하는 경우 서버에 논리를 추가하여 X-Forwarded-For 헤더 (또는 비슷한 이름)가 있는지 확인하고 설정된 경우 IP 주소를 무시하는 것이 가장 좋습니다 . 하지만 프로덕션 환경에서이 기능을 사용 중지해야합니다.