यह एक प्रॉक्सी के लिए एक निश्चित उपयोग मामला है । एक सामान्य प्रॉक्सी, रिवर्स-प्रॉक्सी (उर्फ लोड बैलेंसर्स) नहीं।
सबसे प्रसिद्ध और मुक्त और मुक्त स्रोत विद्रूप है । सौभाग्य से यह कुछ अच्छे ओपन-सोर्स सॉफ्टवेयरों में से एक है जिसे आसानी से सिंगल के साथ इंस्टॉल किया जा सकता है 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, ...) पर्यावरण चर का उपयोग करके स्वयं को कॉन्फ़िगर कर रहे हैं। अधिकांश एप्लिकेशन आम पुस्तकालयों में से एक का उपयोग कर रहे हैं और इस प्रकार आउट-ऑफ-द-बॉक्स का समर्थन करते हैं (देव के बिना जरूरी नहीं कि यह जानते हुए)।
ध्यान दें कि वाक्य रचना सख्त है:
- चर नाम
http_proxy
अधिकांश लिनक्स पर होना चाहिए।
- वैरिएबल वैल्यू MUST के साथ शुरू नहीं होता
http(s)://
(प्रॉक्सिंग प्रोटोकॉल http (s) नहीं है)।
क्लाइंट कॉन्फ़िगरेशन - विशिष्ट
कुछ अनुप्रयोग पर्यावरण चर को अनदेखा कर रहे हैं और / या चलाई जा रही हैं इससे पहले कि सेवा को चर के रूप में स्थापित किया जा सके (जैसे डेबियन apt
)।
इन अनुप्रयोगों के लिए विशेष कॉन्फ़िगरेशन (जैसे /etc/apt.conf
) की आवश्यकता होगी ।
HTTPS प्रॉक्सी - कनेक्ट करें
HTTPS proxying पूरी तरह से डिजाइन द्वारा समर्थित है। यह एक विशेष "कनेक्ट" विधि का उपयोग करता है जो ब्राउज़र और प्रॉक्सी के बीच किसी प्रकार की सुरंग स्थापित करता है।
उस बात के बारे में बहुत कुछ पता नहीं है, लेकिन मैं इसके साथ वर्षों में कभी नहीं था। यह सिर्फ काम करता है।
HTTPS विशेष मामला - पारदर्शी प्रॉक्सी
पारदर्शी प्रॉक्सी पर एक नोट। (यानी प्रॉक्सी छिपा हुआ है और यह ग्राहकों के अनुरोधों को स्वीकार करता है। मानव-में-मध्य)।
पारदर्शी परदे के पीछे HTTPS तोड़ रहे हैं। क्लाइंट को पता नहीं है कि एक प्रॉक्सी है और विशेष कनेक्ट विधि का उपयोग करने का कोई कारण नहीं है।
क्लाइंट एक सीधा HTTPS कनेक्शन की कोशिश करता है ... जो इंटरसेप्टेड है। अवरोधन का पता लगाया जाता है और त्रुटियों को सभी जगह फेंक दिया जाता है। (HTTPS का मतलब मानव-में-मध्य हमलों का पता लगाना है)।
डोमेन और CDN श्वेतसूची
डोमेन और सबडोमेन व्हाइटलाइनिंग पूरी तरह से स्क्विड द्वारा समर्थित है। बहरहाल, यह समय-समय पर अप्रत्याशित तरीकों से विफल होने के लिए बाध्य है।
आधुनिक वेबसाइटों में सभी प्रकार के डोमेन पुनर्निर्देशन और CDN हो सकते हैं। एसीएल तब टूटेगा जब लोग एक डोमेन में बड़े करीने से सब कुछ डालने के लिए अतिरिक्त मील नहीं गए।
कभी-कभी एक इंस्टॉलर या एक पैकेज होगा जो रनिंग से पहले होमशिप को कॉल करना या बाहरी निर्भरता को फिर से प्राप्त करना चाहता है। यह हर एक बार विफल हो जाएगा और ऐसा कुछ भी नहीं है जो आप इसके बारे में कर सकते हैं।
कैशिंग
प्रदान की गई कॉन्फ़िगरेशन फ़ाइल कैशिंग के सभी प्रकार को अक्षम कर रही है। माफी से अधिक सुरक्षित।
व्यक्तिगत रूप से, मैं इस समय क्लाउड में चीजों को चला रहा हूं, सभी उदाहरणों में कम से कम 100 एमबीपीएस कनेक्टिविटी है और प्रदाता लोकप्रिय सामान (जैसे डेबियन) के लिए अपने स्वयं के रिपोज़ चलाता है जो स्वचालित रूप से खोजे जाते हैं। बैंडविड्थ को एक कमोडिटी बनाता है जिसकी मैं कम परवाह नहीं कर सकता था।
मैं एक कैशिंग बग का अनुभव करने के बजाय कैशिंग को पूरी तरह से अक्षम कर दूंगा जो मेरे मस्तिष्क को समस्या निवारण में पिघला देगा। इंटरनेट पर हर एक व्यक्ति अपने कैशिंग हेडर को सही नहीं कर सकता।
हालांकि सभी वातावरणों की आवश्यकताएं समान नहीं हैं। आप अतिरिक्त मील जा सकते हैं और कैशिंग कॉन्फ़िगर कर सकते हैं।
कभी भी प्रॉक्सी पर प्रमाणीकरण की आवश्यकता नहीं होती है
ग्राहकों से पासवर्ड प्रमाणीकरण की आवश्यकता होती है, आमतौर पर उनके LDAP खातों के साथ। यह ब्रह्मांड के हर ब्राउज़र और हर कमांड लाइन टूल को तोड़ देगा।
यदि आप प्रॉक्सी पर प्रमाणीकरण करना चाहते हैं, तो न करें।
यदि प्रबंधन प्रमाणीकरण चाहता है, तो समझाएं कि यह संभव नहीं है।
यदि आप एक देव हैं और आपने अभी-अभी ऐसी कंपनी ज्वाइन की है जो प्रत्यक्ष इंटरनेट को रोक रही है और प्रॉक्सी प्रमाणीकरण के लिए मजबूर कर रही है, तो RUN AWAY WHILE YOU CAN।
निष्कर्ष
हम आम विन्यास, सामान्य गलतियों और चीजों के माध्यम से चले गए, जिनके बारे में किसी को भी जानकारी होनी चाहिए।
सबक सीखना:
- प्रॉक्सिंग (स्क्विड) के लिए एक अच्छा ओपन-सोर्स सॉफ्टवेयर है
- इसे कॉन्फ़िगर करना आसान है (एक छोटी फ़ाइल)
- सभी (वैकल्पिक) सुरक्षा उपायों में ट्रेडऑफ़ हैं
- अधिकांश उन्नत विकल्प सामान को तोड़ देंगे और आपको परेशान करने के लिए वापस आएंगे
- पारदर्शी परदे के पीछे HTTPS तोड़ रहे हैं
- प्रॉक्सी प्रमाणीकरण बुराई है
प्रोग्रामिंग और सिस्टम डिज़ाइन में हमेशा की तरह, आवश्यकताओं और अपेक्षाओं का प्रबंधन करना महत्वपूर्ण है।
मैं एक प्रॉक्सी स्थापित करते समय मूल बातें करने की सलाह दूंगा। आम तौर पर, किसी विशेष फ़िल्टरिंग के बिना एक सादे प्रॉक्सी अच्छी तरह से काम करेगा और कोई परेशानी नहीं देगा। बस (ऑटो) ग्राहकों को याद रखना होगा।