লিনাক্সের একই সাবনেটে দুটি নেটওয়ার্ক ইন্টারফেস এবং দুটি আইপি ঠিকানা addresses


22

আমি সম্প্রতি এমন পরিস্থিতিতে ছুঁড়েছি যেখানে আমার একটি লিনাক্স হোস্টকে অর্পিত একই সাবনেটে দুটি আইপি অ্যাড্রেস প্রয়োজন ছিল যাতে আমরা দুটি এসএসএল / টিএলএস সাইট চালাতে পারি। আমার প্রথম পদ্ধতির আইপি এলিয়জিং ব্যবহার করা ছিল, যেমন: eth0: 0, eth0: 1 ইত্যাদি ব্যবহার করা, তবে আমাদের নেটওয়ার্ক অ্যাডমিনদের সুরক্ষার জন্য কিছুটা কঠোর সেটিংস রয়েছে যা এই ধারণাটিকে বাদ দিয়েছে:

  1. তারা ডিএইচসিপি স্নুপিং ব্যবহার করে এবং সাধারণত স্থির আইপি ঠিকানাগুলিকে অনুমতি দেয় না। স্ট্যাটিক অ্যাড্রেসিং স্ট্যাটিক ডিএইচসিপি এন্ট্রি ব্যবহার করে সম্পন্ন হয়, তাই একই ম্যাক ঠিকানা সর্বদা একই আইপি অ্যাসাইনমেন্ট পায়। আপনি যদি জিজ্ঞাসা করেন এবং আপনার যদি এর কোনও কারণ থাকে তবে এই বৈশিষ্ট্যটি প্রতি স্যুইচপোর্টে অক্ষম করা যেতে পারে (ধন্যবাদ, নেটওয়ার্কের সাথে আমার ভাল সম্পর্ক আছে এবং এটি করা কঠিন নয়)।
  2. স্যুইচপোর্টে ডিএইচসিপি স্নুপিং নিষ্ক্রিয় হওয়ার সাথে সাথে, তাদের স্যুইচটিতে একটি বিধি প্রয়োগ করতে হয়েছিল যে বলেছিল যে ম্যাক অ্যাড্রেস এক্সে আইপি ঠিকানা ওয়াই থাকার অনুমতি রয়েছে। দুর্ভাগ্যক্রমে এটির পার্শ্ব প্রতিক্রিয়াও ছিল যে ম্যাক ঠিকানা এক্সকে কেবলমাত্র অনুমতি দেওয়ার অনুমতি রয়েছে আইপি ঠিকানা ওয়াই। আইপি এলিয়াসিংয়ের প্রয়োজন ছিল যে ম্যাক ঠিকানা এক্সকে দুটি আইপি ঠিকানা দেওয়া হয়েছিল, সুতরাং এটি কার্যকর হয়নি।

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

তবে সমস্যাটি এলো: নেটওয়ার্ক প্রশাসকরা উভয় ইন্টারফেসের জন্য এআরপি প্রবেশ (স্যুইচে) দেখতে পেলেন, তবে কেবল প্রথম নেটওয়ার্ক ইন্টারফেস যা আমি নিয়ে এসেছি সেগুলি পিংস বা কোনও ধরণের টিসিপি বা ইউডিপি ট্র্যাফিকের প্রতিক্রিয়া জানায়।

প্রচুর খোঁড়াখুঁড়ি ও পোকার পরে, আমি এখানে এসেছি। এটি কাজ করে দেখে মনে হচ্ছে, তবে এটি এমন কিছু সহজ কাজ হওয়া উচিত বলে মনে হচ্ছে এটি অনেক কাজ work কোন বিকল্প ধারণা আছে?


পদক্ষেপ 1: সমস্ত ইন্টারফেসে এআরপি ফিল্টারিং সক্ষম করুন:

# sysctl -w net.ipv4.conf.all.arp_filter=1
# echo "net.ipv4.conf.all.arp_filter = 1" >> /etc/sysctl.conf

লিনাক্স কার্নেল ডক্সে ফাইল নেটওয়ার্কিং / ip-sysctl.txt থেকে:

