আমি কীভাবে উবার্টু 18.04-এ ওয়াইফাইয়ের চেয়ে ইথারনেটকে অগ্রাধিকার দিতে পারি?


13

লক্ষ্য

ইথারনেট কেবলটি প্লাগ ইন করা অবস্থায় ইথারনেট ওয়্যারলেসের চেয়ে অগ্রাধিকার নিতে দিন

পদ্ধতি

মোটামুটি গুগলিং এবং পড়া শেষ করে আমি এমন এক পর্যায়ে এসে পৌঁছেছি যেখানে আমি বিশ্বাস করি যে আমার যা করা উচিত তা হ'ল লাইন বরাবর কিছু is

nmcli connection modify [id-of-ethernet-interface] ipv4.route-metric 200
nmcli connection modify [id-of-ethernet-interface] ipv6.route-metric 200

যেখানে ওয়্যারলেস মেট্রিকের চেয়ে 200 কম মান, সেখানে ইথারনেটটি বেতার থেকে বেশি প্রাধান্য পাবে।

ফলাফল

route -nউপরোক্ত কমান্ডগুলি কার্যকর করে পুনরায় চালু করার পরে (ভাল পরিমাপের জন্য) আমি যে প্রতিবেদনগুলি পেয়েছি তা হতাশাগ্রস্ত করে তোলে এবং এটি আমার লক্ষ্যে পৌঁছানোর মতো বলে মনে হয় না is

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         123.456.89.1    0.0.0.0         UG    600    0        0 wlp1s0
0.0.0.0         123.456.89.1    0.0.0.0         UG    20200  0        0 enp0s31f6
123.456.89.0    0.0.0.0         255.255.255.192 U     200    0        0 enp0s31f6
123.456.89.0    0.0.0.0         255.255.255.192 U     600    0        0 wlp1s0
654.321.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 enp0s31f6

সংখ্যাগুলি আমার কমান্ড কার্যকর করার ক্ষেত্রে যোগ করে, তবে যে লাইনে বলে

0.0.0.0         123.456.89.1    0.0.0.0         UG    20200  0        0 enp0s31f6
654.321.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 enp0s31f6

আমি যে 200 মান সেট করেছিলাম তার আগে প্রথম লাইনে 20 টি উপসর্গ রয়েছে। আমি চালাচ্ছি তার উপর ভিত্তি করে এটি ধারাবাহিকভাবে প্রয়োগ করা যায়; আমি যদি nmcli500 বলার মাধ্যমে মেট্রিকের মান পরিবর্তন করি তবে route -n20500 প্রতিবেদন করবে this কেন এটি ঘটে? এটি নিশ্চিতভাবে ঠিক দেখাচ্ছে না, যেহেতু আমি বলেছি যে আমি 200 বা 500 চাই, 20200 এবং 20500 নয়।

দ্বিতীয় লাইনের একটি মেট্রিক মান রয়েছে যেটি কোথা থেকে এসেছে তা আমার কোনও ধারণা নেই এবং আমি এটিকে মোটেই প্রভাবিত করব বলে মনে করতে পারি না। কেউ যদি এ বিষয়ে আলোকপাত করতে পারে তবে আমি কৃতজ্ঞ।

দেখে মনে হচ্ছে না যে এই আদেশগুলি মেট্রিকগুলিকে প্রভাবিত করার পরিবর্তে স্পষ্ট কিছুতে শেষ হয়; আমি বলতে পারি না যে ইথারনেট অগ্রাধিকার গ্রহণ করছে, সুতরাং আমি ধরে নিই যে এটি নেই।

অন্যান্য অনুসন্ধান

