একই সাবনেটে আইপি সহ একাধিক শারীরিক ইন্টারফেস


13

আমার কাছে একটি লিনাক্স বাক্স রয়েছে যার উপরে 9 টি এনআইসি রয়েছে এবং আমি তাদের আটটির একই সাবনেটে অনন্য ঠিকানা থাকতে চাই, যেমন:

ifconfig eth1 192.168.123.1 netmask 255.255.0.0
ifconfig eth2 192.168.123.2 netmask 255.255.0.0
ifconfig eth3 192.168.123.3 netmask 255.255.0.0
...
ifconfig eth8 192.168.123.8 netmask 255.255.0.0

ডিফল্ট এআরপি আচরণটি এক্ষেত্রে চূড়ান্তভাবে প্রতিক্রিয়াশীল, যেহেতু এটির সমস্ত আইপি একচেটিয়াভাবে দিয়ে যাওয়ার জন্য সমস্ত ট্র্যাফিকের ফলস্বরূপ eth1, যা আমি চাই তার ঠিক বিপরীত।

তাই আমি চারপাশে গুজব ছড়িয়েছি এবং সিস্টোলিতে কিছু পরিবর্তন করে শেষ করেছি যেমন:

net.ipv4.conf.all.arp_filter=1
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2

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

আমি অনুমান করছি যে আমাকে আরপটেবল বা আইপ্রেট বা কিছু বা কিছু করার দরকার আছে তবে আমি এই ক্ষেত্রে সমুদ্রের কাছে হারিয়েছি।

বোনাস পয়েন্টস: সমাধান অবশ্যই লিনাক্স 2.6.27.27 এর সাথে সামঞ্জস্যপূর্ণ হতে হবে। (আরও সুনির্দিষ্টভাবে, স্ল্যাক্স 6.1.2)


আপনি কি রাউটিং টেবিলটি পোস্ট করতে পারেন?
পনসফোনজ করুন

2
এই কনফিগারেশন তৈরিতে আপনার উদ্দেশ্য কী? তুমি অর্জন করার জন্য কি চেষ্টা করতেছ?
ডেভিড শোয়ার্জ

এইভাবে পাগলামি মিথ্যা।
সাইরেক্স

আপনি যদি এই ইন্টারফেসগুলি বন্ড করতে চান তবে আপনাকে সেগুলি বন্ধন করতে হবে।
resmon6

1
@ ডেভিডশওয়ার্টজ না, মেশিনটি সুইচ (বা রাউটার) এর মতো কাজ করার কথা নয়। এটিকে আরও প্রতিটি ভিএমের জন্য ডেডিকেটেড ফিজিক্যাল এনআইসি দিয়ে 8 ভার্চুয়াল মেশিন চালানো হিসাবে আরও ভাবেন ( দ্রষ্টব্য: আমি ভিএম চালাচ্ছি না , এটি কেবল একটি উপমা )। একই নেটওয়ার্কের অন্য বাক্সের দৃষ্টিকোণ থেকে, আমার একক পিসি আটটি পৃথক পিসি থেকে একেবারে পৃথক হওয়া উচিত।
হতাশ_পরে

উত্তর:


17

আপনার একটি শক্তিশালী শেষ সিস্টেমের মডেল দরকার । লিনাক্স মৌলিকভাবে দুর্বল প্রেরণ সিস্টেমের মডেলের চারপাশে নির্মিত, সুতরাং এটি এই অ্যাপ্লিকেশনটির জন্য কোনও ভাল ওএস পছন্দ নয়।

আপনাকে এআরপি থেকে শুরু করে উত্স ঠিকানা নির্বাচনের নীতি রাউটিং পর্যন্ত আপনার প্রয়োজনীয় আচরণের প্রতিটি অংশ নকল করতে হবে। প্যাকেটগুলি যদি ভুল ইন্টারফেসে আসে তবে তা গ্রহণযোগ্যতা থেকে রোধ করতে আপনারও ফিল্টারগুলির প্রয়োজন হবে।

অবশ্যই প্রয়োজনীয় পদক্ষেপগুলি হ'ল:

  1. সমস্ত ইন্টারফেসে arp_filter = 1 এবং arp_ignore = 2 কনফিগার করুন।

  2. বহির্গামী ট্র্যাফিকের জন্য প্রতি ইন্টারফেস, উত্স-ভিত্তিক রাউটিং যুক্ত করুন। (উত্স ইন্টারফেস উত্স ঠিকানার উপর ভিত্তি করে চয়ন করা উচিত।)

  3. ভুল ইন্টারফেসে প্রাপ্ত প্যাকেটগুলি নিঃশব্দে ফেলে দেওয়ার জন্য প্রতি ইন্টারফেস ইনগ্রিস ফিল্টারিং যুক্ত করুন। (অন্য ইন্টারফেসে নির্ধারিত গন্তব্যের ঠিকানা সহ প্যাকেটগুলি))

দুর্ভাগ্যক্রমে, এই তিনটি পদক্ষেপ যে সমস্ত প্রয়োজন তা নিয়ে কোনও sensক্যমত্য নেই। দুর্বল প্রান্তের সিস্টেমের মডেলটি সম্পূর্ণ লিনাক্স টিসিপি / আইপি স্ট্যাকের মধ্যে অন্তর্নির্মিত এবং এটি মাল্টিকাস্টের মতো সূক্ষ্ম ইস্যুতে কী ভুল হতে পারে তা পরিষ্কার নয়।

উদাহরণস্বরূপ, আপনি কীভাবে সম্প্রচারের জন্য আউটপুট ইন্টারফেস চয়ন করবেন তা পরিষ্কার নয়। এটি কি তাদের সব বাইরে যেতে হবে? হতে পারে. যদি স্ট্যাকটি কোনও ইন্টারফেসের জন্য বরাদ্দ না করা উত্স ঠিকানা সহ আউটবাউন্ড সম্প্রচার পায় তবে সঠিক আচরণটি কী?