arp_filter - BOOLEAN
    1 - Allows you to have multiple network interfaces on the same
    subnet, and have the ARPs for each interface be answered
    based on whether or not the kernel would route a packet from
    the ARP'd IP out that interface (therefore you must use source
    based routing for this to work). In other words it allows control
    of which cards (usually 1) will respond to an arp request.

    0 - (default) The kernel can respond to arp requests with addresses
    from other interfaces. This may seem wrong but it usually makes
    sense, because it increases the chance of successful communication.
    IP addresses are owned by the complete host on Linux, not by
    particular interfaces. Only for more complex setups like load-
    balancing, does this behaviour cause problems.

    arp_filter for the interface will be enabled if at least one of
    conf/{all,interface}/arp_filter is set to TRUE,
    it will be disabled otherwise

পদক্ষেপ 2: উত্স-ভিত্তিক রাউটিং প্রয়োগ করুন

আমি মূলত http://lartc.org/howto/lartc.rpdb.m Multiple-links.html এর দিকনির্দেশগুলি অনুসরণ করেছি , যদিও পৃষ্ঠাটি একটি ভিন্ন লক্ষ্য রেখেই লেখা হয়েছিল (দুটি আইএসপি ব্যবহার করে)।

অনুমান করুন যে সাবনেটটি 10.0.0.0/24, গেটওয়েটি 10.0.0.1.1, eth0 এর IP ঠিকানা 10.0.0.100, এবং eth1 এর IP ঠিকানা 10.0.0.101।

/ Etc / iproute2 / rt_tables- এ eth0 এবং eth1 নামে দুটি নতুন রাউটিং টেবিল সংজ্ঞায়িত করুন:

... top of file omitted ...
1    eth0
2    eth1

এই দুটি টেবিলের জন্য রুটগুলি নির্ধারণ করুন:

# ip route add default via 10.0.0.1 table eth0
# ip route add default via 10.0.0.1 table eth1
# ip route add 10.0.0.0/24 dev eth0 src 10.0.0.100 table eth0
# ip route add 10.0.0.0/24 dev eth1 src 10.0.0.101 table eth1

নতুন রাউটিং টেবিলগুলি কখন ব্যবহার করবেন সে সম্পর্কে নিয়মগুলি সংজ্ঞায়িত করুন:

# ip rule add from 10.0.0.100 table eth0
# ip rule add from 10.0.0.101 table eth1

মূল রাউটিং টেবিলটি ইতিমধ্যে ডিএইচসিপি দ্বারা যত্ন নেওয়া হয়েছিল (এবং এটি এমনকি এটি পরিষ্কার নয় যে এই ক্ষেত্রে এটি কঠোরভাবে প্রয়োজনীয়) তবে এটি মূলত এর সাথে সমান:

# ip route add default via 10.0.0.1 dev eth0
# ip route add 130.127.48.0/23 dev eth0 src 10.0.0.100
# ip route add 130.127.48.0/23 dev eth1 src 10.0.0.101

ও ভয়েলা! সবকিছু ঠিকঠাক কাজ করে বলে মনে হচ্ছে। উভয় আইপি ঠিকানায় পিংস প্রেরণ করা ভাল কাজ করে। এই সিস্টেম থেকে অন্য সিস্টেমে পিংগুলি প্রেরণ করা এবং পিংকে একটি নির্দিষ্ট ইন্টারফেস ব্যবহার করতে বাধ্য করা জরিমানা ( ping -I eth0 10.0.0.1, ping -I eth1 10.0.0.1) কাজ করে। এবং সর্বাগ্রে গুরুত্বপূর্ণ যে, সমস্ত টিসিপি এবং ইউডিপি ট্র্যাফিক উভয়ই আইপি ঠিকানার / থেকে প্রত্যাশা অনুযায়ী কাজ করে।


সুতরাং আবার, আমার প্রশ্ন: এটি করার আরও ভাল উপায় আছে? আপাতদৃষ্টিতে সহজ সমস্যার জন্য এটি অনেক কাজ মনে হয়।


