আউটবাউন্ড সংযোগের জন্য কি একাধিক ডিফল্ট গেটওয়ে পাওয়া সম্ভব?


15

আমি একই সাবনেটে একাধিক এনআইসি (eth0 এবং wlan0) রাখতে এবং এনআইসির কোনও একটি ব্যর্থ হলে হোস্টের অ্যাপ্লিকেশনগুলির ব্যাকআপ হিসাবে পরিবেশন করতে চাই। এই কারণে আমি একটি অতিরিক্ত রাউটিং টেবিল তৈরি করেছি। এইভাবে /etc/network/interfacesদেখাচ্ছে:

iface eth0 inet static
address 192.168.178.2
netmask 255.255.255.0
dns-nameserver 8.8.8.8 8.8.4.4
    post-up ip route add 192.168.178.0/24 dev eth0 src 192.168.178.2
    post-up ip route add default via 192.168.178.1 dev eth0
    post-up ip rule add from 192.168.178.2/32
    post-up ip rule add to 192.168.178.2/32

iface wlan0 inet static
wpa-conf /etc/wpa_supplicant.conf
wireless-essid xyz
address 192.168.178.3
netmask 255.255.255.0
dns-nameserver 8.8.8.8 8.8.4.4
    post-up ip route add 192.168.178.0/24 dev wlan0 src 192.168.178.3 table rt2
    post-up ip route add default via 192.168.178.1 dev wlan0 table rt2
    post-up ip rule add from 192.168.178.3/32 table rt2
    post-up ip rule add to 192.168.178.3/32 table rt2

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

আমি সেই বিষয়টি নিয়ে গবেষণা করেছি এবং নিম্নলিখিত আকর্ষণীয় তথ্য পেয়েছি:

যখন কোনও প্রোগ্রাম আউটবাউন্ড সংযোগের সূচনা করে তবে ওয়াইল্ডকার্ড উত্স ঠিকানা (0.0.0.0) ব্যবহার করা তার পক্ষে স্বাভাবিক, এটি সম্পর্কিত গন্তব্য ঠিকানাটি পৌঁছনীয় কিনা তবে কোন ইন্টারফেসটি ব্যবহৃত হয় তা অগ্রাধিকার নির্দেশ করে। রাউটিংয়ের সিদ্ধান্ত নেওয়ার আগ পর্যন্ত এটি কোনও নির্দিষ্ট উত্স ঠিকানা দ্বারা প্রতিস্থাপিত হয় না। এই জাতীয় সংযোগগুলির সাথে যুক্ত ট্র্যাফিক তাই উপরোক্ত নীতিমালাগুলির সাথে মেলে না এবং সদ্য যুক্ত হওয়া রাউটিং টেবিলগুলির কোনওটিতেই নির্দেশিত হবে না। অন্যথায় সাধারণ কনফিগারেশন ধরে নেওয়া, এটি পরিবর্তে মূল রাউটিং টেবিলের মধ্যে পড়বে। http://www.microhowto.info/howto/ensure_symmetric_routing_on_a_server_with_multiple_default_gateways.html

আমি যা চাই তা প্রধান রুটের টেবিলের জন্য একাধিক ডিফল্ট গেটওয়ে (একটিতে একটি eth0এবং একটি wlan0) রাখা এবং eth0ডিফল্টরূপে এবং ডাউন wlan0থাকলে eth0নীচে দিয়ে ডিফল্ট গেটওয়েতে যেতে পারি ।

এটা কি সম্ভব? এই ধরনের কার্যকারিতা অর্জন করার জন্য আমার কী করা দরকার?


খুব সংক্ষেপে: বেশ কয়েকটি ডিফল্ট রুট এলোমেলোভাবে একটি ইন্টারফেস বাছাই করে, যা সমস্যার দিকে নিয়ে যায় কারণ নির্ধারিত আইপি আলাদা is কি চাও হয় multihoming বা bundling , যা কি দুঃসাধ্য ব্যাপার, যেমন দেখতে এখানে
dirkt

1
বন্ধনের সাথে আপনি গতিশীল ব্যর্থতা ব্যবহার করতে পারেন । ডিফল্ট রুটগুলি নিয়ে গলগল করার দরকার নেই।
ইনগো

উত্তর:


