প্যাকেজ সংগ্রহস্থলের প্রক্সি করার জন্য সেরা অনুশীলন


16

আমার কর্পোরেট নেটওয়ার্কে সেন্টোস সার্ভারের একটি সংগ্রহ রয়েছে। সুরক্ষার কারণে, বেশিরভাগ সার্ভারের সাধারণ আউটবাউন্ড ইন্টারনেট অ্যাক্সেস থাকে না যদি না এটি সার্ভারের মূল কার্যকারিতা প্রয়োজন।

আমার যখন প্যাকেজ আপডেট করতে হবে তখন এটি একটি চ্যালেঞ্জ তৈরি করে। ইয়াম সংগ্রহস্থলের জন্য, আমি বর্তমানে ইন্টারনেট থেকে সমস্ত প্রয়োজনীয় রেপো মিরর করি এবং ইন্ট্রনেটের ভিতরে আয়নাগুলি উপলব্ধ করি make আমি আমাদের পাঁচটি পরিবেশের প্রত্যেকটিতে প্রতিটি রেপোর অনুলিপি রাখি: দেব, কিউএ, স্টেজিং এবং দুটি প্রোডাকশন ডেটাসেন্টার।

আমি বর্তমানে ভাষা-নির্দিষ্ট প্যাকেজগুলির জন্য সমাধান করি না। যখন সার্ভারগুলির রুবিজেমস, পাইপিআই, পিইসিএল, সিপিএএন বা এনপিএম থেকে আপডেটের প্রয়োজন হয়, তাদের প্যাকেজগুলি আনতে অস্থায়ী আউটবাউন্ড ইন্টারনেট অ্যাক্সেস নিতে হবে। আমাকে রুবিজেমস এবং পিপিআইআই মিররিং শুরু করতে বলা হয়েছে, এবং বাকীগুলি সম্ভবত অনুসরণ করবে।

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

  • এটি হয় ফরোয়ার্ড বা বিপরীত প্রক্সি হতে পারে; প্রতিটি প্যাকেজ ম্যানেজার একটি প্রক্সি সার্ভার বা একটি কাস্টম সংগ্রহস্থল শেষ পয়েন্ট সমর্থন করে, যা স্থানীয় আয়না বা বিপরীত প্রক্সি হতে পারে।
  • এর জন্য গ্রানুলার অ্যাক্সেস নিয়ন্ত্রণ দরকার, তাই আমি ক্লায়েন্টের আইপিগুলি কোন রেপো ডোমেনগুলির সাথে সংযোগ করতে পারে তা সীমাবদ্ধ করতে পারি।
  • ক্লায়েন্টদের অজানা ডোমেনগুলিতে পুনঃনির্দেশগুলি অনুসরণ করতে সক্ষম হওয়া দরকার। আপনার আসল অনুরোধটি হয়ত rubygems.org এ সীমাবদ্ধ থাকতে পারে তবে যদি সেই সার্ভারটি একটি এলোমেলো সিডিএনকে 302 ফেরত দেয়, আপনি এটি অনুসরণ করতে সক্ষম হবেন।
  • এটি এইচটিটিপিএস ব্যাকএন্ড সমর্থন করা উচিত। আমার অগত্যা অন্যান্য এসএসএল সার্ভারের ছদ্মবেশ তৈরি করার দরকার নেই, তবে আমার এইচটিটিপিএসের মাধ্যমে এইচটিটিপিএস সাইটটি পুনরায় প্রকাশ করতে সক্ষম হতে হবে, বা অন্য শংসাপত্রের সাথে সমাপ্ত করে এবং পুনরায় এনক্রিপ্ট করা উচিত।

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

