আগত হিসাবে একই ইন্টারফেসে উত্তর?


50

আমার দুটি ইন্টারফেস সহ একটি সিস্টেম রয়েছে। উভয় ইন্টারফেস ইন্টারনেটে সংযুক্ত। এর মধ্যে একটি ডিফল্ট রুট হিসাবে সেট করা হয়েছে; এর একটি পার্শ্ব প্রতিক্রিয়া হ'ল যদি কোনও প্যাকেটটি অ-ডিফল্ট-রুট ইন্টারফেসে আসে তবে ডিফল্ট রুট ইন্টারফেসের মাধ্যমে উত্তরটি ফেরত পাঠানো হয়। সংযোগটি ট্র্যাক করার জন্য iptables (বা অন্য কিছু) ব্যবহার করার কোনও উপায় আছে কি ইন্টারফেসের মাধ্যমে উত্তরটি পাঠিয়েছে?

উত্তর:


60
echo 200 isp2 >> /etc/iproute2/rt_tables
ip rule add from <interface_IP> dev <interface> table isp2
ip route add default via <gateway_IP> dev <interface> table isp2

উপরেরগুলিতে আইফিল্টার সহ কোনও প্যাকেট চিহ্নিত করার প্রয়োজন নেই। এটি কাজ করে কারণ বহির্গামী (উত্তর) প্যাকেটে আইপি ঠিকানা থাকবে যা মূলত বহির্গামী প্যাকেটের উত্স (থেকে) ঠিকানা হিসাবে ২ য় ইন্টারফেসের সাথে সংযোগ করতে ব্যবহৃত হয়েছিল।


7
বাহ, আমি ঠিক তাই খুঁজছিলাম আরএইচ-ভিত্তিক ডিস্ট্রোসের জন্য যে কেউ সন্ধান করছে সে ক্ষেত্রে আপনি 'नियम-এথ0' বা 'রুট-এথ0' (উদাহরণস্বরূপ) নামের ফাইলগুলিতে প্রাসঙ্গিক নিয়ম এবং রুট কমান্ডগুলি রাখতে পারেন যা আইফআপ / আইডাউডে যুক্ত বা সরানো হবে। এই ফাইলগুলি ifcfg-eth0 ফাইলের পাশাপাশি রাখুন। আইপিভি 6-এর জন্য 'রুট 6-এথ0' কার্যকারিতা অন্তর্নির্মিত রয়েছে তবে কোনও 'नियम 6-এথ0' অন্তর্নির্মিত হয়নি (এখনও)।
কাইল ব্রেন্টলে

18
আমার পক্ষে এটি কেবল তখনই কাজ হয়েছিল যখন আমি কমান্ডের devমধ্যে ip ruleip rule add from <interface_IP> table isp2
পরমকে

2
প্রাসঙ্গিক ইন্টারফেসের আওতায় up ip rule add from <interface_IP> table isp2এবং up ip route add default via <gateway_IP> dev ppp0 table isp2আপনার / ইত্যাদি / নেটওয়ার্ক / ইন্টারফেসগুলিতে ইন্টারফেস যুক্ত করে আপনি এগুলি তৈরি করতে পারেন ।
g.rket

4
এটি আমার বাক্সে কাজ করতে পেতে আমাকে সরিয়ে ফেলতে dev <interface>হয়েছিল ip rule। যদি আমি সঠিকভাবে বুঝতে পারি তবে dev <interface>প্যাকেটগুলি ফিল্টার করে যা কোনওভাবে ভুল ইন্টারফেসে সেট করা ছিল যা ওভাররাইড হওয়া রুট দ্বারা সঠিক ইন্টারফেসে উঠতে হবে তবে ইন্টারফেসের মাধ্যমে নিয়ম ফিল্টারিং তা ঘটতে বাধা দিচ্ছিল।
বিনকি

2
অন্যান্য লোকের মতো আমাকেও এই কাজ করার জন্য আদেশটি সরিয়ে ফেলতে dev <interface>হয়েছিল ip rule। উত্তর আপডেট করুন! এই বিবরণ ব্যতীত, এটি একটি কবজ মত কাজ করে। অনেক ধন্যবাদ, পিটার!
মুনসুইপ

6

