CentOS 7 এ কাজ করে আইপিভি 6 এর সাথে স্কুইড এবং টিপ্রক্সি পাচ্ছেন


18

স্কিপিড এবং আইপিভি 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 রোধকৃত (মূলত ওয়্যারলেস ক্লায়েন্ট) পোর্টে ট্র্যাফিক রয়েছে তাদের ক্লুড বক্সে ঠেলে দেওয়া হচ্ছে

স্কুইড বাক্সে ট্র্যাফিক পাস করার ক্ষেত্রে এটি ঠিকঠাক কাজ করছে বলে মনে হচ্ছে। উপরের সাথে সাথে ডিডি-ডাব্লুআরটি রাউটারে আমাকে যুক্ত করার একটি অতিরিক্ত নিয়ম ছিল স্কুইড বাক্সে কনফিগার করা আউটগোয়িং আইপিভি 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

কোনও বাগ / রিলিজ ইস্যু বাতিল করতে আমি স্কুইডের পরবর্তী সংস্করণে (3.5) আপডেট করার চেষ্টা করেছি তবে সমস্যাটি রয়ে গেছে।
জেমস হোয়াইট

1
আমি প্রায় এক বছর আগে একটি CentOS 6 বাক্সে এই কাজটি করেছিলাম বলে কেবল মন্তব্য করছি ing তবে এটি হঠাৎ একদিন কাজ করা বন্ধ করে দিয়েছে (কার্নেল আপডেটের পরে আমার মনে হয়) এবং তখন থেকে আমি এটিকে কাজ করতে সক্ষম হইনি। যদি আমি আইপিভি 6 টিপ্রক্সি সেটআপ সক্ষম করি তবে এটি মূলত সমস্ত বন্দর 80 ট্র্যাফিক ভেঙে দেয় এবং কিছুই স্কুইডে পৌঁছায় না। আমি মুহূর্তের জন্য এটি ছেড়ে দিয়েছি। আমি বর্তমানে চালিত কার্নেলটি ২..3.৩২ - আমি নোট করেছি যে উইকি.সুইড- ক্যাশে.অর্গ / ফিচারস / ট্রপোক্সি ৪ , তারা ন্যূনতম কার্নেল ভেরিওনটি ২.6.৩7 এর তালিকাভুক্ত করে তাই আমি এর মধ্যে ইতিমধ্যে সংক্ষিপ্ত। যদি আমি কখনই এর সমাধান না করি তবে আমি এখানে আমার অনুসন্ধানগুলি আপডেট করব।
পারকামার্ক

সুতরাং আমি অবশেষে এই কাজ পেয়েছিলাম। আইপিভি 4 "ইন্টারসেপ্ট" পোর্টটি স্কুইডকনফ-এ আইপিভি 6 "টিপ্রোপ্সি" বন্দরের সমান হওয়ার বিষয়টি ছিল - এটি ডকুমেন্টেশনে বিশদ, তবে আমি ভেবেছিলাম যে আমি এটি না করে পালিয়ে যেতে পারব কারণ এই পোর্টগুলি আমার শোনা যাচ্ছে had বন্দর সহ নির্দিষ্ট ঠিকানা / স্ট্যাকস, সুতরাং তাদের বিরোধ করার কেন কোনও নির্দিষ্ট কারণ নেই, তাই না? ঠিক আছে, এটি একটি ভুল ধারণা বলে মনে হচ্ছে। পড়ুন ...
পারকামার্ক