এন্টারপ্রাইজ নেটওয়ার্কগুলির মধ্যে এটি তুলনামূলকভাবে সাধারণ সমস্যা হওয়া উচিত বলে মনে হয় তবে অন্যান্য লোকেরা কীভাবে এটি সমাধান করেছে এর উদাহরণ খুঁজে পেতে আমার সমস্যা হচ্ছে। কেউ কি অনুরূপ কিছু বাস্তবায়ন করেছেন বা কীভাবে সর্বোত্তমভাবে করা যায় তা নিয়ে চিন্তাভাবনা রয়েছে?

ধন্যবাদ!

উত্তর:


5

আমরা এর জন্য স্কুইড ব্যবহার করি; স্কুইড সম্পর্কে দুর্দান্ত জিনিসটি হ'ল আপনি একটি প্যাটার্ন ম্যাচের উপর ভিত্তি করে অবজেক্টগুলির স্বতন্ত্র সমাপ্তি সেট করতে পারেন, মোটামুটি সহজেই, যা ইয়াম রেপো থেকে মেটাডেটা মোটামুটি দ্রুত পরিষ্কার করতে দেয়। আমাদের যে কনফিগারেশন রয়েছে এটি প্রয়োগ করে:

refresh_pattern (Release|Packages(.gz)*)$      0       20%     2880
refresh_pattern (\.xml|xml\.gz)$      0       20%     2880
refresh_pattern ((sqlite.bz2)*)$      0       20%     2880
refresh_pattern (\.deb|\.udeb)$   1296000 100% 1296000
refresh_pattern (\.rpm|\.srpm)$   1296000 100% 1296000
refresh_pattern .        0    20%    4320

http://www.squid-cache.org/Doc/config/refresh_pattern/


5

এটি একটি প্রক্সি জন্য একটি নির্দিষ্ট ব্যবহারের কেস । একটি সাধারণ প্রক্সি, বিপরীত প্রক্সি নয় (যেমন লোড ব্যালান্সার)।

সর্বাধিক সুপরিচিত এবং ফ্রি এবং ওপেন সোর্স হ'ল স্কুইড । ভাগ্যক্রমে এটি কয়েকটি ভাল ওপেন সোর্স সফ্টওয়্যারগুলির মধ্যে একটি যা সহজেই একটি একক সাথে ইনস্টল করা যায় apt-get install squid3এবং একক ফাইলের সাথে কনফিগার করা যায় /etc/squid3/squid.conf

আমরা ভাল অনুশীলন এবং জ্ঞাত পাঠগুলি এগিয়ে চলব।

অফিসিয়াল কনফিগারেশন ফাইলটি সামান্য পরিবর্তিত হয়েছে (5000 টি অকেজো মন্তব্যযুক্ত লাইনগুলি সরানো হয়েছে)।

#       WELCOME TO SQUID 3.4.8
#       ----------------------------
#
#       This is the documentation for the Squid configuration file.
#       This documentation can also be found online at:
#               http://www.squid-cache.org/Doc/config/
#
#       You may wish to look at the Squid home page and wiki for the
#       FAQ and other documentation:
#               http://www.squid-cache.org/
#               http://wiki.squid-cache.org/SquidFaq
#               http://wiki.squid-cache.org/ConfigExamples
#

###########################################################
# ACL
###########################################################

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 1025-65535  # unregistered ports

acl CONNECT method CONNECT

#####################################################
# 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

#####################################################
# ACL
#####################################################

# access is limited to our subnets
acl mycompany_net   src 10.0.0.0/8

# access is limited to whitelisted domains
# ".example.com" includes all subdomains of example.com
acl repo_domain dstdomain .keyserver.ubuntu.com
acl repo_domain dstdomain .debian.org
acl repo_domain dstdomain .python.org

# clients come from a known subnet AND go to a known domain
http_access allow repo_domain mycompany_net

# And finally deny all other access to this proxy
http_access deny all

#####################################################
# Other
#####################################################

# default proxy port is 3128
http_port 0.0.0.0:3128

# don't forward internal private IP addresses
forwarded_for off

# disable ALL caching
# bandwidth is cheap. debugging cache related bugs is expensive.
cache deny all

