スクレイピングで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
以上、よろしくお願いいたします。
あなたの回答
tips
プレビュー