রিমোট আইপি এর সাথে HAProxy


19

আমি একটি নতুন ওয়েব সার্ভার সেটআপ পরীক্ষা করছি যা বেশ কয়েকটি সমস্যার মুখোমুখি হচ্ছে। মূলত, আমাদের একটি ওয়েব সার্ভার রয়েছে, যেখানে কোডটি কিছু আকর্ষণীয় জিনিসের জন্য রিমোট আইপি ব্যবহার করে এবং কিছু অ্যাপাচি ডিরেক্টরিগুলি কিছু নির্দিষ্ট আইপি'র (আমাদের অফিস ইত্যাদি) সুরক্ষিত।

যাইহোক, আমরা এটিকে হ্যা_প্রক্সির পিছনে ফেলেছি যাতে আমরা আরও কিছু অ্যাপ সার্ভার যুক্ত করার দিকে নজর দিতে পারি তবে এখন দূরবর্তী আইপি সর্বদা প্রকৃত আইপি হিসাবে আসবে, আসল দূরবর্তী ব্যবহারকারী নয়। এর অর্থ আমরা কয়েকটি স্থানে যেতে পারি না, এবং আমাদের অ্যাপ্লিকেশনটি কিছুটা অদ্ভুত আচরণ করছে যেখানে ব্যবহারকারী আইপি গুরুত্বপূর্ণ।

আমাদের কনফিগারেশন নিম্নরূপ:

global
      maxconn 4096
      pidfile /var/run/haproxy.pid
      daemon

defaults
      mode http
      retries 3
      option redispatch
      maxconn 2000
      contimeout 5000
      clitimeout 50000
      srvtimeout 50000

listen farm xxx.xxx.xxx.xxx:80
      mode http
      cookie GALAXY insert
      balance roundrobin
      option httpclose
      option forwardfor
      stats enable
      stats auth username:userpass

      server app1 xxx.xxx.xxx.xxx:80 maxconn 1 check

উত্তর:


31

Haproxy.1wt.eu এ HAProxy ডক থেকে উদ্ধৃত ।

- যদি অ্যাপ্লিকেশনটিতে মূল ক্লায়েন্টের আইপি লগ করতে হয় তবে এটি ব্যবহার করুন
  "ফরওয়ার্ড" বিকল্প যা এর সাথে একটি "এক্স-ফরওয়ার্ড-ফর" শিরোনাম যুক্ত করবে
  মূল ক্লায়েন্টের আইপি ঠিকানা। নিশ্চিত করতে আপনাকে অবশ্যই "httpclose" ব্যবহার করতে হবে
  যে আপনি প্রতিটি অনুরোধ পুনর্লিখন এবং প্রতিটি প্রথম এক নয়
  সেশন:
        বিকল্প httpclose
        বিকল্প ফরোয়ার্ড

এটি উল্লেখ করা হয়েছে যে ক্লায়েন্টের আইপি অ্যাড্রেসটি জানতে অ্যাপ্লিকেশনটিকে অবশ্যই এক্স-ফরওয়ার্ড-ফর এইচটিটিপি শিরোনামের চিকিত্সা করবে। আপনার ক্ষেত্রে যাওয়ার একমাত্র উপায় বলে মনে হচ্ছে।

HAProxy 1.4 এর জন্য আপডেট হয়েছে

হ্যাপ্রোক্সি 1.4 "বিকল্প HTTP- সার্ভার-ক্লোজ" সহ একটি নতুন মোড চালু করেছে। এটি এখনও সার্ভারের সাথে সংযোগটি বন্ধ করে দিয়েছে তবে যদি সম্ভব হয় এবং ব্যবহৃত হয় তবে ক্লায়েন্টের দিকে চালিয়ে যায়। বেশিরভাগ সেটআপগুলিতে আপনি সম্ভবত এটি ব্যবহার করতে চান কারণ এটি আপনার সংযোগের একক উচ্চ-ল্যাটেন্সি অংশে (হ্যাপ্রোক্সি এবং ক্লায়েন্টের মধ্যে) বিলম্বিত করতে সহায়তা করে।

   option http-server-close
   option forwardfor