আমি কি জানতে আগ্রহী পাওয়া যায়, এবং কাজ হবে বলে মনে হচ্ছে কিছু পরিমাণ, ব্যবহার $ sudo ifmetric enp0s31f6 200। এটি দুটি থেকে তিনটি জিনিস করে;

  • এটি ইন্টারফেসের মেট্রিককে প্রভাবিত করে ( যদি 200 এর মান থাকে তবে route -nআইফাসের সাথে সমস্ত লাইন প্রতিবেদন করে enp0s31f6)
  • এটি উবুন্টুতে ইউআইকে প্রভাবিত করে (উপরের ডান দিকের কোণায় আমি ifmetricকমান্ডটিতে সরবরাহ করা ম্যাট্রিক মানগুলির উপর নির্ভর করে ইথারনেট এবং ওয়্যারলেস আইকনগুলির মধ্যে একটি ভিজ্যুয়াল স্যুইচ দেখতে পাব )
  • এটি আমার মাঝে মাঝেNETLINK: Error: File exists ত্রুটি ছুড়ে দেয় । পরবর্তী কমান্ডের একই আদেশের ফলে এই ত্রুটি হতে পারে বা নাও হতে পারে

কিছু সিস্টেম তথ্য

  • এলিটবুক 850 জি 5
  • উবুন্টু 18.04
  • উবুন্টু ইনস্টলটি পুরো ডিস্ক, সক্ষম এনক্রিপশন, চালকদের জন্য তৃতীয় পক্ষের ডাউনলোড সক্ষম ইত্যাদি ব্যবহারের মাধ্যমে প্রদান করা হবে made

আপডেট # 1

$ nmcli c show
NAME                UUID  TYPE      DEVICE    
Wired connection 2  [n/a] ethernet  enp0s31f6 
WiFi1               [n/a] wifi      wlp1s0

$ route -n
Destination     Gateway  Genmask         Flags Metric Ref    Use Iface
0.0.0.0         [n/a]    0.0.0.0         UG    600    0        0 wlp1s0
0.0.0.0         [n/a]    0.0.0.0         UG    20200  0        0 enp0s31f6
[n/a]           0.0.0.0  255.255.255.192 U     200    0        0 enp0s31f6
[n/a]           0.0.0.0  255.255.255.192 U     600    0        0 wlp1s0
[n/a]           0.0.0.0  255.255.0.0     U     1000   0        0 enp0s31f6

ইথারনেট ডিফল্টরূপে পছন্দ করা উচিত। স্ট্রেঞ্জ। এর আউটপুট কি nmcli c showএকই route -n?
টম্মি

আমার আপডেট হওয়া প্রশ্নটি দেখুন।

আপনার প্রশ্নটি কোনও মন্তব্যে ফেলে দেওয়ার পরিবর্তে আপনার ফলাফলটি আপডেট করুন।
টমমি

হ্যাঁ, আমি বেশ দ্রুত উপলব্ধি করেছি, মন্তব্যে ডাম্পগুলি কার্যকর হবে না। আমি সম্পাদনা সংশোধন করছি। আমাকে আরও 1 মিনিট সময় দিন এবং আপনার সম্পূর্ণ আউটপুট হবে। হয়ে গেছে।

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

উত্তর:


2

আপনার এখানে সমস্যা রয়েছে:

  • আপনার কেবল ল্যান এবং ওয়্যারলেস ল্যান একই সাবনেটের ব্রিজ are 123.456.89.0/24
  • আপনি যদি সেই একই নেটওয়ার্কগুলিতে একই সময়ে সংযোগ করেন তবে আপনার দুটি ডিফল্ট গেটওয়ে থাকবে (এটি কিছু উন্নত রাউটিং দিয়ে সমাধান করা যেতে পারে ip rules)
  • আপনি যে ওয়াইফাই এবং ক্যাবল সংযোগের মধ্যে একটি ব্রিজ রেখেছেন সেগুলি গেটওয়েগুলির একই ঠিকানা রয়েছে।

যখন ইথারনেট এর মতো প্লাগ ইন করা থাকে তখন আপনার ওয়াইফাই নিষ্ক্রিয় করতে বাইরের স্ক্রিপ্টগুলির উপর নির্ভর করা উচিত:

