🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
冗長化

冗長化とは、システムの一部に障害が発生してもサービスを継続できるようシステム構築を行うこと。要する量より多く予備装置を準備しバックアップとして配置しておきます。また、冗長化による安全性は、冗長性と呼ばれています。

Squid

Squidは、TCP/IPネットワークでのユーザーとサーバの通信を中継するオープンソースのプロキシサーバソフト。リバースプロキシやキャッシュサーバとして使用することも可能です。

プロキシ

プロキシは、二つ以上の相互接続されているプログラム又はデバイスの間に存在する中間サーバを指します。プロキシは、接続者の「代理」としてインターネット接続を行い、接続元にレスポンスを返します。また、その機能を実現するソフトウェアの意味合いもあります。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

0回答

2796閲覧

[AWS]フォワードプロキシの手前にELBを置いたらIPが固定化されてしまった

terumin

総合スコア17

冗長化

冗長化とは、システムの一部に障害が発生してもサービスを継続できるようシステム構築を行うこと。要する量より多く予備装置を準備しバックアップとして配置しておきます。また、冗長化による安全性は、冗長性と呼ばれています。

Squid

Squidは、TCP/IPネットワークでのユーザーとサーバの通信を中継するオープンソースのプロキシサーバソフト。リバースプロキシやキャッシュサーバとして使用することも可能です。

プロキシ

プロキシは、二つ以上の相互接続されているプログラム又はデバイスの間に存在する中間サーバを指します。プロキシは、接続者の「代理」としてインターネット接続を行い、接続元にレスポンスを返します。また、その機能を実現するソフトウェアの意味合いもあります。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2020/12/17 08:27

スクレイピングでIP分散を行うため、AWSでフォーワードプロキシサーバーを構築しています。
EC2でプロキシサーバー(Squid)を2台構成にして、NLBで冗長化します。
イメージ説明

実際に検証したところ、
スクレイピング処理自体は成功するのですが、IPアドレスが毎回同じものになってしまい、IP分散に失敗してしまいます。
ちなみにNLBを使用せずにプロキシを使った場合は、意図通りにIP分散されます。

この記事を見ると、
NLBを使った場合NATされるため、IPが固定化されてしまうそうなのですが、
この通りに設定しても、問題が解消しません。。

現状の設定は以下の通りです。
どこが間違っているのか、ご教示頂けましたら幸いです

現状の設定

NLB

スキーム: インターネット向け IPアドレスタイプ; ipv4 # リスナー プロトコル:TCP ポート: 4578 #Squidのポート #アベイラビリティーゾーン VPC: 上記構成図のVPC サブネット: 上記構成図のサブネットを2つ指定 IPアドレス: 2つともEIPを割り当て # ターゲットグループ ターゲットタイプ:インスタンス プロトコル:TCP ポート: 4578 VPC: 上記構成図のVPC ターゲット; 上記構成図のEC2を2つとも指定。ポートは4578、ステータスはhealthy Proxy protocol v2: Enabled

EC2

セキュリティグループは以下。
イメージ説明
イメージ説明

Squid

acl localnet src 10.0.0.0/8 # RFC1918 possible internal network acl localnet src 10.0.2.0/8 # RFC1918 possible internal network acl localnet src 172.16.0.0/12 # RFC1918 possible internal network acl localnet src 192.168.0.0/16 # RFC1918 possible internal network acl localnet src fc00::/7 # RFC 4193 local private network range acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT #-- proxy設定---------------- #ポートの指定とproxy接続時にproxy protocolを必須にする http_port 4578 require-proxy-header http_port 4578 #NLBのIPをACLに追加 ## NLBのEIP acl nlb_ip src xx.xx.xx.xx acl nlb_ip src xx.xx.xx.xx ## NLBのローカルIP acl nlb_ip src 10.0.0.19 acl nlb_ip src 10.0.2.179 #クライアントIPをACLに追加 ## スクレイピングシステムのグローバルIP acl client_ip src xx.xx.xx.xx #URLフィルタリング #acl whitelist dstdomain "/etc/squid/whitelist" #Proxy Protocolの利用許可 proxy_protocol_access allow localnet proxy_protocol_access allow nlb_ip proxy_protocol_access allow client_ip proxy_protocol_access deny all #httpアクセスの許可 http_access permit nlb_ip #クライアントの許可とホワイトリストの適用 http_access permit client_ip #----------------------------- # # Recommended minimum Access Permission configuration: # # Deny requests to certain unsafe ports http_access deny !Safe_ports # Deny CONNECT to other than secure SSL ports http_access deny CONNECT !SSL_ports # Only allow cachemgr access from localhost http_access allow localhost manager http_access deny manager # We strongly recommend the following be uncommented to protect innocent # web applications running on the proxy server who think the only # one who can access services on "localhost" is a local user #http_access deny to_localhost # # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # # Example rule allowing access from your local networks. # Adapt localnet in the ACL section to list your (internal) IP networks # from where browsing should be allowed http_access allow localnet http_access allow localhost # Uncomment and adjust the following to add a disk cache directory. #cache_dir ufs /var/spool/squid 100 16 256 # Leave coredumps in the first cache dir coredump_dir /var/spool/squid # # Add any of your own refresh_pattern entries above these. # refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|?) 0 0% 0 refresh_pattern . 0 20% 4320 http_access allow all client_persistent_connections off server_persistent_connections off # 以下、マニュアル設定------------------------------------- # ランダムIP数(スクレイピング用にIPを分散する) acl balance random 1/4 balance_on_multiple_ip on # 拒否設定まわり visible_hostname unknown forwarded_for off request_header_access X-Forwarded-For deny all request_header_access Via deny all request_header_access Cache-Control deny all reply_header_access X-Forwarded-For deny all reply_header_access Via deny all reply_header_access Cache-Control deny all max_filedesc 65535 # スクレイピング用の分散ElasticIPに紐付けたprivate IP tcp_outgoing_address 10.0.2.162 balance tcp_outgoing_address 10.0.2.163 balance tcp_outgoing_address 10.0.2.164 balance tcp_outgoing_address 10.0.2.165 balance # キャッシュしない設定 acl NOCACHE src all cache deny NOCACHE

以上、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問