কোন প্যাকেটগুলি কোথায় যায় তা আপনি কীভাবে সিদ্ধান্ত নিতে চান তার উপর নির্ভর করে বিভিন্ন সম্ভাবনা রয়েছে। টিসিপি / আইপি নেটওয়ার্কিং কীভাবে লিনাক্সে কাজ করে সে সম্পর্কে তাদের বেশিরভাগের কিছুটা বোঝার প্রয়োজন হবে। প্রধান সরঞ্জামগুলি আপনাকে থাকবে না জানি জটিল জিনিস iptables
(উবুন্টু: iptables- র ) এবং iproute2 ( ip
কমান্ড) (উবুন্টু: iproute , iproute-ডক )।
যদি আপনি টার্গেটের আইপি ঠিকানার মাধ্যমে সম্পূর্ণ বৈষম্য করতে পারেন তবে এটি সহজ: আইপি ঠিকানাগুলি আপনার ইচ্ছা অনুযায়ী চালাবেন route উদাহরণস্বরূপ, নিম্নলিখিত কমান্ডগুলি 1.2.3.3 এর জন্য সমস্ত প্যাকেট তৈরি করবে। এক্স এবং 1.2.4.2 যেতে হবে ppp0
এবং অন্যান্য প্যাকেটগুলি দিয়ে যেতে হবে eth0
।
route add -net 1.2.3.4/24 ppp0
route add -host 1.2.4.2 ppp0
route add -net 0.0.0.0/0 eth0
আরও জটিল প্রয়োজনীয়তার জন্য আপনার ব্যবহার শুরু করতে হবে iptables
এবং ip route
। উদাহরণস্বরূপ, নিম্নলিখিত কমান্ডগুলি বিশেষ রাউটিং টেবিলগুলি সেট আপ করে যাতে 1 চিহ্নিত সমস্ত প্যাকেটগুলি বের হয়ে যায় eth0
এবং 2 চিহ্নিত সমস্ত প্যাকেটগুলি বাইরে চলে যায় ppp0
( localhost
লুপব্যাক ইন্টারফেসের সাথে থাকা প্যাকেটগুলি বাদে )।
ip rule add fwmark 1 table 1
ip route add 127.0.0.0/0 table 1 dev lo
ip route add 0.0.0.0/0 table 1 dev eth0
ip rule add fwmark 2 table 2
ip route add 127.0.0.0/8 table 2 dev lo
ip route add 0.0.0.0/0 table 2 dev ppp0
এখন আপনি iptables
বহির্গামী প্যাকেটগুলিকে "ম্যাঙ্গেল" করতে ব্যবহার করতে পারেন , এমন একটি চিহ্ন যুক্ত করুন যা তারা সিদ্ধান্ত নেবে যে তারা কোন পথে চলে। উদাহরণস্বরূপ, সমস্ত বিদায়ী এসএমটিপি ট্র্যাফিক (পোর্ট 25) এর মাধ্যমে কীভাবে প্রেরণ করা যায় eth0
এবং সমস্ত ট্র্যাফিকের proxy
মাধ্যমে ব্যবহারকারী হিসাবে চলমান একটি অ্যাপ্লিকেশন দ্বারা উত্পন্ন হয় ppp0
।
iptables -t mangle -A OUTPUT -p tcp --dport 25 -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -m owner --uid-owner proxy -j MARK --set-mark 2
ইন্টারনেটে সংযুক্ত 2 টি নেটওয়ার্ক ইন্টারফেসও দেখুন । এক ডোমেইন নাম অনুযায়ী ব্যবহার করার জন্য চয়ন এবং বিভিন্ন নেটওয়ার্ক ইন্টারফেসের সাথে যুক্ত হন সফ্টওয়্যার ।
যখন উভয় ইন্টারফেস সংযুক্ত থাকে তখন আপনাকে এই আদেশগুলি চালনার ব্যবস্থা করতে হবে। আমি আপনাকে প্রস্তাব দিচ্ছি যে আপনি এমন একটি স্ক্রিপ্ট লিখুন যা আপনাকে /etc/network/if-up.d/0justin-routes
চাইলে আদেশগুলি চালায়। এই স্ক্রিপ্টটি কার্যকর করা হবে যখনই কোনও নেটওয়ার্ক ইন্টারফেস উপস্থিত হবে; এর নামটি শুরু হওয়ার সাথে সাথে 0
এটি প্রক্রিয়াটির প্রথম দিকে চলবে, অ্যাপ্লিকেশন-নির্দিষ্ট সেটআপের আগে যা রুটগুলি ঠিকঠাক হওয়ার আশা করতে পারে। /etc/network/if-down.d/
ইন্টারফেসগুলির মধ্যে একটি নীচে নেমে আসলে আপনি জিনিসগুলি করতে চান এমন ক্ষেত্রে প্রতিসাম্য রয়েছে। (সমস্ত সম্পর্কিত রুটগুলি স্বয়ংক্রিয়ভাবে মুছে ফেলা হবে, যা আপনি যখন অন্য প্যাকেটগুলি অন্য ইন্টারফেসে ফিরে যেতে চান তখন আটকা পড়ে থাকতে পারে stra)
Ifup স্ক্রিপ্টগুলি নথিভুক্ত করা হয় interfaces(5) man page
। মূল বিষয়টি হ'ল যে ইন্টারফেসটির নামটি উপরে বা নীচে আনা হচ্ছে তা এনভায়রনমেন্ট ভেরিয়েবলের মধ্যে রয়েছে IFACE
। অন্য ইন্টারফেসটি ইতিমধ্যে রয়েছে কিনা তা আপনি জানতে পারবেন if ifconfig | sed 's/ .*//' | grep -Fqx 'eth0'; then …
।