답변:
-H/--header
인수 를 사용할 수 있습니다 .
IP 주소를 스푸핑 할 수 있습니다.
curl --header "X-Forwarded-For: 192.168.0.2" http://example.com
예 :
클라이언트
$ curl http://webhost.co.uk
웹 호스트
$ tailf access.log | grep 192.168.0.54
192.168.0.54 - - [10/Nov/2014:15:56:09 +0000] "GET / HTTP/1.1" 200 14328 "-"
"curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3
libidn/1.18 libssh2/1.4.2"
IP 주소가 변경된 클라이언트
$ curl --header "X-Forwarded-For: 192.168.0.99" http://webhost.co.uk
웹 호스트
$ tailf access.log | grep 192.168.0.99
192.168.0.99 - - [10/Nov/2014:15:56:43 +0000] "GET / HTTP/1.1" 200
14328 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0
zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
남자 컬
-H/--header <header>
(HTTP) Extra header to use when getting a web page. You may
specify any number of extra headers. Note that if you should add
a custom header that has the same name as one of the internal
ones curl would use, your externally set header will be used
instead of the internal one. This allows you to make even
trickier stuff than curl would normally do. You should not
replace internally set headers without knowing perfectly well
what you’re doing. Remove an internal header by giving a
replacement without content on the right side of the colon,
as in: -H "Host:".
참고 문헌 :
나는 대답이 IP를 스푸핑하는 데 실제로 도움이되지는 않는다고 생각합니다. 대상 컴퓨터에 가까운 라우터에 액세스 할 수 없으면 소스 IP를 스푸핑 할 수 없습니다.
TCP는 3 방향 핸드 셰이크 메커니즘에서 작동합니다. 대상 시스템의 핸드 셰이크 응답이 자신의 IP가 아닌 스푸핑 된 IP로 이동하므로이 핸드 셰이크를 완료 할 수 없습니다 (앞서 말했듯이 근처의 라우터를 제어하고 자신에게 응답을 리디렉션하지 않는 한).
추신 : UDP 메시지를 보낼 수는 있지만 시도하지 않았습니다.
curl
HTTP 리소스에 액세스하려고한다고 가정합니다. UDP를 통한 HTTP curl
는 AFAIK 를 지원하는 것이 아니며 현재로서는 실험적인 것이 아닙니다.
로컬 네트워크 인터페이스에 여러 개의 IP 주소가있는 경우 소스 IP 주소를 변경할 수 있습니다.
당신이이 IP 주소가있는 서버가 있다고 가정, 1.1.1.10
및 2.2.2.20
:
$ ip route
default via 1.1.1.193 dev eth0
1.1.1.192/27 via 1.1.1.193 dev eth0
1.1.1.192/27 dev eth0 proto kernel scope link src 1.1.1.10
2.2.2.20 via 2.2.2.20 dev eth0 scope link
awesome ifconfig.co 웹 서비스를 사용하여 현재 퍼블릭 IP 주소를 확인할 수 있습니다 :
$ curl -4 ifconfig.co
1.1.1.10
다른 IP 주소 ( )를 사용하여 ifconfig.co 웹 서비스에 액세스하려면 2.2.2.20
대상 서버의 IP 주소를 기반으로 라우트를 작성할 수 있습니다. dig를 사용하여 DNS A
레코드 에서 대상 IP 주소를 찾으십시오 .
$ dig ifconfig.co
...
ifconfig.co. 39 IN A 104.28.18.94
ifconfig.co. 39 IN A 104.28.19.94
...
이제 다음 IP 주소에 대한 사용자 지정 경로를 추가하십시오.
$ ip route add 104.28.18.94/32 via 1.1.1.193 dev eth0 src 2.2.2.20
$ ip route add 104.28.19.94/32 via 1.1.1.193 dev eth0 src 2.2.2.20
curl을 다시 실행하면 다른 소스 IP 주소를 사용하고 있음을 알 수 있습니다.
$ curl -4 ifconfig.co
2.2.2.20
또한 라우팅 정보가 업데이트됩니다.
$ ip route
default via 1.1.1.193 dev eth0
1.1.1.192/27 via 1.1.1.193 dev eth0
1.1.1.192/27 dev eth0 proto kernel scope link src 1.1.1.10
2.2.2.20 via 2.2.2.20 dev eth0 scope link
104.28.18.94 via 1.1.1.193 dev eth0 src 2.2.2.20
104.28.19.94 via 1.1.1.193 dev eth0 src 2.2.2.20
참고 : 소스 IP 주소를 서버로 확인할 수있는 경우에만 작동합니다. 그렇지 않으면 여기에서 지적한대로 TCP 3 방향 핸드 셰이크에 실패 합니다 .