স্থিতিশীলভাবে এবং গতিশীলভাবে ট্র্যাফিক পরিচালনা করতে একটি লিনাক্স সার্ভারকে কীভাবে রাউটারে পরিণত করবেন - পার্ট 10


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

প্রথম জিনিসগুলি প্রথমে কিছু সংজ্ঞা দেওয়া যাক:

  1. সাধারণ কথায়, একটি প্যাকেট হ'ল প্রাথমিক ইউনিট যা কোনও নেটওয়ার্কের মধ্যে তথ্য প্রেরণ করতে ব্যবহৃত হয়। নেটওয়ার্ক প্রোটোকল হিসাবে টিসিপি/আইপি ব্যবহার করে এমন নেটওয়ার্কগুলি ডেটা সংক্রমণের জন্য একই নিয়ম অনুসরণ করে: প্রকৃত তথ্য প্যাকেটে বিভক্ত যা ডেটা এবং যেখানে পাঠানো উচিত সেই ঠিকানা উভয়ই তৈরি করা হয়
  2. রাউটিং হ'ল নেটওয়ার্কের অভ্যন্তরে ডেটা থেকে গন্তব্য পর্যন্ত ডেটা " গাইডিং " করা প্রক্রিয়া
  3. স্ট্যাটিক রাউটিং এর জন্য একটি রাউটিং সারণিতে সংজ্ঞায়িত নিয়মের ম্যানুয়ালি কনফিগার করা সেট প্রয়োজন। এই নিয়মগুলি স্থির হয় এবং এটি একটি মেশিন থেকে অন্য মেশিনে যাতায়াত করার সাথে সাথে প্যাকেটটি যেভাবে যেতে হবে তা নির্ধারণ করতে ব্যবহৃত হয়
  4. ডায়নামিক রাউটিং বা স্মার্ট রাউটিং (আপনি যদি চান) এর অর্থ হ'ল প্যাকেটটি যে পথটি অনুসরণ করে তার প্রয়োজন অনুসারে সিস্টেম স্বয়ংক্রিয়ভাবে পরিবর্তন করতে পারে <

উন্নত আইপি এবং নেটওয়ার্ক ডিভাইস কনফিগারেশন

আইপ্রেট প্যাকেজ নেটওয়ার্কিং এবং ট্র্যাফিক নিয়ন্ত্রণ পরিচালনার জন্য সরঞ্জামগুলির একটি সেট সরবরাহ করে যা আমরা এই নিবন্ধটি জুড়ে ব্যবহার করব কারণ তারা লিফ্যাসি সরঞ্জামগুলির প্রতিস্থাপন যেমন ইফকনফিগ এবং রুট কে প্রতিনিধিত্ব করে।

আইপ্রেট স্যুটে কেন্দ্রীয় ইউটিলিটিটিকে কেবল আইপি বলা হয়। এর বেসিক সিনট্যাক্সটি নিম্নরূপ:

# ip object command

যেখানে অবজেক্ট নিম্নলিখিতগুলির মধ্যে কেবল একটি হতে পারে (কেবলমাত্র সর্বাধিক ঘন ঘন অবজেক্টগুলি দেখানো হয় - আপনি একটি সম্পূর্ণ তালিকার জন্য << আইপ কে উল্লেখ করতে পারেন):

  1. লিঙ্ক : নেটওয়ার্ক ডিভাইস
  2. অ্যাডার : কোনও ডিভাইসে প্রোটোকল (আইপি বা আইপিভি 6) ঠিকানা।
  3. রুট : রাউটিং টেবিল এন্ট্রি
  4. বিধি : পলিসি ডেটাবেস ডেটাবেজে নিয়ম করুন

যেখানে কমান্ড কোনও নির্দিষ্ট ক্রিয়া প্রতিনিধিত্ব করে যা বস্তুর উপর সম্পাদন করা যায়। কোনও নির্দিষ্ট অবজেক্টে প্রয়োগ করা যেতে পারে এমন কমান্ডের সম্পূর্ণ তালিকা প্রদর্শন করতে আপনি নিম্নলিখিত কমান্ডটি চালাতে পারেন:

# ip object help

উদাহরণ স্বরূপ,

# ip link help

উপরের চিত্রটি উদাহরণস্বরূপ দেখায় যে আপনি নিম্নলিখিত কমান্ডের সাহায্যে নেটওয়ার্ক ইন্টারফেসের স্থিতি পরিবর্তন করতে পারবেন:

# ip link set interface {up | down}