আবার, আপনি কাজের জন্য ভুল সরঞ্জামটি বেছে নিয়েছেন।


6

আপনি সম্ভবত 8/9 ইন্টারফেসের সাথে একটি সেতু তৈরি করতে চান এবং তারপরে সেই সেতুর জন্য একটি আইপি ঠিকানা বরাদ্দ করতে চান (সেতু-ইউটস প্যাকেট, 'brctl add' কমান্ড)।

এইভাবে ব্রিজটি একটি স্যুইচ হিসাবে কাজ করবে এবং আপনার সাবনেটে একটি আইপি ঠিকানা রাখতে পারে।


আফাইক, লিনাক্সের জন্য এটি আসলে সঠিক উত্তর হওয়া উচিত। লিনাক্স সেতু ডিভাইসগুলি ব্যবহার করে ডেভিডের উত্তরে উল্লিখিত অনেকগুলি সমস্যার সমাধান করে (যেমন একটি ভাল এল 2 লজিকাল নেটওয়ার্ক তৈরি করে এল 3 সমস্যাগুলি এড়ানো)।
ডেভ

4

আমি শারীরিক ইন্টারফেসের সাথে সম্পর্কিত হওয়ার পরামর্শ দিই তারপরে একক বন্ধিত ইন্টারফেসের সমস্ত ঠিকানা কনফিগার করে।

আপনার সুইচটিতেও সমর্থন দরকার হবে।

এখানে একটি মিনি টিউটোরিয়াল যা আপনি শুরু করতে ব্যবহার করতে পারেন।


4

দেখে মনে হচ্ছে আপনি 9 টি পৃথক মেশিনের সমতুল্য একটি পরীক্ষার পরিবেশ চান এবং এটি বিশ্বাস করে যে একটি মেশিনে 9 টি ইন্টারফেস এটি অনুকরণ করতে পারে। লিনাক্সে ডেভিড শোয়ার্জ বর্ণিত কারণগুলির কারণে এটি কেবল একটি স্ট্যাকের মাধ্যমে এটি করতে পারে না। বিটিডিটি এবং দাগ রয়েছে। এটি 2 ইন্টারফেসের সাথে যথেষ্ট খারাপ ছিল।

আপনার এক হোস্টে 8 বা 9 টি পৃথক ভার্চুয়াল মেশিন চালানো এবং এই ভার্চুয়াল মেশিনগুলিতে 8 বা 9 ইন্টারফেস ব্রিজ করা আরও ভাল সমাধান হতে পারে।


পঠন সংস্থানগুলি: ইউনিক্স নেটওয়ার্ক প্রোগ্রামিং: স্টিভেনস, ফেনার এবং রুডফ দ্বারা সকেটস নেটওয়ার্কিং এপিআই। আরএফসি 1122 এবং আরএফসি 4907 দেখুন।
স্কেপেরেন

0

হ্যাঁ ডেভিড শোয়ার্টজের পরামর্শ অনুসরণ করে এটি সম্ভব:

echo -ne 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo -ne 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
echo -ne 0 > /proc/sys/net/ipv4/conf/eth3/rp_filter

// যথাযথ কার্যকারিতার জন্য অর্থাৎ এথ 1 এবং এথ 1 উভয় একই সাবনেটে থাকলে উত্পন্ন করার জন্য এথ 1 থেকে এআরপি জবাব দেয়

echo -ne 0 > /proc/sys/net/ipv4/conf/all/arp_filter
echo -ne 2 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo -ne 0 > /proc/sys/net/ipv4/conf/eth0/arp_filter
echo -ne 2 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo -ne 0 > /proc/sys/net/ipv4/conf/eth1/arp_filter
echo -ne 2 > /proc/sys/net/ipv4/conf/eth1/arp_ignore

//Create a table called "new_rt_table" and create a routing rule that says any packet with a mark equal to '1' gets routed according to the "new_rt_table"(can name it whatever you want) table. The file /etc/iproute2/rt_tables is the only source of table names on the system. Internally, routing tables have integer identifiers.

echo 1 new_rt_table >> /etc/iproute2/rt_tables
ip rule add from all fwmark 1 table new_rt_table

// প্যাকেটগুলিকে এথ 1 এর মাধ্যমে রুট করতে "new_rt_table" টেবিলটি সেটআপ করুন

ip route add default dev eth1 table new_rt_table
ip route show table new_rt_table

// চিহ্নিত প্যাকেটগুলি যাতে 'আইপ রুট' এথ 1 এর মাধ্যমে এটি রুট করতে পারে

iptables -F -t mangle
iptables -t mangle -I OUTPUT -s <ip addr of eth1> -o eth0 -j MARK --set-mark 1

// কার্নেল কনফিগারেশনে একাধিক রাউটিং টেবিলগুলির জন্য সমর্থন সক্ষম করুন।

কার্নেল কনফিগারেশন

Support নেটওয়ার্কিং সমর্থন → নেটওয়ার্কিং বিকল্প

[*] আইপি: উন্নত রাউটার

[*] আইপি: পলিসি রাউটিং

CONFIG_IP_ADVANCED_ROUTER

CONFIG_IP_MULTIPLE_TABLES

// উপরের পদক্ষেপগুলি E1 থেকে সঠিকভাবে প্রস্থান করার জন্য প্যাকেটগুলিকে পুনর্নির্দেশ করে eth

কেউ যদি এটির কাজ করে তবে দয়া করে অন্য কোনও পদ্ধতিতে পরামর্শ দিন।

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