আপডেট: উপরের সমাধানটি অসম্পূর্ণ হয়ে গেছে। যদি ট্র্যাফিক একই সাবনেটে থাকে তবে জিনিসগুলি ভাল কাজ করেছে, তবে ২ য় ইন্টারফেস ব্যবহার করে অন্যান্য সাবনেটগুলিতে যোগাযোগগুলি সঠিকভাবে কাজ করবে না। বৃহত্তর গর্তটি খনন করার পরিবর্তে আমি নেটওয়ার্ক প্রশাসকদের সাথে কথা বলা শেষ করেছিলাম এবং তাদেরকে একটি ইন্টারফেসের জন্য একাধিক আইপি ঠিকানা এবং আইপি এলিয়াসিং ব্যবহার করার অনুমতি পেয়েছি (যেমন, eth0 এবং eth0: 0)।


মনে রাখার মূল পার্থক্যটি হ'ল আইপিটি ইন্টারফেসের সাথে সম্পর্কিত নয়, এটি মেশিনের অন্তর্ভুক্ত। সুতরাং এই সেটআপে কোনও আইপি-র জন্য ইন্টারফেস প্রেরণ করা সঠিক, সুতরাং এটি না করার জন্য কেন কিছু কৌশল প্রয়োজন ।
মাইকিবি

আমি বিশ্বাস করি এই ক্ষেত্রে উত্সের রাউটিং প্রয়োজনীয় নয় কারণ আরপ ফিল্টারিং কেবল তখনই প্রয়োগ করা উচিত যখন স্যুইচটি কোনও ইন্টারফেসে প্রেরণ করা হয় / তার বন্দরগুলির মধ্যে এটি সন্ধান করতে হবে। আমি ভুল হতে পারি, কিন্তু যখন মেশিনটি স্যুইচটির দিকে ডেটা প্রেরণ করে, উত্স ক্ষেত্রের আইপি (আইপি শিরোলেখ) চেক করা হয় না, কেবল প্যাকেটটি প্রেরণকারী আরপ।
AndreasM

মাইকিবি সঠিক, উত্স রাউটিংয়ের একমাত্র উপায়। মেশিনটি ট্র্যাফিক প্রেরণের জন্য যে কোনও আউটবাউন্ড ইন্টারফেস বেছে নিতে পারে, যতক্ষণ না এটি একই সাবনেটে থাকে। আইপি সত্যই ইন্টারফেসে অবস্থিত কিনা তা বিবেচ্য নয়।
প্যাট্রিক 14

2
AndreasM: আগত প্যাকেটগুলি সমস্যা নয়, এটি বহির্গামী প্যাকেটগুলি যা সমস্যা। উত্স রাউটিং ব্যতীত, সমস্ত বহির্গামী প্যাকেটগুলি ডিফল্ট রুটটি ব্যবহার করবে, যা একটি ইন্টারফেস বা অন্যটির সাথে আবদ্ধ। যদিও বহির্গামী প্যাকেটগুলির সঠিক উত্সের আইপি ঠিকানা থাকবে, স্যুইচটিতে থাকা ফিল্টারগুলি তাদের বাইরে যেতে দেবে না কারণ সেই আইপি ঠিকানাটি সেই ইন্টারফেসের ম্যাক ঠিকানার সাথে সম্পর্কিত নয়। স্যুইচটিতে এটি দেখে মনে হচ্ছে কোনও ক্লায়েন্ট অন্য ক্লায়েন্টের আইপি ফাঁকি দেওয়ার চেষ্টা করছে। (এগুলি স্মার্ট লেয়ার 3 স্যুইচ)।
স্কট ডাকওয়ার্থ

আইপি এলিয়াসগুলি অপ্রচলিত এবং একটি হ্যাক, বাস্তবতা প্রতিফলিত করে না, প্রাইমারি নামিয়ে নিলে সমস্ত এলিয়াস নেমে যাবে তা উল্লেখ করবেন না। ব্যবহারের ipথেকে iproute2একই ইন্টারফেসে একাধিক ঠিকানা যোগ করতে।
পাইলোনা

উত্তর:


8

হ্যাঁ, সর্বোত্তম উপায় হ'ল একটি উপযুক্ত ব্যবসায়ের কেস তৈরি করা এবং সেগুলিকে সুইচগুলিতে নিয়ম শিথিল করা যাতে আপনার একটি এনআইসিতে একাধিক আইপি থাকে have

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