# logs
# Note: not sure if squid configures logrotate or not
access_log daemon:/var/log/squid3/access.log squid
access_log syslog:squid.INFO squid


# leave coredumps in the first cache dir
coredump_dir /var/spool/squid3

# force immediaty expiry of items in the cache.
# caching is disabled. This setting is set as an additional precaution.
refresh_pattern .               0       0%      0

ক্লায়েন্ট কনফিগারেশন - পরিবেশ পরিবর্তনশীল

সমস্ত সিস্টেমে এই দুটি পরিবেশের ভেরিয়েবল কনফিগার করুন।

http_proxy=squid.internal.mycompany.com:3128
https_proxy=squid.internal.mycompany.com:3128

বেশিরভাগ http ক্লায়েন্ট লাইব্রেরি (libcurl, httpclient, ...) এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করে স্ব কনফিগার করা হয়। বেশিরভাগ অ্যাপ্লিকেশনগুলি সাধারণ লাইব্রেরিগুলির মধ্যে একটি ব্যবহার করছে এবং এভাবে বাক্সের বাইরে প্রক্সিং সমর্থন করে (ডিভ ছাড়াই তারা জানেন যে তারা তা করে)।

লক্ষ করুন যে বাক্য গঠনটি কঠোর:

  1. পরিবর্তনশীল নামটি http_proxyবেশিরভাগ লিনাক্সের উপর ছোট হাতের অক্ষরে আবশ্যক।
  2. পরিবর্তনশীল মানটি দিয়ে শুরু হওয়া আবশ্যক নয় http(s)://(প্রক্সিং প্রোটোকলটি হ'ল http (গুলি) নয়।

ক্লায়েন্ট কনফিগারেশন - নির্দিষ্ট

কিছু অ্যাপ্লিকেশনগুলি পরিবেশের ভেরিয়েবলগুলি উপেক্ষা করছে এবং / অথবা ভেরিয়েবলগুলি সেট করার আগে পরিষেবা হিসাবে চালিত হয় (যেমন ডেবিয়ান apt)।

এই অ্যাপ্লিকেশনগুলির জন্য বিশেষ কনফিগারেশন প্রয়োজন (যেমন /etc/apt.conf)।

এইচটিটিপিএস প্রক্সি - সংযুক্ত

এইচটিটিপিএস প্রক্সিং সম্পূর্ণরূপে ডিজাইন দ্বারা সমর্থিত। এটি একটি বিশেষ "সংযোগ" পদ্ধতি ব্যবহার করে যা ব্রাউজার এবং প্রক্সিগুলির মধ্যে কিছু ধরণের টানেল স্থাপন করে।

জিনিস সম্পর্কে ডান্নো অনেক কিছুই কিন্তু বছরের পর বছরগুলি নিয়ে আমার কখনও সমস্যা হয়নি। এটা ঠিক কাজ করে।

এইচটিপিএস বিশেষ কেস - স্বচ্ছ প্রক্সি

স্বচ্ছ প্রক্সি সম্পর্কিত একটি নোট। (উদাহরণস্বরূপ প্রক্সিটি লুকানো আছে এবং এটি ক্লায়েন্টদের বাধা দেয় আলা। ম্যান-ইন-দ্য মিডল)।

স্বচ্ছ প্রক্সিগুলি এইচটিটিপিএস ভঙ্গ করছে। ক্লায়েন্ট জানেন না যে একটি প্রক্সি রয়েছে এবং বিশেষ সংযোগ পদ্ধতিটি ব্যবহার করার কোনও কারণ নেই।

