web-dev-qa-db-ja.com

HAProxy内のプロキシプロトコルアドレスへのアクセス

アップストリームソースからレイヤー4プロキシプロトコルを受信して​​いるHAProxyを実行しています。そこに含まれるアドレスを使用してカスタムHTTPヘッダーを作成する必要があります。そのTCPヘッダーを参照する方法が見つからないようです。

以下は私がやろうとしていることのサンプルです:

frontend http_in
    bind *:1025 accept-proxy
    mode http
    default_backend http_out

backend http_out
    mode http
    http-request set-header X-Custom-Header %[<ip from proxy protocol header>]
    server some-server some-server:80

スプーフィング可能なhttpヘッダーではなく、L4ヘッダーのアドレスを新しいヘッダーに入力していることを確認するにはどうすればよいですか?

2
Justin Talbott

accept-proxyバインドオプションの docs 、より一般的にはPROXYプロトコルの使用法に基づいて、PROXYプロトコルヘッダーに含まれるすべてのフィールド(送信元IPとポート、宛先IPとポート) )実際の接続からのものを置き換えます。

.。
PROXYプロトコルは、着信のレイヤー3/4アドレスを指示します
アドレスが使用されるすべての場所で使用される接続。
「tcp-requestconnection」ルールの例外。
実際の接続アドレス。ログには、に示されているアドレスが反映されます
プロトコルに違反していない限り、プロトコルに違反している場合は、実際のアドレス
は引き続き使用されます。
.。

バックエンドが次のようになることを意味します

backend http_out
    mode http
    http-request set-header X-Custom-Header %[src]
    server some-server some-server:80

これが機能するのは、srcサンプルフィールドに、実際のソースIPではなく、PROXYヘッダーで定義されているソースIPが含まれるためです。

3
GregL