17

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

  • 3 এনআইসি: এথ0 (তারে), ও্লান0 (বিল্ট-ইন ওয়াইফাই, দুর্বল), ওয়ালান 1 (ইউএসবি ওয়াইফাই অ্যাডাপ্টার, wlan0 এর চেয়ে শক্তিশালী সংকেত)
  • একক সাবনেটে এঁরা সকলেই তাদের নিজস্ব আইপি ঠিকানা দিয়ে থাকেন।
  • এথ0 ডিফল্ট হিসাবে আগত এবং বহির্গামী উভয় ট্র্যাফিকের জন্য ব্যবহার করা উচিত।
  • যদি eth0 ব্যর্থ হয় তবে wlan1 ব্যবহার করা উচিত।
  • যদি wlan1 ব্যর্থ হয় তবে wlan0 ব্যবহার করা উচিত।

প্রথম পদক্ষেপ : প্রতিটি ইন্টারফেসের জন্য একটি নতুন রুট টেবিল তৈরি করুন /etc/iproute2/rt_tables। আসুন তাদের rt1, rt2 এবং rt3 কল করুন

#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1  inr.ruhep
1 rt1
2 rt2
3 rt3

দ্বিতীয় পদক্ষেপ : নেটওয়ার্ক কনফিগারেশন ইন /etc/network/interfaces। এটিই মূল অংশ এবং আমি যথাসম্ভব ব্যাখ্যা করার চেষ্টা করব:

auto eth0 wlan0
allow-hotplug wlan1

iface lo inet loopback

iface eth0 inet static
address 192.168.178.99
netmask 255.255.255.0
dns-nameserver 8.8.8.8 8.8.4.4
    post-up ip route add 192.168.178.0/24 dev eth0 src 192.168.178.99 table rt1
    post-up ip route add default via 192.168.178.1 dev eth0 table rt1
    post-up ip rule add from 192.168.178.99/32 table rt1
    post-up ip rule add to 192.168.178.99/32 table rt1
    post-up ip route add default via 192.168.178.1 metric 100 dev eth0
    post-down ip rule del from 0/0 to 0/0 table rt1
    post-down ip rule del from 0/0 to 0/0 table rt1

iface wlan0 inet static
wpa-conf /etc/wpa_supplicant.conf
wireless-essid xyz
address 192.168.178.97
netmask 255.255.255.0
dns-nameserver 8.8.8.8 8.8.4.4
    post-up ip route add 192.168.178.0/24 dev wlan0 src 192.168.178.97 table rt2
    post-up ip route add default via 192.168.178.1 dev wlan0 table rt2
    post-up ip rule add from 192.168.178.97/32 table rt2
    post-up ip rule add to 192.168.178.97/32 table rt2
    post-up ip route add default via 192.168.178.1 metric 102 dev wlan0
    post-down ip rule del from 0/0 to 0/0 table rt2
    post-down ip rule del from 0/0 to 0/0 table rt2

iface wlan1 inet static
wpa-conf /etc/wpa_supplicant.conf
wireless-essid xyz
address 192.168.178.98
netmask 255.255.255.0
dns-nameserver 8.8.8.8 8.8.4.4
    post-up ip route add 192.168.178.0/24 dev wlan1 src 192.168.178.98 table rt3
    post-up ip route add default via 192.168.178.1 dev wlan1 table rt3
    post-up ip rule add from 192.168.178.98/32 table rt3
    post-up ip rule add to 192.168.178.98/32 table rt3
    post-up ip route add default via 192.168.178.1 metric 101 dev wlan1
    post-down ip rule del from 0/0 to 0/0 table rt3
    post-down ip rule del from 0/0 to 0/0 table rt3

আপনি যদি টাইপ করেন ip rule showতবে নিম্নলিখিতগুলি দেখতে হবে:

0:  from all lookup local 
32756:  from all to 192.168.178.98 lookup rt3 
32757:  from 192.168.178.98 lookup rt3 
32758:  from all to 192.168.178.99 lookup rt1 
32759:  from 192.168.178.99 lookup rt1 
32762:  from all to 192.168.178.97 lookup rt2 
32763:  from 192.168.178.97 lookup rt2 
32766:  from all lookup main 
32767:  from all lookup default 

এটি আমাদের জানায় যে "192.168.178.99" IP ঠিকানা থেকে ট্রাফিক আগমন বা বহির্গামী rt1 রুট সারণী ব্যবহার করবে। এ পর্যন্ত সব ঠিকই. তবে স্থানীয়ভাবে উত্পাদিত ট্র্যাফিকের (উদাহরণস্বরূপ আপনি মেশিন থেকে অন্য কোথাও পিং করতে বা এসএসএস করতে চান) বিশেষ চিকিত্সা প্রয়োজন (প্রশ্নের বড় উদ্ধৃতি দেখুন)।