2
আরও ভাল ব্যবহার option forwardfor header X-Real-IPএবং reqidel ^X-Real-IP:, এটি আপনার লগগুলিতে আইপি ফ্যাক করা বন্ধ করে দেয়। এফওয়াইআই: 'বিকল্পের X-Real-IPজন্য ডিফল্ট শিরোনাম । NginXset_real_ip_from
টিনো

প্রশ্নটি nginx উল্লেখ করে না। এক্স-রিয়েল-আইপি কাজ করবে না।
রিক ফ্লেচার

১. এই দুটি অপশন কি সীমানা বা ব্যাকএন্ড কনফিগার বিভাগে সেট করতে হবে? (কারণ তারা এখানে কাজ করছে বলে মনে হয় না) ২. টমক্যাট-স্তরেও কি কোনও ধরণের কনফিগারেশন প্রয়োজন?
yglodt

6

টিপ্রপ্রক্সি অন্তর্ভুক্ত করার জন্য এইচএপ্রক্সিকে পুনরায় সংযোগ করার একটি উপায় রয়েছে যা উত্সের ঠিকানাটি ফরোয়ার্ড করার অনুমতি দেবে।

একটি ব্লগ পোস্টে এটা সম্পর্কে এখানে আছে: http://blog.loadbalancer.org/configure-haproxy-with-tproxy-kernel-for-full-transparent-proxy/

কয়েকটি নোট:

সর্বশেষতম লিনাক্স কার্নেল (2.6.28-11-সার্ভার) টিপ্রোক্সির জন্য সমর্থন অন্তর্ভুক্ত করেছে, সুতরাং কার্নেলটি পুনরায় সংশোধন করা প্রয়োজন নয় necessary

আপনার ওয়েব ফার্মে সার্ভারগুলি একটি ডিফল্ট গেটওয়ে ঠিকানার সাথে কনফিগার করার বিষয়টি নিশ্চিত করুন যা HAProxy সার্ভারকে নির্দেশ করে।


2

আরপিএফ অ্যাপাচি মডিউলটি ব্যবহার করুন http://stderr.net/apache/rpaf/ আমি জানি এটি এবং পুরানো পোস্ট তবে এটি খুঁজে পেতে আমার অনেক দিন লেগেছে। এটি কোনও অ্যাপ্লিকেশনকে এক্স-ফরওয়ার্ড-আইপি-র উপস্থাপন করবে।


1

নোট করুন যে এটি প্রদর্শিত হবে যে অ্যাপ্লিকেশনটি আমার যা অ্যাপাচি শিরোনাম পরিবর্তন করছে তা ওভাররাইড করতে পারে:

SetEnvIf X-Forwarded-For (.*) REMOTE_ADDR=$1
SetEnvIf X-Forwarded-For (.*) REMOTE_IP=$1

তবে এটি "অনুমতি থেকে" ইত্যাদি মাধ্যমে অ্যাপাচি অ্যাক্সেসের জন্য কাজ করে না for


X-Forwarded-Forকমা এবং কমা এবং একটি স্পেস দ্বারা পৃথক হয়ে বিদ্যমান তালিকার শেষের দিকে নতুন আইপি ঠিকানা যুক্ত হওয়ার সাথে সাথে ক্লায়েন্টটি একটি বিদ্যমান শিরোনাম প্রেরণ করলে এটি অপ্রত্যাশিত ফলাফলের কারণ হতে পারে । পরিবর্তন (.*)করার জন্য ([^ ]*)$শুধুমাত্র গত আইপি ... অথবা ব্যবহারের দখল করতে mod_rpafবা mod_remoteipএ্যাপাচি 2.4 জন্য অথবা পরে।
লাড্ডাড্ডা

1

HAProxy, ডিজাইন দ্বারা, আসল আইপি ঠিকানাটি সত্যিকারের সার্ভারে ফরোয়ার্ড করতে পারে না, অন্য কোনও প্রক্সিটির মতোই।