আইপি ’ কমান্ডের আরও উদাহরণের জন্য, আইপি ঠিকানা কনফিগার করতে 10 টি দরকারী ‘আইপি’ কমান্ড পড়ুন

এই উদাহরণে, আমরা eth1 অক্ষম ও সক্ষম করব:

# ip link show
# ip link set eth1 down
# ip link show

আপনি যদি eth1 পুনরায় সক্ষম করতে চান,

# ip link set eth1 up

সমস্ত নেটওয়ার্ক ইন্টারফেস প্রদর্শন করার পরিবর্তে, আমরা তাদের মধ্যে একটি নির্দিষ্ট করতে পারি:

# ip link show eth1

যা এথ 1 এর জন্য সমস্ত তথ্য ফেরত দেবে।

আপনি নিম্নলিখিত 3 টি কমান্ডের সাথে আপনার বর্তমান প্রধান রাউটিং টেবিলটি দেখতে পারেন:

# ip route show
# route -n
# netstat -rn

তিনটি কমান্ডের আউটপুট প্রথম কলামটি লক্ষ্য নেটওয়ার্ককে নির্দেশ করে। আইপ রুট এর ফলাফল ( দেব কীওয়ার্ডটি অনুসরণ করে) সেই নেটওয়ার্ক ডিভাইসগুলি উপস্থাপন করে যা সেই নেটওয়ার্কগুলিতে ফিজিক্যাল গেটওয়ে হিসাবে পরিবেশন করে।

যদিও আজকাল আইপি কমান্ড রুটের চেয়ে বেশি পছন্দ করা হয়, তবুও আপনি বিশ্রামের বিশদ ব্যাখ্যার জন্য লোক << আইপ-রুট এবং ম্যান রুট উল্লেখ করতে পারেন কলামগুলির।

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

আমাদের পরীক্ষার পরিবেশ নিম্নরূপ:

Client 1: CentOS 7 [enp0s3: 192.168.0.17/24] - dev1
Router: Debian Wheezy 7.7 [eth0: 192.168.0.15/24, eth1: 10.0.0.15/24] - dev2
Client 2: openSUSE 13.2 [enp0s3: 10.0.0.18/24] - dev4

দেব 1 (সেন্টস বক্স) এ রাউটিং টেবিলটি দেখুন:

# ip route show

এবং তারপরে এটি enp0s3 NIC এবং 10.0.0.0/24 নেটওয়ার্কের হোস্টগুলিতে অ্যাক্সেস করার জন্য 192.168.0.15 এর সাথে সংযোগটি ব্যবহার করার জন্য এটি সংশোধন করুন:

# ip route add 10.0.0.0/24 via 192.168.0.15 dev enp0s3

যা মূলত পড়েছে, "এনপ0 এস 3 নেটওয়ার্ক ইন্টারফেসের মাধ্যমে গেটওয়ে হিসাবে 192.168.0.15 ব্যবহার করে 10.0.0.0/24 নেটওয়ার্কে একটি রুট যুক্ত করুন"।

অনুরূপভাবে 192.168.0.0/24 নেটওয়ার্কে পিং হোস্টগুলিতে ডেভ 4 (ওপেনসুএস বক্স) তে:

# ip route add 192.168.0.0/24 via 10.0.0.15 dev enp0s3

শেষ অবধি, আমাদের ডেবিয়ান রাউটারে ফরওয়ার্ডিং সক্ষম করতে হবে:

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

এবার আসুন পিং:

এবং,

বুটগুলি জুড়ে এই সেটিংস অবিচ্ছিন্ন করতে, রাউটারে /etc/sysctl.conf সম্পাদনা করুন এবং নিশ্চিত করুন যে নেট.ipv4.ip_forward ভেরিয়েবলটি নিম্নলিখিত হিসাবে সত্য হয়ে গেছে:

net.ipv4.ip_forward = 1

