এক্সপ্রেস.জেএস রেকিপি.পি ফিরছে :: ffff: 127.0.0.1


103

আমি বর্তমানে অনুরোধ করা ব্যবহারকারীর আইপি পাওয়ার চেষ্টা করছি। সমস্যাটি হ'ল আইপি ::ffff:127.0.0.1পরিবর্তে ফিরছে 127.0.0.1। আমি trusted proxyবিকল্পটি ব্যবহার করার চেষ্টা করেছি (যদিও প্রক্সি ব্যবহার করা হচ্ছে না) এবং req.ipsফাঁকা ফাঁকা। 4.x এক্সপ্রেস.জেএস ব্যবহার করে।

router.get('/', function(req, res, next) {
    console.log('ip', req.ip)
    res.send({})
});

তাহলে আপনি কি ব্যবহার করছেন req.ipবা req.ips?
আলেকসান্ডার এম

req.ip, শুধু req.ipsএকটি পরীক্ষা হিসাবে চেষ্টা । উপসর্গটি কী ঘটছে তা আমি নিশ্চিত নই ::ffff:
RockerBOO


হ্যাঁ এটা ছিল। উইন্ডোজ 7 এর আইপিভি 4 অনুরোধগুলির জন্য একটি ট্রানজিশন স্তর রয়েছে এবং আইপিতে এই উপসর্গটি যুক্ত করে।
RockerBOO

উত্তর:


161

::ffff:IPv4 (32 বিট) ঠিকানার জন্য একটি সাবনেটিক প্রিফিক্স যা একটি IPv6 (128 বিট) স্পেসের ভিতরে স্থাপন করা হয়। আইপিভি 6 দুটি ভাগে বিভক্ত, সাবনেট উপসর্গ এবং ইন্টারফেস প্রত্যয়। প্রত্যেকে 64৪ বিট লম্বা বা 4 টি হেক্সাডেসিমাল অক্ষরের 4 টি গ্রুপ।

আইপিভি In-তে আপনাকে শীর্ষস্থানীয় জিরোগুলি সরিয়ে ফেলার অনুমতি দেওয়া হবে এবং তারপরে পরপর শূন্যগুলি সরিয়ে ফেলতে পারবেন, যার অর্থ ::ffff:আসলে অনুবাদ করে 0000:0000:ffff:0000, এই ঠিকানাটি আইপিভি 4 হিসাবে আইপিভি 6 সাবনেট উপসর্গ হিসাবে চিহ্নিত করা হয়েছে, সুতরাং যে কোনও আইপিভি 6 প্রসেসর বুঝতে পারবে এটি একটি আইপিভি 4 ঠিকানা দিয়ে কাজ করছে এবং এটি পরিচালনা করবে সেই অনুসারে

অদূর ভবিষ্যতে, আইপি অ্যাড্রেসগুলি সমস্ত আইপিভি 6 হবে, এটি কারণ আমরা আইপিভি 4 ঠিকানার জায়গায় প্রায় সংখ্যার বাইরে (৪.২ বিলিয়ন, বিয়োগের উদ্দেশ্যে কিছু বিয়োগ স্থান) রেখেছি।

আইপিভি 6 অনেক বড় স্থানের অনুমতি দেয়। "340 অজ্ঞাতসই কারও পক্ষে যথেষ্ট হওয়া উচিত" - আইপিভি 6-তে বক্তব্য রাখছেন বিল গেটস।

আইপি ঠিকানাগুলি IPv6 নেমস্পেস ব্যবহার করে সম্বোধন করা আর তাই ::ffff:আপনার কোডটিতে অন্তর্ভুক্ত করা গুরুত্বপূর্ণ কারণ ভবিষ্যতে এই কলোনগুলির মধ্যে আসল হেক্সাডেসিমাল ডেটা থাকবে। যদি আপনি এটিকে নান্দনিক কারণে সরিয়ে ফেলে থাকেন তবে আপনার কোডটি আইপিভি 6 নেটওয়ার্কে স্যুইচ করলে বা এটি একটি আইপিভি 6 ঠিকানার মুখোমুখি হয়ে গেলে ভেঙে যায়।

কিছু নেটওয়ার্ক বর্তমানে আইপিভি 6 চালাচ্ছে এবং শীঘ্রই আপনি আইপিভি 6 আইপি ঠিকানাগুলির সাথে মুখোমুখি হবেন; এখনই লাফিয়ে উঠুন বা ভবিষ্যতে আপনার কোডটি ভাঙার ঝুঁকিপূর্ণ করুন।

বিষয়টির টিএল; ডিআর (সংক্ষিপ্ত) সংস্করণটি: সবকিছু ঠিকঠাক চলছে। এটি পরিবর্তন করবেন না, এটি একটি আইপিভি 4 ঠিকানার আইপিভি 6 সংস্করণ।

আইপিভি 4 আইপিভি 6

আপনি যদি নিজের কোড আইপিভি 6 এর সাথে সামঞ্জস্য করতে চান তবে আপনাকে যা করতে হবে তা হ'ল ::ffff:উপসর্গের জন্য যাচাই করতে হবে ... যদি এটি উপস্থিত থাকে তবে এটিকে সরিয়ে ফেলুন এবং বাকীটি আইপিভি 4 হিসাবে প্রক্রিয়া করুন ... যদি ::ffff:উপস্থিত না থাকে তবে এটি একটি আইপিভি 6 ঠিকানা এবং যেমন প্রক্রিয়া করা প্রয়োজন। পিরিয়ডগুলি স্ট্রিংয়ে আছে কিনা তা দেখে আপনি ডাবল-চেক করতে পারেন, যদি তাই হয় তবে এটি আইপিভি 4।

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


