それは可能ではないでしょうか?応答が不要で、リクエストを送信したいとします。私たちのコンピューターがそれを送信するので、tcp/ipヘッダーを変更することはできませんか?私はおそらく何かが足りないので、本当に興味があって、大学でそれについて学んでいます。
-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"
man curl
-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に送られるため、このハンドシェイクを完了することはできません(前述のように、近くのルーターを制御して応答を自分にリダイレクトしない限り)。
PS:UDPメッセージを送信できるかもしれませんが、私は試していません。
ローカルネットワークインターフェイスに複数のIPアドレスがある場合は、送信元IPアドレスを変更できます。
1.1.1.10
と2.2.2.20
の2つのIPアドレスを持つサーバーがあるとします。
$ 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
現在のパブリックIPアドレスは、すばらしい ifconfig.co Webサービスで確認できます。
$ curl -4 ifconfig.co
1.1.1.10
他のIPアドレス(2.2.2.20
)を使用して ifconfig.co Webサービスにアクセスするには、ターゲットサーバーの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ウェイハンドシェイクは、指摘されているように here で失敗します。