আমি "http_port 192.168.0.1:3128 ইন্টারসেপ্ট" এবং "http_port [fd00 :: 2]: 313 tproxy" স্কুইড.কম এ সংজ্ঞায়িত করেছি - এটি করবেন না! এটি অবশ্যই "http_port 3128 ইন্টারসেপ্ট" এবং "http_port 3129 tproxy" হওয়া উচিত। আপনার কোনও নির্দিষ্ট আইভিভি 6 ঠিকানার সাথে আইপিভি 6 টিপ্রোক্সি পোর্টের বাইন্ড থাকতে পারে না এবং তারপরে সমস্ত ফায়ারওয়াল / রাউটিং যাদুটি কাজ করার আশা করে। আপনি কেবল একা বন্দরগুলি নির্দিষ্ট করতে পারবেন, যার অর্থ স্কুইড এই পোর্টগুলির সমস্ত ঠিকানা / ইন্টারফেসের সাথে আবদ্ধ থাকবে। প্রয়োজন অনুসারে এই খোলা পোর্টগুলি লক করতে আমি ফায়ারওয়াল বিধিগুলি যুক্ত করব।
পরকামার্ক

উত্তর:


1

আমি বুঝতে পারি যে এটি পুরানো, এবং আমার নিজের কাছে এর পুরো উত্তর নেই, তবে, আমি আপনার সাথে খুব অনুরূপ কিছু করছি এবং প্রায় একইরকম লক্ষণ রয়েছে।

প্রথম: test-ipv6.com নতুন ধরণের ত্রুটি পরিচালনা করতে সক্ষম হয়ে নিজেকে সাম্প্রতিকভাবে আপডেট করেছে বলে মনে হয় (এটি এই বছরের শুরুর দিকে ভেঙে গেছে)। আবার পরীক্ষা দিন।

আমার ক্ষেত্রে, এটি আমাকে এমন একটি ইউআরএল প্রেরণ করেছে যা আমার মনে হয় এমন একটি সমস্যার বর্ণনা দেয়: পাথ এমটিইউ সনাক্তকরণ এফকিউ । তারা একটি ইউআরএল সরবরাহ করে যা আপনি পিএমটিইউডি পরীক্ষা করতে সিআরএল দিয়ে ব্যবহার করতে পারেন এবং তারপরে আপনি আপনার ট্র্যাফিক ব্যবহার করে tpcdumpবা ওয়্যারশার্কটি পরীক্ষা করতে পারেন ।

ট্র্যাফিক যখন স্কুইডের ওপরে TPROXY'd হয়, তখন আইপিভি 6 পাথ এমটিইউ সনাক্তকরণ আপনার হোস্টে পুরোপুরি কাজ করে না। (কেন এটি আমার হোস্টে কাজ করছে না তা নিয়ে আমি এখনও কাজ করছি , সুতরাং আমার কোনও নির্দিষ্ট সমাধান নেই)।

একটি দ্রুত বিবরণ:

  • আইপিএমপি আইপিভি 6-তে অত্যন্ত গুরুত্বপূর্ণ। অনেক লোক আইসিএমপি ব্লক করতে চায় এবং ভালের চেয়ে আরও বেশি ক্ষতির কারণ হয়।
  • যদি আপনার সংযোগের জন্য কোনও প্যাকেট "খুব বড়" হয় তবে প্যাকেটটি বাদ পড়ে যায় এবং প্যাকেটের আকার হ্রাস করে পুনরায় পাঠাতে বলার জন্য একটি আইসিএমপি টাইপ 2 ("প্যাকেট খুব বড়") বার্তাটি উত্পন্ন সার্ভারে প্রেরণ করার কথা।
  • যদি আইসিএমপি বার্তা এটি সার্ভারে না করে তবে সার্ভারটি বৃহত প্যাকেটটি পুনরায় বিক্রয় করতে থাকে - এটি তত্ক্ষণাত বাদ পড়ে যায় কারণ এটি খুব বড়।
  • এটিকে "ব্ল্যাকহোল" হিসাবে বর্ণনা করা হয়েছে কারণ প্যাকেটগুলি কখনই তাদের গন্তব্যে পৌঁছায় না।

সুতরাং আপনি নিশ্চিত করতে চাইতে পারেন যে আপনার ফায়ারওয়াল বিধিগুলি আইসিএমপিভি 6 বার্তা গ্রহণ করার জন্য সেট করা আছে ("প্রয়োজনীয়" আইসিএমপি ধরণের তালিকার জন্য আরএফসি 4890 দেখুন)।

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

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