কীভাবে পোর্টটি এক আইপি থেকে অন্য আইপি-তে একই নেটওয়ার্কে ফরোয়ার্ড করবেন?


77

আমি কিছু না চাই NATমধ্যে iptables। সুতরাং যে সমস্ত প্যাকেট আসছে 192.168.12.87এবং পোর্ট 80ফরোয়ার্ড করা হবে 192.168.12.77বন্দর 80

Iptables দিয়ে এটি কীভাবে করবেন?

অথবা

একই অর্জনের জন্য অন্য কোনও উপায়?


@ মাথেজেল্ফ, কিছু কারণে, আমাকে অ্যাপাচে সমস্ত অনুরোধ (192.168.12.87) থেকে (192.168.12.77) এ ফরোয়ার্ড করা দরকার।
বসেছিল

1
@ মাথেলফি, আমার দুটি প্রোডাকশন সার্ভার রয়েছে। একটি পাবলিক স্ট্যাটিক আইপি ঠিকানার সাথে সংযুক্ত। কিছু সংযোগ সমস্যার কারণে, আমি এখান থেকে ডিবি এবং অন্যান্য সিস্টেমে সংযোগ করতে পারছি না 192.168.12.87। সুতরাং, আমার সমস্ত অনুরোধটি ফরোয়ার্ড করা দরকার 192.168.12.77
বসে

@ লাইন, আমি এর সাথে পরিচিত নই iptables। এবং, আমি কিছু উদাহরণ দেখেছি। তবে, মনে হচ্ছে এটিতে দুটি ইথারনেট লাগবে। লিঙ্ক: revsys.com/writings/quicktips/nat.html
বসলেন

