そうではありませんか?応答が必要なく、リクエストのみを送信したいとします。私たちのコンピュータが転送したので、tcp / ipヘッダを変更できるはずですか?おそらく私が何かを見逃しているようですが、大学でそれについて学びたかっただけです。
答え1
パラメータを使用できます-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:".
引用:
答え2
私は受け入れた答えがあなたのIPをなりすましするのに本当に役に立たないと思います。ターゲットコンピュータに近いルーターにアクセスできない場合、ソースIPを実際になりすましません。
TCPは3方向ハンドシェイクメカニズムを使用します。ターゲットコンピュータのハンドシェイク応答が自分のIPではなくなりすましIPに送信されるため、このハンドシェイクを完了できません(前述のように、近くのルータを制御し、応答を自分のIPにリダイレクトしない限り)。
PS:UDPメッセージを送信することもできますが、試してみませんでした。
答え3
ローカルネットワークインターフェイスに複数のIPアドレスがある場合は、送信元IPアドレスを変更できます。
1.1.1.10
2つのIPアドレスと次のサーバーがあるとします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を使用して現在のパブリックIPアドレスを確認できますifconfig.coインターネットサービス:
$ curl -4 ifconfig.co
1.1.1.10
アクセスifconfig.coWebサービスは追加のIPアドレス(2.2.2.20
)を使用し、ターゲットサーバーのIPアドレスに基づいてルートを作成できます。 digを使用してDNSレコードで宛先IPアドレスを見つけますA
。
$ 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
カールを再実行すると、別のソース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ウェイハンドシェイクは失敗します。ここ。