প্রথম চারটি পোস্ট-আপ লাইনগুলি /etc/network/interfacesসোজা এবং ইন্টারনেটে ব্যাখ্যা পাওয়া যাবে, পঞ্চম এবং শেষ পোস্ট-আপ লাইনটি যাদুটিকে ঘটায়:

post-up ip r add default via 192.168.178.1 metric 100 dev eth0

নোট করুন কীভাবে আমরা এই পোস্ট-আপ লাইনের জন্য কোনও রুট-টেবিল নির্দিষ্ট করে নেই। যদি আপনি কোনও রুট টেবিল নির্দিষ্ট না করেন তবে তথ্যটি mainআমরা যে রুট টেবিলটিতে দেখেছি সেগুলি সংরক্ষণ করা হবে ip rule show। এই পোস্ট-আপ লাইনটি "প্রধান" রুট সারণিতে একটি ডিফল্ট রুট রাখে যা স্থানীয়ভাবে উত্পন্ন ট্র্যাফিকের জন্য ব্যবহৃত হয় যা আগত ট্র্যাফিকের প্রতিক্রিয়া নয়। (উদাহরণস্বরূপ আপনার সার্ভারে একটি এমটিএ ইমেল প্রেরণের চেষ্টা করছে।)

তিনটি ইন্টারফেস সমস্তই মূল রুট টেবিলটিতে একটি ডিফল্ট রুট রাখে, যদিও বিভিন্ন মেট্রিকের সাথে থাকে। এর mainসাথে রুট টেবিলটি একবার দেখুন ip route show:

default via 192.168.178.1 dev eth0  metric 100 
default via 192.168.178.1 dev wlan1  metric 101 
default via 192.168.178.1 dev wlan0  metric 102 
192.168.178.0/24 dev wlan0  proto kernel  scope link  src 192.168.178.97 
192.168.178.0/24 dev eth0  proto kernel  scope link  src 192.168.178.99 
192.168.178.0/24 dev wlan1  proto kernel  scope link  src 192.168.178.98

আমরা দেখতে পাচ্ছি যে প্রধান রুটের টেবিলটিতে তিনটি ডিফল্ট রুট রয়েছে, যদিও বিভিন্ন মেট্রিকের সাথে। সর্বাধিক অগ্রাধিকার হ'ল নীতি0, তারপরে wlan1 এবং তারপরে wlan0 কারণ নিম্ন মেট্রিক সংখ্যা উচ্চতর অগ্রাধিকার নির্দেশ করে। যেহেতু eth0সর্বনিম্ন মেট্রিক রয়েছে এটি হ'ল ডিফল্ট রুট যা eth0আপ যতক্ষণ ব্যবহার করা হবে। যদি eth0নীচে যায়, বহির্গামী ট্র্যাফিক স্যুইচ হবে wlan1

এই সেটআপের সাহায্যে আমরা ping 8.8.8.8একটি টার্মিনাল এবং ifdown eth0অন্যটিতে টাইপ করতে পারি । pingএখনও কাজ করা উচিত কারণ ifdown eth0সম্পর্কিত ডিফল্ট রুটটি সরিয়ে দেবে eth0, বহির্গামী ট্র্যাফিক স্যুইচ করবে wlan1

ডাউন-ডাউন লাইনগুলি নিশ্চিত করে তোলে যে ip rule showসবকিছু পরিষ্কার রাখার জন্য, ইন্টারফেসটি নীচে নেমে যাওয়ার সময় সম্পর্কিত রুট টেবিলগুলি রুটিং নীতি ডাটাবেস ( ) থেকে মুছে ফেলা হবে।

যে সমস্যাটি রয়ে গেছে তা হ'ল আপনি যখন eth0ডিফল্ট রুট থেকে প্লাগ eth0টানেন তখনও রয়েছে এবং বহির্গামী ট্র্যাফিক ব্যর্থ হয়। আমাদের ইন্টারফেসগুলি নিরীক্ষণের জন্য এবং ইন্টারফেসের ifdown eth0সাথে সমস্যা আছে (যেমন এনআইসি ব্যর্থতা বা কেউ প্লাগ টানছে) কার্যকর করতে আমাদের কিছু দরকার ।

শেষ পদক্ষেপ : প্রবেশ করান ifplugd। এটি একটি ডেমন যা ইন্টারফেস দেখে এবং কার্যকর করে ifup/ifdownযদি আপনি প্লাগটি টানেন বা ওয়াইফাই সংযোগে সমস্যা আছে /etc/default/ifplugd:

INTERFACES="eth0 wlan0 wlan1"
HOTPLUG_INTERFACES=""
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"