আপনি 192.168.12.77 থেকে 192.168.12.77 এ অনুরোধগুলি প্রেরণ করতে আপনার ওয়েব সার্ভার কনফিগারেশনে প্রক্সি মোডও ব্যবহার করতে পারেন (যদি আপনার
ওয়েবসভার

উত্তর:


74

এই নিয়মগুলি কাজ করা উচিত, ধরে iptablesনিয়ে সার্ভারে চলছে 192.168.12.87:

#!/bin/sh

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -F
iptables -t nat -F
iptables -X

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.12.77:80
iptables -t nat -A POSTROUTING -p tcp -d 192.168.12.77 --dport 80 -j SNAT --to-source 192.168.12.87

80 পোর্টে আপনাকে আগত ট্র্যাফিক DNAT করতে হবে, তবে আপনার আবার ট্র্যাফিকটি SNAT করতে হবে।


বিকল্প (এবং সেরা পদ্ধতির আইএমএইচও):

আপনার ওয়েব সার্ভারটি কিসের উপর নির্ভর করে (অ্যাপাচি, এনজিঞ্জ) আপনার সামনের দিকে সার্ভারে একটি HTTP প্রক্সি বিবেচনা করা উচিত (192.168.12.87):


ইউএফডাব্লু অক্ষম না হওয়া অবধি কাজ করে, যদিও বন্দরটি ইউএফডাব্লুতে অনুমতি দেয় তবে ইউএফডাব্লু সক্ষম করা থাকলে এই ফরোয়ার্ডিং স্টাফ কাজ করে না, কোনও ধারণা?
সুধীর এন

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

3
"তবে আপনার আবার ট্র্যাফিক এসএনএটি করতে হবে।" -> আপনি আমার দিন বাঁচিয়েছেন। ধন্যবাদ
ওবায়হান

এই সমাধানটি আমার পক্ষে কাজ করছে না। আমাকে এথ0 থেকে ভার্চুয়াল নেটওয়ার্কে (ভার্ভ00) ফরোয়ার্ড করা দরকার যা কেভিএম-গেস্ট দ্বারা ব্যবহৃত হয়। আমি -i এবং -o বিকল্পগুলি যোগ করার চেষ্টা করেছি কিন্তু -প্রিটের জন্য অনুমোদিত নয়। কোনও পরামর্শ?
লাস্টিনিসল্যান্ড

এই সমাধানটি সম্পর্কে সতর্কতা অবলম্বন করুন। আমি এখন আমার দূরবর্তী মেশিনে সম্পূর্ণরূপে অ্যাক্সেস হারিয়ে ফেলেছি।
সেরেন

28

আপাতদৃষ্টিতে সুস্পষ্টভাবে iptables -t nat -A PREROUTING -d 192.168.12.87 -p tcp --dport 80 -j DNAT --to-destination 192.168.12.77কাজ না করার কারণটি হল কীভাবে রিটার্ন প্যাকেটগুলি রুট করা হবে।

আপনি এমন নিয়ম স্থির করতে পারেন যা 192.168.12.87 এ প্যাকেটগুলি কেবল 192.168.12.77 এ প্রেরণ করতে পারে তবে 192.168.12.77 এর পরে ক্লায়েন্টকে সরাসরি জবাব পাঠানো হবে। এই উত্তরগুলি হোস্টের মধ্য দিয়ে যাবে না যেখানে আপনার iptables নিয়মটি NAT করছে, সুতরাং একদিকে প্যাকেটগুলি অনুবাদ করা হয়েছে, তবে অন্য দিকের প্যাকেটগুলি নেই।

এই সমস্যাটি সমাধান করার জন্য তিনটি পন্থা রয়েছে।

  1. প্রথম হোস্টে কেবল ডিএনএটি করবেন না, তবে এসএনএটিও করুন যে রিটার্ন ট্র্যাফিক প্রথম হোস্টের মাধ্যমে ফেরত পাঠানো হবে। নিয়মটি এরকম দেখতে পারেiptables -t NAT -A POSTROUTING -d 192.168.12.77 -p tcp --dport 80 -j SNAT --to-source 192.168.12.87
  2. ডিএসআর লোড ব্যালেন্সিং থেকে অনুপ্রেরণা গ্রহণ করুন এবং আইপি স্তরের পরিবর্তে ইথারনেট স্তরে প্যাকেটগুলি ডিএনএটি করুন। 192.168.12.77 এর ম্যাকের সাথে প্যাকেটের গন্তব্য MAC প্রতিস্থাপন করে এবং আইপি স্তরটি স্পর্শ না করে ইথারনেটে প্রেরণ করে, 192.168.12.77 এর সাথে ডামি ইন্টারফেসে 192.168.12.87 কনফিগার করা থাকতে পারে এবং এভাবে টিসিপি সংযোগটি বন্ধ করতে সক্ষম হতে পারে ক্লায়েন্টের সাথে পরিচিত সার্ভার আইপি সহ।
  3. প্রথম হোস্টে নিষ্পাপ (তবে কাজ করছে না) সমাধানটি ব্যবহার করুন। তারপরে রিটার্ন ট্র্যাফিকে একটি এসএনএটি করে দ্বিতীয় হোস্টের রিটার্ন প্যাকেটগুলি হ্যান্ডেল করুন। একটি নিয়ম মত দেখতে পারেiptables -t nat -A OUTPUT -p tcp --sport 80 -j SNAT --to-source 192.168.12.87

এই তিনটি সমাধানের প্রতিটিটিরই ত্রুটি রয়েছে, সুতরাং আপনার যদি সত্যই এই নির্দিষ্ট ফরওয়ার্ডিং করতে হয় তবে আপনার সাবধানতার সাথে বিবেচনা করা উচিত।

  1. এসএনএটি ব্যবহার করে ক্লায়েন্টের আইপি হারাবে, তাই হোস্ট নম্বর 2 টি ভাবেন যে সমস্ত সংযোগ 192.168.12.87 থেকে এসেছে। অতিরিক্তভাবে আপনি সমস্ত উত্তর প্যাকেটের জন্য হোস্ট নম্বর 1 এর মাধ্যমে ব্যান্ডউইদথ ব্যবহার করবেন, যা অন্যান্য পদ্ধতির সাথে আরও সরাসরি রুট নেবে।
  2. ডিএসআর অ্যাপ্রোচ দুটি নোডের মধ্যে অন্য সমস্ত যোগাযোগকে ভেঙে দেবে। ডিএসআর অ্যাপ্রোচটি কেবল তখনই উপযুক্ত যখন সার্ভারের ঠিকানা কোনও হোস্টের প্রাথমিক আইপি না থাকে। প্রতিটি হোস্টের একটি প্রাথমিক আইপি থাকা দরকার যা ডিএসআর আইপি নয়।
  3. এক দিক থেকে অনুবাদ করার জন্য এক হোস্টের সাথে সংযোগ ট্র্যাকিং এবং অন্য হোস্টের সাথে অন্য দিক থেকে অনুবাদ করার জন্য সংযোগ ট্র্যাকিং ব্যবহার করা সহজ কুরুচিপূর্ণ এবং এটি বিভিন্নভাবে ভেঙে যেতে পারে। উদাহরণস্বরূপ, যদি কোনও হোস্টে পোর্ট সংখ্যাগুলি NAT দ্বারা সংশোধিত হয় তবে সেগুলি পুনর্গঠনের কোনও উপায় নেই। এটি কোনও প্রদত্তও নয়, সংযোগ ট্র্যাকিংটি সঠিকভাবে কাজ করবে, যদি এটি প্রথম প্যাকেটটি দেখে তবে এটি এসিএন-এর পরিবর্তে এসওয়াইএন-এসিকে।

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

আপনি NAT সম্পর্কে পুরোপুরি ভুলে যাওয়া এবং ম্যাক বা আইপি স্তরটিতে সমস্যাটি সমাধান করার চেষ্টা না করে বেছে নিতে পারেন। আপনি এইচটিটিপি স্তর পর্যন্ত সমস্ত পথে যেতে পারেন এবং সেখানে সমাধানের সন্ধান করতে পারেন। সেক্ষেত্রে যে সমাধানটি পাবেন তা হ'ল একটি এইচটিটিপি প্রক্সি। আপনি যদি 192.168.12.87 এ কোনও HTTP প্রক্সি ইনস্টল করেন এবং এটিকে যথাযথভাবে কনফিগার করেন তবে আপনি এটি অনুরোধগুলি 192.168.12.77 এ পাঠাতে এবং উত্তরগুলি আবার ফরোয়ার্ড করতে পারেন। অতিরিক্তভাবে এটি মূল ক্লায়েন্ট আইপি সংরক্ষণ করে একটি এক্স-ফরওয়ার্ড-ফর শিরোনাম সন্নিবেশ করতে পারে। 192.168.12.77 এ সার্ভারটি তারপর 192.168.12.87 থেকে এক্স-ফরওয়ার্ড-ফর শিরোনামকে বিশ্বাস করার জন্য কনফিগার করা দরকার।


আমি অবাক হয়ে -j MASQUERADEএখানে উল্লেখ করা হয়নি; এটি ডিএনএটি-র সাথে স্বাভাবিক দৃষ্টিভঙ্গি নয়?
রেরাম

3
@ রেরামের SNATপরিবর্তে আমি উল্লেখ করেছি MASQUERADE, কারণ ডকুমেন্টেশনটি এটাই বলে। ডকুমেন্টেশনের সঠিক শব্দটি হ'ল:It should only be used with dynamically assigned IP (dialup) connections: if you have a static IP address, you should use the SNAT target.
ক্যাস্পারড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.