স্ক্রিপ্ট তৈরি করুন /etc/NetworkManager/dispatcher.d/70-wifi-wired-exclusive.sh। সূচিপত্র:

#!/usr/bin/env bash

name_tag="wifi-wired-exclusive"
syslog_tag="$name_tag"
skip_filename="/etc/NetworkManager/.$name_tag"

if [ -f "$skip_filename" ]; then
  exit 0
fi

interface="$1"
iface_mode="$2"
iface_type=$(nmcli dev | grep "$interface" | tr -s ' ' | cut -d' ' -f2)
iface_state=$(nmcli dev | grep "$interface" | tr -s ' ' | cut -d' ' -f3)

logger -i -t "$syslog_tag" "Interface: $interface = $iface_state ($iface_type) is $iface_mode"

enable_wifi() {
   logger -i -t "$syslog_tag" "Interface $interface ($iface_type) is down, enabling wifi ..."
   nmcli radio wifi on
}

disable_wifi() {
   logger -i -t "$syslog_tag" "Disabling wifi, ethernet connection detected."
   nmcli radio wifi off
}

if [ "$iface_type" = "ethernet" ] && [ "$iface_mode" = "down" ]; then
  enable_wifi
elif [ "$iface_type" = "ethernet" ] && [ "$iface_mode" = "up"  ] && [ "$iface_state" = "connected" ]; then
  disable_wifi
fi

স্ক্রিপ্টটি অক্ষম করতে, কেবল সম্পাদন করুন touch /etc/NetworkManager/.wifi-wired-exclusive


0

আমি বিশ্বাস করি যে এটি নেটওয়ার্কম্যানেজারটি মেট্রিক মানকে 20000 যোগ করে অ্যাক্সেসযোগ্য নয় এমন সংযোগগুলি দন্ডিত করে। থেকে NetworkManager.conf ম্যানুয়াল :

গ্লোবাল সংযোগ ছাড়াই ডিভাইসগুলির ডিফল্ট-রুটটি রুট-মেট্রিককে +20000 এর জরিমানা পায়

সমাধান ঘ

আপনি বিকল্পটি মন্তব্য করে uri=বা এটিকে ফাঁকা রেখে সংযোগ পরীক্ষাটি অক্ষম করার চেষ্টা করতে পারেন NetworkManager.conf

সমাধান 2

সেট net.ipv4.conf.all.rp_filter = 2মধ্যে /etc/sysctl.confঅথবা আপনার ডিস্ট্রো যেখানে প্রযোজ্য। সম্ভাব্য তথ্য ফাঁসের দুর্বলতা থেকে সাবধান থাকুন ।

পটভূমি

NetworkManager.conf ম্যানুয়াল কেন সংযোগ পরীক্ষণ স্বাভাবিকভাবে কাজ হতে পারে একটি ছোট ব্যাখ্যা আছে:

মনে রাখবেন যে আপনার বিতরণটি কড়া ফিল্টারিংয়ে / proc / sys / নেট / ipv4 / conf / * / rp_filter সেট করে । এটি প্রতি ডিভাইস সংযোগের জন্য যাচাই করে খারাপভাবে কাজ করে, যা সমস্ত ডিভাইসে অনুরোধ প্রেরণের জন্য SO_BINDDEVICE ব্যবহার করে। একটি কঠোর আরপি_ফিল্টার সেটিং কোনও প্রতিক্রিয়া প্রত্যাখ্যান করবে এবং সর্বোত্তম রুটে কানেক্টিভিটি চেক ব্যর্থ হবে।

আমার ডিস্ট্রোতে কঠোর ফিল্টারিং সক্ষম করা হয়েছে:

$ /usr/sbin/sysctl net.ipv4.conf.all.rp_filter
net.ipv4.conf.all.rp_filter = 1

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

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