ক্লায়েন্ট সরাসরি HTTPS সংযোগ চেষ্টা করে ... এটি বাধা দেওয়া হয়। বাধা সনাক্ত করা হয়েছে এবং ত্রুটিগুলি সমস্ত জায়গায় ছুঁড়ে দেওয়া হয়েছে। (এইচটিটিপিএস মানে হ'ল ম্যান-ইন-হি-মধ্য-আক্রমণগুলি সনাক্ত করা)।

ডোমেন এবং সিডিএন শ্বেত তালিকা

ডোমেন এবং সাবডোমেন শ্বেত তালিকা সম্পূর্ণরূপে স্কুইড দ্বারা সমর্থিত। যাইহোক, এটি সময়ে সময়ে অপ্রত্যাশিত উপায়ে ব্যর্থ হতে বাধ্য।

আধুনিক ওয়েবসাইটগুলিতে সমস্ত ধরণের ডোমেন পুনঃনির্দেশ এবং সিডিএন থাকতে পারে। এটি ACL কেটে ফেলবে যখন লোকেরা একক ডোমেনে সুন্দরভাবে সমস্ত কিছু লাগাতে অতিরিক্ত মাইল ছাড়েনি।

কখনও কখনও কোনও ইনস্টলার বা প্যাকেজ থাকবে যা চালানোর আগে হোমশিপ কল করতে বা বাহ্যিক নির্ভরতা পুনরুদ্ধার করতে চায়। এটি প্রতি একক সময় ব্যর্থ হবে এবং এটি সম্পর্কে আপনি করার মতো কিছুই নেই।

ক্যাশিং

প্রদত্ত কনফিগারেশন ফাইল সমস্ত ধরণের ক্যাশে অক্ষম করছে। দুঃখিত চেয়ে ভাল নিরাপদ.

ব্যক্তিগতভাবে, আমি এই মুহুর্তে ক্লাউডে জিনিসগুলি চালাচ্ছি, সমস্ত দৃষ্টান্তে কমপক্ষে 100 এমবিপিএস সংযোগ রয়েছে এবং সরবরাহকারী জনপ্রিয় স্টাফগুলির জন্য নিজস্ব রেপো চালায় (যেমন দেবিয়ান) যা স্বয়ংক্রিয়ভাবে আবিষ্কার হয়। এটি ব্যান্ডউইথকে এমন পণ্য বানায় যা আমি কম যত্ন করতে পারি না।

আমি বরং একক ক্যাচিং বাগের অভিজ্ঞতা দেওয়ার চেয়ে সম্পূর্ণ ক্যাচিং নিষ্ক্রিয় করব যা সমস্যার সমাধানে আমার মস্তিষ্ককে গলে যাবে। ইন্টারনেটের প্রতিটি একক ব্যক্তি তাদের ক্যাশিং শিরোনামটি সঠিকভাবে পেতে পারেন না।

যদিও সমস্ত পরিবেশের একই প্রয়োজনীয়তা নেই। আপনি অতিরিক্ত মাইল যেতে পারেন এবং ক্যাশে কনফিগার করতে পারেন।

কখনও কখনও প্রক্সিটিতে প্রমাণীকরণের প্রয়োজন হয় না

সাধারণত তাদের LDAP অ্যাকাউন্টগুলির সাথে ক্লায়েন্টদের কাছ থেকে পাসওয়ার্ড প্রমাণীকরণের প্রয়োজন রয়েছে। এটি মহাবিশ্বের প্রতিটি ব্রাউজার এবং প্রতিটি কমান্ড লাইন সরঞ্জামকে ভেঙে ফেলবে।

আপনি যদি প্রক্সিটিতে প্রমাণীকরণ করতে চান তবে করবেন না।

যদি পরিচালনা প্রমাণীকরণ চায়, তবে ব্যাখ্যা করুন যে এটি সম্ভব নয়।

আপনি যদি কোনও দেব হন এবং আপনি কেবলমাত্র এমন একটি সংস্থায় যোগদান করেছেন যা সরাসরি ইন্টারনেট ব্লক করে এবং প্রক্সি প্রমাণীকরণ জোর করে, আপনি যা করতে পারেন তা চালিয়ে যান।

উপসংহার

আমরা সাধারণ কনফিগারেশন, সাধারণ ভুল এবং প্রক্সিং সম্পর্কে অবশ্যই জানা থাকা বিষয়গুলির মধ্য দিয়েছিলাম।

পাঠ শিখেছি:

  • প্রক্সি করার জন্য একটি ভাল ওপেন সোর্স সফ্টওয়্যার রয়েছে (স্কুইড)
  • এটি কনফিগার করা সহজ এবং সহজ (একটি সংক্ষিপ্ত ফাইল)
  • সমস্ত (alচ্ছিক) সুরক্ষা ব্যবস্থায় ট্রেড অফ রয়েছে s
  • সর্বাধিক উন্নত বিকল্পগুলি স্টাফ ভেঙে আপনাকে পিছনে ফেলে দেবে
  • স্বচ্ছ প্রক্সিগুলি এইচটিটিপিএস ভঙ্গ করছে
  • প্রক্সি প্রমাণীকরণ খারাপ is

প্রোগ্রামিং এবং সিস্টেম ডিজাইনের ক্ষেত্রে যথারীতি এটি প্রয়োজনীয়তা এবং প্রত্যাশাগুলি পরিচালনা করার জন্য গুরুত্বপূর্ণ।

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


এস / ম্যান-ইন-হি-মিডল / ম্যান-ইন-দ্য মিডল / (এস / ই একক চরিত্র সম্পাদনাকে অস্বীকার করে)
চেন লেভি

4

এটি আপনার সমস্ত কাজ সমাধান করবে না, তবে সম্ভবত এটি এখনও সহায়ক। নাম সত্ত্বেও, অপ্ট-ক্যাচার-এনজি কেবলমাত্র ডেবিয়ান এবং ডেরিভেটিভগুলির সাথে কাজ করে না এবং হয়

একটি ক্যাচিং প্রক্সি লিনাক্স ডিস্ট্রিবিউটরদের থেকে প্যাকেজ ফাইলগুলির জন্য বিশেষত, মূলত দেবিয়ান (এবং ডেবিয়ান ভিত্তিক) বিতরণের জন্য তবে সেগুলির মধ্যেই সীমাবদ্ধ নয়।

আমি এটিকে আপনার মতো অনুরূপ (ডেবিয়ান ভিত্তিক) পরিবেশে উত্পাদনে ব্যবহার করছি।

তবে, এএফআইএকি, এটি রুবিজেমস, পিপিআইআই, পিইসিএল, সিপিএএন বা এনপিএম সমর্থন করবে না এবং গ্রানুলার এসিএল সরবরাহ করবে না।

ব্যক্তিগতভাবে, আমি মনে করি যে স্কুইড তদন্ত করা ভাল ধারণা। যদি আপনি শেষ পর্যন্ত কোনও সেটআপ বাস্তবায়ন করেন, তবে দয়া করে আপনার অভিজ্ঞতাগুলি ভাগ করতে পারেন? এটি কীভাবে যায় তাতে আমি বেশ আগ্রহী।


2

আমাদের অনুরূপ চ্যালেঞ্জ ছিল এবং স্থানীয় রেপো এবং স্ন্যাপশট ভিত্তিক স্টোরেজ সিস্টেম ব্যবহার করে এটি সমাধান করেছি। আমরা মূলত উন্নয়ন সংগ্রহস্থল আপডেট করি, পরীক্ষার জন্য এটি ক্লোন করি, স্টেজিংয়ের জন্য ক্লোন করি এবং শেষ পর্যন্ত উত্পাদনের জন্য। ব্যবহৃত ডিস্কের পরিমাণ সেভাবেই সীমাবদ্ধ, ততক্ষণে এটি সমস্ত ধীর সাটা স্টোরেজ এবং এটি ঠিক।

ক্লায়েন্টরা আমাদের কনফিগারেশন পরিচালনা থেকে সংগ্রহস্থল তথ্য পায় তাই প্রয়োজনে স্যুইচিং সহজ।

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

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