আপনি এখন প্লাগটি টানতে পারবেন eth0, বহির্গামী ট্র্যাফিকটি স্যুইচ হবে wlan1এবং আপনি প্লাগটি পিছনে রাখলে বহির্গামী ট্র্যাফিক আবার স্যুইচ হবে eth0আপনার সার্ভারটি তিনটি ইন্টারফেসের যে কোনওটিতে কাজ করা অবধি অনলাইনে থাকবে। আপনার সার্ভারের সাথে সংযোগের জন্য আপনি eth0 এর আইপি ঠিকানাটি ব্যবহার করতে পারেন এবং যদি এটি ব্যর্থ হয় তবে wlan1 বা wlan0 এর আইপি ঠিকানা।


এমন কোনও সংযোগ তৈরি করার চেষ্টা করুন যা বেশি সময় নেয় (উদাহরণস্বরূপ একটি বৃহত ফাইল স্ক্রিপ), এটি কোন নেটওয়ার্ক ইন্টারফেস ব্যবহার করে তা দেখুন, সেই ইন্টারফেসটি অক্ষম করুন এবং দেখুন কী ঘটে।
dirkt

scpঅধিবেশন ভঙ্গ করবে কারণ IP ঠিকানা পরিবর্তন। আপনি withsctpএই ক্ষেত্রে সংযোগটি বাঁচিয়ে রাখার জন্য ব্যবহার করতে চেষ্টা করতে পারেন বা স্থানটি যেখানে থামেছে সেখান থেকে সংক্রমণকে সংক্রামিত করার rsyncপরিবর্তে ব্যবহার করতে পারেন scp
রসিক

মূল বক্তব্য: এটি যদি ভেঙে যায়, কেবলমাত্র একটি একক ডিফল্ট রুট থাকার ক্ষেত্রে আপনার জটিল সেটআপটির কী সুবিধা হবে, বর্তমানে দ্রুততম নেটওয়ার্ক ইন্টারফেসে বলুন? withsctpকেবল একটি ডিফল্ট রুটের জন্যও কাজ করবে।
dirkt

1
"কেবলমাত্র একটি একক ডিফল্ট রুট থাকার কারণে আপনার জটিল সেটআপটির কী সুবিধা হবে, বর্তমানে দ্রুততম নেটওয়ার্ক ইন্টারফেসে বলুন?" >> ঠিক এটিই আমার সেটআপটি করছে। কেবলমাত্র দ্রুততম ডিফল্ট রুট (eth0) ডিফল্টরূপে ব্যবহৃত হয়। আপনাকে স্বাগতম.
রসিক

11

লিনাক্স আপনার স্ক্রিপ্টযুক্ত কাজের চেয়ে আরও ভাল সমাধান সরবরাহ করে: সক্রিয়-ব্যাকআপ বন্ধন।

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

আমি যখন ডকিং স্টেশন থেকে আমার ল্যাপটপটি সংযোগ বিচ্ছিন্ন করি তখন আমি নিজেকে এই সেটআপটি আমার ডেবিয়ান ল্যাপটপে স্বয়ংক্রিয়ভাবে eth0 থেকে wlan0 এ ব্যর্থ হওয়ার জন্য ব্যবহার করছি।

আমার / ইত্যাদি / নেটওয়ার্ক / ইন্টারফেস:

# The primary network interface
allow-hotplug eth0
iface eth0 inet manual
        bond-master bond0
        bond-primary eth0

# The secondary network interface
allow-hotplug wlan0
iface wlan0 inet manual
        pre-up sleep 5
        wpa-conf /etc/wpa_supplicant.conf
        bond-master bond0
        bond-primary eth0

# The bonding interface
allow-hotplug bond0
iface bond0 inet dhcp
        bond-slaves eth0 wlan0
        bond-primary eth0
        bond-mode active-backup
        bond-miimon 10
        bond_downdelay 10
        bond_updelay 4000

একাধিক ওয়ালান ডিভাইস অন্তর্ভুক্ত করতে আপনি সহজেই এই সেটআপটি প্রসারিত করতে পারেন। primary_reselectবিকল্পটি সেট করা better(স্বয়ংক্রিয়ভাবে দ্রুততম লিঙ্কটি নির্বাচন করুন) এখানে সহায়তা করবে।

আরও তথ্যের জন্য https://wiki.linuxfoundation.org/networking/bonding এবং https://wiki.debian.org/ বন্ধন দেখুন

এবং (অবশ্যই) Linux kernel এ ডকুমেন্টেশন https://www.kernel.org/doc/Documentation/networking/bonding.txt

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