তদ্ব্যতীত, উভয় ক্লায়েন্টের NIC গুলি কনফিগার করুন (ওপেনসুএসে /etc/sysconfig/নেটওয়ার্ক এর মধ্যে কনফিগারেশন ফাইলটি সন্ধান করুন এবং CentOS- এ - উভয় ক্ষেত্রে এটিকে ifcfg-enp0s3 বলা হয়।

ওপেনসুএস বক্স থেকে কনফিগারেশন ফাইলটি এখানে:

BOOTPROTO=static
BROADCAST=10.0.0.255
IPADDR=10.0.0.18
NETMASK=255.255.255.0
GATEWAY=10.0.0.15
NAME=enp0s3
NETWORK=10.0.0.0
ONBOOT=yes

লিনাক্স মেশিনটি রাউটার হিসাবে ব্যবহার করা যেতে পারে এমন অন্য পরিস্থিতিটি যখন আপনাকে কোনও ব্যক্তিগত ল্যানের সাথে আপনার ইন্টারনেট সংযোগ ভাগ করে নেওয়া দরকার।

Router: Debian Wheezy 7.7 [eth0: Public IP, eth1: 10.0.0.15/24] - dev2
Client: openSUSE 13.2 [enp0s3: 10.0.0.18/24] - dev4

পূর্ববর্তী উদাহরণের মতো ক্লায়েন্টে প্যাকেট ফরওয়ার্ডিং এবং স্ট্যাটিক রাউটিং টেবিল সেটআপ করা ছাড়াও, আমাদের রাউটারে কয়েকটি iptables বিধি যুক্ত করতে হবে:

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

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

মাসওয়ার্ডে ইঙ্গিত দেয় যে এই এনআইসির একটি গতিশীল আইপি রয়েছে এবং এটি ইন্টারনেটের " বুনো বুনো পৃথিবী " এ প্যাকেজটি প্রেরণ করার আগে প্যাকেটের ব্যক্তিগত উত্সের ঠিকানা হতে হবে রাউটারের সর্বজনীন আইপিতে পরিবর্তিত হয়েছে।

অনেক হোস্ট সহ একটি ল্যানে, রাউটার /proc/নেট/ip_conntrack এ প্রতিষ্ঠিত সংযোগগুলির খোঁজ রাখে যাতে ইন্টারনেট থেকে প্রতিক্রিয়া কোথায় ফিরে আসে তা এটি জানে।

এর আউটপুট শুধুমাত্র অংশ:

# cat /proc/net/ip_conntrack

নিম্নলিখিত স্ক্রিনশট প্রদর্শিত হয়।

যেখানে প্যাকেটের মূল (ওপেনসুএস বক্সের ব্যক্তিগত আইপি) এবং গন্তব্য (গুগল ডিএনএস) হাইলাইট করা হয়েছে। এটি চলমান ফলাফল:

# curl linux-console.net

ওপেনসুএস বক্সে।

যেহেতু আমি নিশ্চিত যে আপনি ইতিমধ্যে অনুমান করতে পারেন, রাউটারটি গুগলের 8.8.8.8 নেমসার্ভার হিসাবে ব্যবহার করছে, যা ব্যাখ্যা করে যে বহির্গামী প্যাকেটের গন্তব্য কেন সেই ঠিকানায় ইঙ্গিত করে।

দ্রষ্টব্য: ইন্টারনেট থেকে আগত প্যাকেজগুলি কেবল তখনই গৃহীত হয় যখন সেগুলি ইতিমধ্যে প্রতিষ্ঠিত সংযোগের একটি অংশ (কমান্ড # 2), বহির্গামী প্যাকেজগুলিকে " ফ্রি প্রস্থান " (কমান্ড # 3) অনুমোদিত হয়।

৮ ম খণ্ডে বর্ণিত পদক্ষেপগুলি অনুসরণ করে আপনার iptables নিয়মগুলিকে অবিচলিত করতে ভুলবেন না - এই সিরিজের আইপটেবলগুলি ফায়ারওয়াল কনফিগার করুন।

কোয়াগা সহ ডায়নামিক রাউটিং

আজকাল, লিনাক্সে গতিশীল রাউটিংয়ের জন্য সর্বাধিক ব্যবহৃত সরঞ্জামটি হ'ল কোয়াগা । এটি অপেক্ষাকৃত স্বল্প ব্যয়যুক্ত লিনাক্স সার্ভার সহ সিস্টেম অ্যাডমিনিস্ট্রেটরগুলিকে বাস্তবায়িত করতে, একই কার্যকারিতা যা শক্তিশালী (এবং ব্যয়বহুল) সিসকো রাউটারগুলি সরবরাহ করে।

সরঞ্জামটি নিজেই রাউটিং পরিচালনা করে না, বরং প্যাকেটগুলি হ্যান্ডেল করার জন্য নতুন সেরা রুটগুলি শিখার সাথে সাথে কার্নেল রাউটিং টেবিলটি পরিবর্তন করে।

যেহেতু এটি জেব্রার একটি কাঁটাচামচ, এমন একটি প্রোগ্রাম যার বিকাশ কিছুদিন আগে বন্ধ হয়ে গেছে, এটি historicalতিহাসিক কারণে জেব্রার চেয়ে একই আদেশ এবং কাঠামো বজায় রাখে। এজন্য আপনি এই জায়গা থেকে জেব্রা সম্পর্কিত অনেকগুলি রেফারেন্স দেখতে পাবেন।

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

আপনার নির্বাচিত বিতরণে কোয়াগা ইনস্টল করতে:

# aptitude update && aptitude install quagga 				[On Ubuntu]
# yum update && yum install quagga 					[CentOS/RHEL]
# zypper refresh && zypper install quagga 				[openSUSE]

আমরা উদাহরণ # 3 এর মতো একই পরিবেশটি ব্যবহার করব, কেবলমাত্র পার্থক্যের সাথে যে এথ 0 আইপি 192.168.0.1 এর সাথে একটি প্রধান গেটওয়ে রাউটারের সাথে সংযুক্ত।

এরপরে /ইত্যাদি/কোয়াগা/ডেমনস সম্পাদনা করুন,

zebra=1
ripd=1

এখন নিম্নলিখিত কনফিগারেশন ফাইল তৈরি করুন।

# /etc/quagga/zebra.conf
# /etc/quagga/ripd.conf

এবং এই লাইনগুলি যুক্ত করুন (আপনার পছন্দের হোস্টনাম এবং পাসওয়ার্ডের জন্য প্রতিস্থাপন করুন):

service quagga restart
hostname    	dev2
password    	quagga
# service quagga restart

দ্রষ্টব্য: << ripd.conf হ'ল রাউটিং ইনফরমেশন প্রোটোকলের কনফিগারেশন ফাইল, যা কোন নেটওয়ার্কে পৌঁছাতে পারে এবং কতদূর (হপসের পরিমাণের ক্ষেত্রে) সেগুলির তথ্য রাউটার সরবরাহ করে।

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

# chown quagga:quaggavty /etc/quagga/*.conf
# chmod 640 /etc/quagga/*.conf 

এই উদাহরণে আমরা দুটি রাউটারের সাথে নিম্নলিখিত সেটআপটি ব্যবহার করব (<< রাউটার # 2 এর জন্য কনফিগারেশন ফাইলগুলি আগে বর্ণিত হিসাবে তৈরি করার বিষয়টি নিশ্চিত করুন):

গুরুত্বপূর্ণ: উভয় রাউটারের জন্য নিম্নলিখিত সেটআপটি পুনরাবৃত্তি করতে ভুলবেন না।

জেব্রার সাথে সংযোগ করুন (পোর্ট 2601 এ শুনুন), যা রাউটার এবং কার্নেলের মধ্যে যৌক্তিক মধ্যস্থতাকারী:

# telnet localhost 2601

/etc/quagga/zebra.conf ফাইলে সেট করা পাসওয়ার্ডটি প্রবেশ করুন এবং তারপরে কনফিগারেশন সক্ষম করুন:

enable
configure terminal

প্রতিটি এনআইসির আইপি ঠিকানা এবং নেটওয়ার্ক মাস্ক প্রবেশ করান:

inter eth0
ip addr 192.168.0.15
inter eth1
ip addr 10.0.0.15
exit
exit
write

এখন আমাদের আরআইপি ডিমন টার্মিনাল (পোর্ট 2602) এর সাথে সংযোগ স্থাপন করতে হবে:

# telnet localhost 2602

/etc/quagga/ripd.conf ফাইলে কনফিগার করা হিসাবে ব্যবহারকারীর নাম এবং পাসওয়ার্ড লিখুন এবং তারপরে নিচে কমান্ডগুলি টাইপ করুন (স্পষ্ট করার জন্য মন্তব্য যুক্ত করা হয়েছে):

enable turns on privileged mode command.
configure terminal changes to configuration mode. This command is the first step to configuration
router rip enables RIP.
network 10.0.0.0/24 sets the RIP enable interface for the 10.0.0.0/24 network. 
exit
exit
write writes current configuration to configuration file.

দ্রষ্টব্য: উভয় ক্ষেত্রেই কনফিগারেশনটি আমরা পূর্বে যুক্ত হওয়া লাইনে সংযুক্ত করা হয়েছে ( /etc/quagga/zebra.conf এবং /etc/quagga/ripd.conf ) ।

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

# show ip route

আপনি যদি আলাদা প্রোটোকল বা সেটআপ চেষ্টা করতে চান তবে আরও ডকুমেন্টেশনের জন্য আপনি কোয়াগা প্রকল্প সাইটটি উল্লেখ করতে পারেন।

উপসংহার

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