যদিও উপসর্গটি পরীক্ষা করা::ffff: মোটামুটি বিপজ্জনক বলে মনে হচ্ছে। আপনি জানেন, একটি আইপিভি 6 এর অনেকগুলি স্বীকৃতি রয়েছে।
Ван

4
না এটি নিরাপদ :) প্রস্তাব আছে, এবং তারপরে বাস্তবায়নও আছে। আইএনইটিএফ স্বীকৃতি দিয়েছে যে রাউটারগুলি আইপি অ্যাড্রেস খুঁজছে এমন অনেক চক্রটি পোড়াতে পারে না এবং বন্য স্থানেও কেউ জিরো রাখে না কারণ এটি স্থান নষ্ট করে। শূন্যদের অনুমতি দেওয়ার ধারণাটি ছিল কেবল একটি ধারণা। 2019 সালে যদি আপনি :: ffff: 0000: 0000: ffff: 0000 হিসাবে একটি নেটওয়ার্ক প্যাকেটে প্রেরণ করেন তবে মূল প্রস্তাবটির জন্য প্রযুক্তিগতভাবে বৈধ হলেও এটি বর্তমান আইইটিএফ সুপারিশের জন্য অবৈধ এবং বেশিরভাগ আইপিভি 6 সামঞ্জস্যপূর্ণ রাউটারগুলিতে দেখা যাবে না।
নিক স্টিল

4
সুতরাং আমি তাদের সম্পর্কে সর্বদা ক্যানোনিকাল ফর্মে থাকার বিষয়ে নিশ্চিত হতে পারি । কীভাবে বন্যের মধ্যে জিনিস চলছে তা জানতাম না। ধন্যবাদ
Ван

4
দুর্ভাগ্যক্রমে এটি সাধারণ। মানুষ কেবল তখনই মনোযোগ দেয়। কেউ কিছু খসড়া করেন, মূল নকশাটি অনেকগুলি বৈশিষ্ট্য সমর্থন করে, তারা একটি আরএফসি তৈরি করে, ডিজাইনের অনেক অংশের পক্ষে কেউ সত্যিই মনোযোগ দেয় না, এটি একটি মান হয়ে ওঠে, যখন বাস্তবায়িত লোকেরা লক্ষ্য করে যে বড় পরিবর্তনগুলি প্রয়োজন :) আইপিভি 6 কিছুটা বিজোড় কারণ এটিকে "কামানুয়াল" বলা কিছুটা অদ্ভুত। তাদের সম্ভবত এটি "1.1" বা এমন কিছু বলা উচিত যাতে লোকেরা কী ঘটছে তা দ্রুত বুঝতে পারে তবে আসল খসড়ার বিকল্প alচ্ছগুলি আপনাকে রাউটারগুলিতে 10x বেশি গণনা ব্যয় করার কারণে এটি এড়িয়ে যাওয়া হয়েছিল।
নিক স্টিল

29

এটি আইপিভি 6-এর এক গণ্ডগোল বলে মনে হচ্ছে: আইপিভি 4 অ্যাড্রেসগুলির জন্য, আইপিভি 6 আইপিভি 6 নোটেশনের সাথে আইপিভি 6 স্বরলিপি মিশ্রিত করে।

সহজ, অমীমাংসিত স্বরলিপিতে আইপিভি 4 এবং আইপিভি 6 ঠিকানা উভয়ই পেতে, আমি ব্যবহার করছি:

var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
if (ip.substr(0, 7) == "::ffff:") {
  ip = ip.substr(7)
}

17

আপনার যদি কেবল আইপিভি 4 প্রয়োজন হয় তবে আপনি নোড সার্ভারকে আইপিভি 4 ব্যবহার করে শুনতে বাধ্য করতে পারেন।

একটি এক্সপ্রেস অ্যাপ সম্পাদনার জন্য /bin/www :

পরিবর্তন

server.listen(port);

প্রতি

server.listen(port, '0.0.0.0');

এটি আমার পক্ষে কমপক্ষে কাজ করেছিল।

https://nodejs.org/api/net.html#net_server_listen_port_host_backlog_callback


10

উইন্ডোজ 7 এ আইপিভি 6 ডিফল্টরূপে সক্ষম হয়েছে। যদিও আমার সার্ভারটি কেবলমাত্র আইভিভি ৪-তে শোনায়, উইন্ডোজ আইপিভি to-এ আইপিভি ::ffff:to-এ স্থানান্তরের অংশ হিসাবে উপসর্গটি প্রেরণ করে

::ffff:0:0:0/96 - আইপিভি 4-অনুবাদিত ঠিকানাগুলির জন্য একটি উপসর্গ ব্যবহৃত হয় যা স্টেটলেস আইপি / আইসিএমপি অনুবাদ (এসআইআইটি) প্রোটোকল দ্বারা ব্যবহৃত হয়।

আইপিভি 4 থেকে রূপান্তর




-2

আপনি একা বা সকেট ব্যবহার করে নির্দিষ্ট পরিবারের সাথে আপনার আইপি ঠিকানা পেতে পারেন

     var app = require('express')();

 app.get("/ip", (req, res) => {
        console.log(req.ip) 
       let ip = req.ip.split(':');
        let ip_details = req.socket.address();
          console.log(ip_details);                     
   // { address: '::ffff:127.0.0.1', family: 'IPv6', port: 3001 

           console.log(ip[3]);//127.0.0.1
                            res.json(ip[3]);  
      }

-2
var ip = req.ip.split(':').pop();

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