স্কিপিড এবং আইপিভি 6 এর সাথে সেন্টোস 7 সার্ভারে টিপ্রোক্স কাজ করতে আমার সমস্যা হচ্ছে। আমি পূর্বে NAT এর সাথে জেনেরিক ইন্টারসেপ্ট সেটআপ ব্যবহার করছিলাম তবে এটি কেবলমাত্র আইপিভি 4 এর মধ্যে সীমাবদ্ধ ছিল। আমি এখন TPROXY এর সাথে আইপিভি 6 অন্তর্ভুক্ত করতে সেটআপটি প্রসারিত করছি।
আমি সবকিছু কনফিগার করতে বিষয়টিতে অফিসিয়াল স্কুইড উইকি নিবন্ধটি ব্যবহার করছি:
http://wiki.squid-cache.org/Features/Tproxy4
এখনও অবধি TPROXY কনফিগারেশন কোনও সমস্যা ছাড়াই IPv4 এর জন্য কাজ করছে বলে মনে হচ্ছে। আইপিভি 6 এর সাথে তবে সংযোগগুলির সময়সীমা শেষ হচ্ছে এবং সঠিকভাবে কাজ করছে না। আরও ভাল বোঝার জন্য আমি সেটআপটি ভেঙে দেব।
নোট করুন সমস্ত ফায়ারওয়াল এবং রাউটিং বিধি আইপিভি 4 এর জন্য হুবহু একই, কেবলমাত্র পার্থক্যটি inet6
এবং ip6tables
নীচের উদাহরণগুলিতে আইপিভি 6 ভিত্তিক নিয়মগুলি কনফিগার করার জন্য।
- ওএস এবং কার্নেল: CentOS 7 (3.10.0-229.14.1.el7.x86_64)
- সমস্ত প্যাকেজ yum অনুসারে আপ টু ডেট
- স্কুইড সংস্করণ: ৩.৩.৮ (এছাড়াও ৩.৩.৯ চেষ্টা করেছেন)
- ফায়ারওয়াল: iptables / ip6tables 1.4.21
- libcap-2.22-8.el7.x86_64
আইপিভি 6 সংযোগটি বর্তমানে হারিকেন বৈদ্যুতিনের মাধ্যমে 6in4 টানেলের মাধ্যমে, এটি ডিডি-ডাব্লুআরটি রাউটারে কনফিগার করা হয়েছে এবং তারপরে ক্লায়েন্টদের কাছে অর্পিত উপসর্গটি radvd
। স্কুইড বাক্সে বেশ কয়েকটি স্থির IPv6 ঠিকানা কনফিগার করা আছে।
স্কুইড বক্সটি মূল ল্যানের মধ্যে বসে যা এটি পরিবেশন করছে। পলিসি রাউটিং উইকি আর্টিকেল এবং ডিডি-ডাব্লুআরটি উইকি থেকে অভিযুক্ত নিম্নলিখিত ফায়ারওয়াল এবং রাউটিং বিধিগুলি সহ আমার ডিডি-ডাব্লুআরটি রাউটারের মাধ্যমে যে ক্লায়েন্টগুলি 80 রোধকৃত (মূলত ওয়্যারলেস ক্লায়েন্ট) পোর্টে ট্র্যাফিক রয়েছে তাদের ক্লুড বক্সে ঠেলে দেওয়া হচ্ছে
- http://wiki.squid-cache.org/ConfigExamples/Intercept/IptablesPolicyRoute
http://www.dd-wrt.com/wiki/index.php/Squid_Transparent_Proxy
ip6tables -t mangle -A PREROUTING -i "$CLIENTIFACE" -s "$PROXY_IPV6" -p tcp --dport 80 -j ACCEPT ip6tables -t mangle -A PREROUTING -i "$CLIENTIFACE" -p tcp --dport 80 -j MARK --set-mark $FWMARK ip6tables -t mangle -A PREROUTING -m mark --mark $FWMARK -j ACCEPT ip6tables -t filter -A FORWARD -i "$CLIENTIFACE" -o "$CLIENTIFACE" -p tcp --dport 80 -j ACCEPT ip -f inet6 rule add fwmark $FWMARK table 2 ip -f inet6 route add default via "$PROXY_IPV6" dev "$CLIENTIFACE" table 2
স্কুইড বাক্সে ট্র্যাফিক পাস করার ক্ষেত্রে এটি ঠিকঠাক কাজ করছে বলে মনে হচ্ছে। উপরের সাথে সাথে ডিডি-ডাব্লুআরটি রাউটারে আমাকে যুক্ত করার একটি অতিরিক্ত নিয়ম ছিল স্কুইড বাক্সে কনফিগার করা আউটগোয়িং আইপিভি 4 এবং আইপিভি 6 ঠিকানাগুলির ব্যতিক্রম নিয়ম, অন্যথায় আমি একটি ক্রেজি লুপ ইস্যু পেয়েছি এবং ট্র্যাফিক সহ সমস্ত ক্লায়েন্টের জন্য বিচ্ছিন্ন হয়ে যায় including মূল ল্যান যা স্কুইড চালু করে 3128
।
ip6tables -t mangle -I PREROUTING -p tcp --dport 80 -s "$OUTGOING_PROXY_IPV6" -j ACCEPT
স্কুইড বাক্সে আমি নীচের রাউটিং বিধিগুলি এবং DIVERT চেইনটি সেই অনুযায়ী ট্র্যাফিক পরিচালনা করতে ব্যবহার করছি। পরীক্ষার সময় ইতিমধ্যে বিদ্যমান চেইনের সাথে কোনও ত্রুটি রোধ করতে আমার অতিরিক্ত নিয়ম যুক্ত করতে হবে। আমার ফায়ারওয়ালটি হল CSF
, আমি নিম্নলিখিতগুলিতে যুক্ত করেছিcsfpre.sh
ip -f inet6 route flush table 100
ip -f inet6 rule del fwmark 1 lookup 100
ip -f inet6 rule add fwmark 1 lookup 100
ip -f inet6 route add local default dev eno1 table 100
ip6tables -t mangle -F
ip6tables -t mangle -X
ip6tables -t mangle -N DIVERT
ip6tables -t mangle -A DIVERT -j MARK --set-mark 1
ip6tables -t mangle -A DIVERT -j ACCEPT
ip6tables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
ip6tables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3129
squid.conf
দুটি পোর্টের জন্য কনফিগার করা হয়েছে:
http_proxy 3128
http_proxy 3129 tproxy
এছাড়াও no-tproxy
আমি প্রিভোক্সিও ব্যবহার করছি এবং আমার ক্যাশে_পির লাইনে যুক্ত করতে হয়েছিল, অন্যথায় সমস্ত ট্র্যাফিক উভয় প্রোটোকলের জন্য ফরোয়ার্ড করতে অক্ষম ছিল।
cache_peer localhost parent 8118 7 no-tproxy no-query no-digest
আমি tcp_outgoing_address
প্রিভক্সির কারণে কোনও নির্দেশনা ব্যবহার করছি না , পরিবর্তে আমি সেন্টস এবং বাইন্ড অর্ডার মাধ্যমে আউটবাউন্ড ঠিকানাগুলি নিয়ন্ত্রণ করছি।
সিসেক্টল মান:
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.eno1.rp_filter = 0
আমি নিশ্চিত নই rp_filter
যে সেটআপগুলি আইপিভি 4 এ তাদের সাথে বা ছাড়া কাজ করে এবং আইপিভি 6 এর জন্য একই ফলাফলটি উত্পাদন করে কিনা needed
SELINUX
SELINUX স্কুইড বাক্সে সক্ষম করা হয়েছে, তবে TPROXY সেটআপের অনুমতি দেওয়ার জন্য নীতিগুলি কনফিগার করা হয়েছে, যাতে এটি অবরুদ্ধ না হয় (আইপিভি 4 ওয়ার্কিং এটিকে যাইহোক দেখায়)। আমি চেক করেছি grep squid /var/log/audit/audit.log | audit2allow -a
এবং পেয়েছি<no matches>
#============= squid_t ==============
#!!!! This avc is allowed in the current policy
allow squid_t self:capability net_admin;
#!!!! This avc is allowed in the current policy
allow squid_t self:capability2 block_suspend;
#!!!! This avc is allowed in the current policy
allow squid_t unreserved_port_t:tcp_socket name_connect;
আমি নীচের বুলেটগুলি সেট করেছি:
setsebool squid_connect_any 1
setsebool squid_use_tproxy 1
ভাঙা আইপিভি 6 সংযোগ
শেষ পর্যন্ত, আইপিভি 6 কানেক্টিভিটি টিপ্রোক্স ক্লায়েন্টের জন্য সম্পূর্ণ বিচ্ছিন্ন হয়ে পড়েছে (পোর্টে ল্যান ক্লায়েন্ট যারা ডাব্লুপিএডি 3128
/ পিএসি ফাইল ব্যবহার করে সম্পূর্ণ আইপিভি 6 রয়েছে) working ট্র্যাফিকটি কোনওভাবে স্কুইড বাক্সে পৌঁছানো হচ্ছে বলে মনে হচ্ছে, আইপিভি 6 এর মাধ্যমে টিপ্রোক্সওয়াইয়ের মাধ্যমে কোনও অনুরোধ প্রদর্শিত হচ্ছে না access.log
। সমস্ত আইপিভি 6 আক্ষরিক আইপিভি 6 এবং ডিএনএস, টাইমআউট উভয়ের অনুরোধ করে। আমি অভ্যন্তরীণ IPv6 ক্লায়েন্ট অ্যাক্সেস করতে পারি তবে আবার, এই ট্র্যাফিকটি লগইন করা হয়নি।
আমি test-ipv6.com ব্যবহার করে কিছু পরীক্ষা করেছি এবং এটি আমার বহির্গামী স্কুইড আইপিভি 6 ঠিকানা সনাক্ত করেছে তবে আইপিভি 6 পরীক্ষাগুলি খারাপ / ধীর বা সময়সীমা হিসাবে দেখিয়েছে। আমি সাময়িকভাবে শিরোলেখের মাধ্যমে ওয়াইডটি সক্ষম করেছিলাম এবং স্কুইড এইচটিটিপি শিরোনামটি দৃশ্যমান দেখতে পেলাম, তাই ট্রাফিকটি কমপক্ষে স্কুইড বাক্সে উঠছে তবে সেখান থেকে একবারে এটি সঠিকভাবে রুট করা যাচ্ছে না।
আমি এটি কিছু সময়ের জন্য কাজ করার চেষ্টা করেছি এবং সমস্যাটি কী তা খুঁজে পাচ্ছি না, আমি এমনকি স্কুইড মেলিং তালিকায় জিজ্ঞাসা করেছি, তবে প্রকৃত সমস্যাটি সনাক্ত করতে বা সমাধান করতে অক্ষম হয়েছি। আমার পরীক্ষার উপর ভিত্তি করে, আমি নিশ্চিত যে এটির নিম্নলিখিত অঞ্চলগুলির মধ্যে একটি এবং স্কুইড বক্সের সমস্যা:
- রাউটিং
- শাঁস
- ফায়ারওয়াল
TPROXY এবং IPv6 কাজ করার জন্য আমি যে কোনও ধারণা এবং অতিরিক্ত পদক্ষেপ নিতে পারি তা প্রশংসা হবে!
অতিরিক্ত তথ্য
ip6tables বিধি:
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DIVERT tcp ::/0 ::/0 socket
TPROXY tcp ::/0 ::/0 tcp dpt:80 TPROXY redirect :::3129 mark 0x1/0x1
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain DIVERT (1 references)
target prot opt source destination
MARK all ::/0 ::/0 MARK set 0x1
ACCEPT all ::/0 ::/0
আইপিভি 6 রাউটিং টেবিল (উপসর্গটি অস্পষ্ট)
unreachable ::/96 dev lo metric 1024 error -101
unreachable ::ffff:0.0.0.0/96 dev lo metric 1024 error -101
2001:470:xxxx:xxx::5 dev eno1 metric 0
cache mtu 1480
2001:470:xxxx:xxx:b451:9577:fb7d:6f2d dev eno1 metric 0
cache
2001:470:xxxx:xxx::/64 dev eno1 proto kernel metric 256
unreachable 2002:a00::/24 dev lo metric 1024 error -101
unreachable 2002:7f00::/24 dev lo metric 1024 error -101
unreachable 2002:a9fe::/32 dev lo metric 1024 error -101
unreachable 2002:ac10::/28 dev lo metric 1024 error -101
unreachable 2002:c0a8::/32 dev lo metric 1024 error -101
unreachable 2002:e000::/19 dev lo metric 1024 error -101
unreachable 3ffe:ffff::/32 dev lo metric 1024 error -101
fe80::/64 dev eno1 proto kernel metric 256
default via 2001:470:xxxx:xxxx::1 dev eno1 metric 1