নিম্নলিখিত কমান্ডগুলি eth1প্যাকেটগুলির জন্য একটি বিকল্প রাউটিং টেবিল তৈরি করে যা চিহ্ন 1 (লোকালহোস্টের প্যাকেট ব্যতীত) রয়েছে। ipকমান্ড থেকে iproute2 স্যুট (উবুন্টু: iproute iproute http://bit.ly/software-small ইনস্টল করুন , iproute-ডক ইনস্টল করুন iproute-ডক http://bit.ly/software-small )।

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 eth1

কাজের অর্ধেকটি প্যাকেটগুলি স্বীকৃতি দিচ্ছে যা অবশ্যই 1 নম্বর পেয়েছে; তারপরে iptables -t mangle -A OUTPUT … -j MARK --set-mark 1এই প্যাকেটগুলিতে রাউটিং টেবিলের মাধ্যমে এগুলি চালিত করতে ব্যবহার করুন I

iptables -t mangle -A OUTPUT -m conntrack --ctorigdst 1.2.3.4 -j MARK --set-mark 1

আমি নিশ্চিত নই যে এটি যথেষ্ট কিনা, আগত প্যাকেটগুলিতে ট্র্যাক করতে কনট্র্যাক মডিউলটি বলার জন্য অন্য কোনও নিয়মের প্রয়োজন হতে পারে।


খুশী হলাম। আমি চিহ্নিতকরণ সম্পর্কে সব ভুলে গেছি। এটা আমাকে সেখানে পাওয়া উচিত।
শন জে গফ

5

পিটারের প্রস্তাবিত সমাধানের সাথে স্থানীয়ভাবে উত্পন্ন প্যাকেটগুলির সাথে আমার সমস্যা ছিল, আমি দেখতে পেয়েছি যে নিম্নলিখিতগুলি সংশোধন করে:

echo 200 isp2 >> /etc/iproute2/rt_tables
ip rule add from <interface_IP> table isp2 priority 900
ip rule add from dev <interface> table isp2 priority 1000
ip route add default via <gateway_IP> dev <interface> table isp2
ip route add <interface_prefix> dev <interface> proto static scope link src <interface_IP> table isp2

দ্রষ্টব্য: আপনি উপরের ৪ র্থ লাইনটির সাথে সিনট্যাক্স সমস্যাগুলিতে দৌড়াতে পারেন। এই জাতীয় ক্ষেত্রে 4 র্থ কমান্ডের বাক্য গঠনটি এখন এটি হতে পারে:

ip rule add iif <interface> table isp2 priority 1000

অনেক চেষ্টা করেও আমার দৃশ্যে কিছুই কাজ করেনি, বাদে .. অনেক ধন্যবাদ।
অ্যাগাগি

3

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


পরীক্ষা করে শুরু করুন (নোট করুন এটি @ পিটারের উত্তরের সাথে খুব মিল) আমি নিম্নলিখিতটি ধরে নিচ্ছি:

  • eno0 isp0 এবং সামগ্রিক ডিফল্ট গেটওয়ে রয়েছে
  • eno1 isp1 এবং আইপি / পরিসর 192.168.1.2/24 গেটওয়ে 192.168.1.1 সহ রয়েছে

আদেশগুলি নিম্নরূপ:

$ echo 200 isp1 >> /etc/iproute2/rt_tables
$ ip rule add from eno1 table isp1
$ ip route add default via 192.168.1.1 dev eno1 table isp1

ফায়ারওয়াল কোনওভাবেই জড়িত নয়। প্রত্যুত্তর প্যাকেটগুলি সর্বদা সঠিক আইপি থেকে প্রেরণ করা হত - তবে আগে ভুল ইন্টারফেসের মাধ্যমে প্রেরণ করা হত। এখন সঠিক আইপি থেকে এই প্যাকেটগুলি সঠিক ইন্টারফেসের মাধ্যমে প্রেরণ করা হবে।


উপরের কাজটি ধরে নিয়েই, আপনি এখন নিয়ম এবং রুটের পরিবর্তনগুলি স্থায়ী করতে পারেন। এটি ইউনিক্সের কোন সংস্করণ আপনি ব্যবহার করছেন তার উপর নির্ভর করে। আগের মত, আমি একটি আরএইচ / সেন্টোস-ভিত্তিক লিনাক্স বিতরণ ধরে নিচ্ছি।

$ echo "from eno1 table isp1" > /etc/sysconfig/network-scripts/rule-eno1
$ echo "default via 192.168.1.1 dev eno1 table isp1" > /etc/sysconfig/network-scripts/route-eno1

নেটওয়ার্ক পরিবর্তন স্থায়ী কিনা তা পরীক্ষা করুন:

$ ifdown eno1 ; ifup eno1

যদি এটি কাজ না করে, আরএইচ / সেন্টোসের পরবর্তী সংস্করণগুলিতে আপনাকে দুটি বিকল্পের মধ্যে একটির সাথেও যেতে হবে:

  • ডিফল্ট NetworkManager.service ব্যবহার করবেন না ; ব্যবহার করুন network.service পরিবর্তে। আমি এর জন্য প্রয়োজনীয় সঠিক পদক্ষেপগুলি অনুসন্ধান করে দেখিনি। আমি কল্পনা করব এটিতে পরিষেবাগুলি সক্ষম / অক্ষম করার জন্য মানক chkconfig বা systemctl কমান্ড জড়িত ।
  • নেটওয়ার্ক ম্যানেজার-ডিসপ্যাচার-রাউটিং-বিধি প্যাকেজ ইনস্টল করুন

ব্যক্তিগতভাবে আমি নিয়ম প্যাকেজটি ইনস্টল করতে পছন্দ করি কারণ এটি সহজ আরও সমর্থিত পদ্ধতির:

$ yum install NetworkManager-dispatcher-routing-rules

আর একটি শক্তিশালী সুপারিশ হ'ল আরপ ফিল্টারিং সক্ষম করা কারণ এটি ডুয়াল নেটওয়ার্ক কনফিগারেশনের সাথে সম্পর্কিত অন্যান্য সমস্যাগুলি প্রতিরোধ করে। আরএইচ / সেন্টোস সহ, /etc/sysctl.conf ফাইলে নিম্নলিখিত সামগ্রীটি যুক্ত করুন:

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