একটি সমাধান হতে পারে, যদি আপনার কেবলমাত্র ওয়েব সার্ভারের সমস্যা থাকে তবে এক্স-ফরওয়ার্ড-ফর এইচটিটিপি শিরোনামটি সন্ধান করা, এতে ক্লায়েন্টের ঠিকানা থাকা উচিত। এখন, এটি যথেষ্ট পরিমাণে প্রয়োগ / ভাষা নির্দিষ্ট, তবে পিএইচপি-তে এই উদাহরণটি দেখুন:

$headers = apache_request_headers();

$real_client_ip = $headers["X-Forwarded-For"];

আপনি যদি মূল ঠিকানাটিও লগ করতে চান তবে এই জাতীয় কিছু দেখতে আপনি httpd.conf এ লগফর্ম্যাটটি পরিবর্তন করতে পারেন:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{X-Forwarded-For}i\"" common


ভুল, আপনি "ফরওয়ার্ডফোর" বিকল্পটি দিয়ে করতে পারেন
উইটওয়ার্চ

হ্যাঁ, এবং এই বিকল্পটি ডিফল্টরূপে আসে তবে এটি কী করে তা এক্স-ফরওয়ার্ড-ফর এইচটিটিপি শিরোনামটি সেট করে। আমি যা বলছিলাম, এবং এটি আমার কাছে মনে হচ্ছে যা প্রশ্নকর্তা আসলে যা জিজ্ঞাসা করেছিলেন, সে ছিল আইপি প্যাকেটের আসল উত্স ঠিকানা সম্পর্কে
থিয়াগোডরভ

0

ঠিক আছে, দেখে মনে হচ্ছে এক্স-ফরওয়ার্ড করা আপনার সেটআপের জন্য ভাল কাজ করে না। সুতরাং, আপনার হ্যাপ্রোক্সির সাথে আটকে থাকার কোনও বিশেষ কারণ আছে? দেখে মনে হচ্ছে আপনার প্রয়োজনের জন্য আইপিভিএস আরও অ্যাপ্রোপ্রাইট (আমি আসলে ldirector ব্যবহার করি যা পরিবর্তে আইপিভিগুলি ব্যবহার করে)।

একবার দেখুন:

http://kb.linuxvirtualserver.org/wiki/IPVS

এবং

http://www.vergenet.net/linux/ldirectord/

'আইপি টানেলিং' বা 'ডাইরেক্ট রাউটিং' মোডে আইপিভিএস ব্যবহার করা ক্লায়েন্টের ঠিকানা সংরক্ষণ করে।


0

Http://www.openinfo.co.uk/apache/ থেকে Mod_extract_ অগ্রগতি চেষ্টা করুন

LoadModule extract_forwarded_module modules/mod_extract_forwarded.so
MEFOrder refuse,accept
MEFRefuse all
MEFAccept xxx.xxx.xxx.xxx

-1

মোড টিসিপি এবং এনজিনেক্সে হ্যাপ্রোক্সি সহ সহজ উপায়:

সার্ভার বিকল্প হিসাবে প্রেরণ-প্রক্সি যুক্ত করুন:

haproxy.conf:

এসএসএল 0.0.0.0:443 শুনুন

মোড টিসিপি

ভারসাম্য ন্যূনতম

বিকল্প httpchk জিইটি / পিং

বিকল্প লগ-স্বাস্থ্য-চেক

সার্ভার w1 192.168.1.1:443 প্রেরক-প্রক্সি চেক-এসএসএল কোনওটি যাচাই করবেন না

সার্ভার w2 192.168.1.1:443 প্রেরক-প্রক্সি চেক-এসএসএল যাচাই করুন

Nginx সমর্থন প্রক্সি প্রোটোকল প্রয়োজন

nginx.conf:

192.168.1.1:443 এসএসএল প্রক্সি_প্রোটোকল শুনুন;

192_68.1.0/24 থেকে 192_68_ সেট_রেইল_আইপি_;

রিয়েল_আইপি_হেডার প্রক্সি_প্রোটোকল;

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.