/ প্রো / সিএস / নেট / আইপিভি [46] / কনফিড / "সমস্ত", "ডিফল্ট" এবং "নথ" এর মধ্যে পার্থক্য কী?


37

Sysctl সালে /proc/sys/net/ipv[46]/conf/কী নিম্নলিখিত subkeys আছে: all, default, এবং প্রতিটি নেটওয়ার্ক ইন্টারফেস এর জন্য একটি কী। উদাহরণস্বরূপ, একটি একক নেটওয়ার্ক ইন্টারফেস eth0 সহ একটি মেশিনে, এটি এর মতো দেখতে পাবেন:

iserv ~ # ll /proc/sys/net/ipv[46]/conf/
/proc/sys/net/ipv4/conf/:
insgesamt 0
dr-xr-xr-x 0 root root 0 12. Sep 23:30 all/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 default/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 eth0/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 lo/

/proc/sys/net/ipv6/conf/:
insgesamt 0
dr-xr-xr-x 0 root root 0 12. Sep 23:30 all/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 default/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 eth0/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 lo/

সমস্ত সম্পর্কিত সেটিংস পৃথকভাবে প্রতিটি কীতে বিদ্যমান exist উদাহরণস্বরূপ, আমি যদি accept_raমান সহ আইপিভি 6 রাউটার বিজ্ঞাপন অক্ষম করতে চাই তবে এই মানটি চারবার উপস্থিত থাকে:

iserv ~ # sysctl -a 2>/dev/null | grep "accept_ra "
net.ipv6.conf.all.accept_ra = 1
net.ipv6.conf.default.accept_ra = 1
net.ipv6.conf.lo.accept_ra = 1
net.ipv6.conf.eth0.accept_ra = 1

আমার প্রশ্ন এখন: আমার এই মানগুলির কোনটি বদলাতে হবে? আমি উপলব্ধ all(সমস্ত বিদ্যমান ইন্টারফেস পরিবর্তন করতে) এবং default(পরে প্রদর্শিত হতে পারে যে সমস্ত নতুন ইন্টারফেস পরিবর্তন করতে), কিন্তু এগুলি পরিবর্তন করে মান এবং এথ0 এর মান 1 এ রেখে যায়:

iserv ~ # sysctl -w net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.all.accept_ra = 0
iserv ~ # sysctl -w net.ipv6.conf.default.accept_ra=0
net.ipv6.conf.default.accept_ra = 0
iserv ~ # sysctl -a 2>/dev/null | grep "accept_ra "  
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.default.accept_ra = 0
net.ipv6.conf.lo.accept_ra = 1
net.ipv6.conf.eth0.accept_ra = 1

মেশিনটি কি এখন এথ0-তে রাউটারের বিজ্ঞাপনগুলি গ্রহণ করবে, নাকি তা করবে না?


ওহ ভাল, প্রশ্ন লিখার সময় আমি উত্তরটি খুঁজে পেয়েছি। আমি এটি 7 ঘন্টা মধ্যে নিজেই উত্তর দেব (সাইটটি আমাকে এত তাড়াতাড়ি অনুমতি দেবে না)। ততক্ষণে
মার্টিন ভন

Github.com/torvalds/linux/commit/… অনুযায়ী rp_filter যুক্তি 9 বছর আগে পরিবর্তিত হয়েছিল। আগে এটি অ্যান্ডেড ছিল এবং ম্যাক্সে পরিবর্তিত হয়েছিল।
ওভিভ্ল্যাড

উত্তর:


37

প্রশ্ন লিখার সময় আমি উত্তর খুঁজে পেয়েছি। আমি এটিকে যাইহোক পোস্ট করার সিদ্ধান্ত নিয়েছি কারণ অন্যরা এটি অন্তর্দৃষ্টিপূর্ণ খুঁজে পেতে পারে এবং তারপরে আমি নিজেই এর উত্তর দিতে পারি; আমি আশা করি এটি ভ্রান্ত হয় নি :)

লিনাক্স-কার্নেল মেলিং তালিকার ব্যবহারকারী ফিলিপ ম্যাথিয়াস হ্যান অন্তত আংশিকভাবে এটি আবিষ্কার করেছেন :

As far as I researched for IPv4 some time ago, the "default" value gets
copied to newly created interfaces only once.
"all" on the other hand allways gets applied in addition to the current
setting, but it depends on the exact setting, if its ORed, ANDed, or
whatevered:
    log_martians         OR
    accept_redirects     AND
    forwarding           ?
    mc_forwarding        AND
    medium_id
    proxy_arp            OR
    shared_media         OR
    secure_redirects     OR
    send_redirects       OR
    bootp_relay          AND
    accept_source_route  AND
    rp_filter            AND
    arp_filter           OR
    arp_announce         MAX
    arp_ignore           MAX
    arp_accept
    app_solicit
    disable_policy
    disable_xfrm
    tag
(see include/linux/inetdevice.h:83 for IN_DEV_{AND,OR,MAX}CONF)

Putting a new value in "all" doesn't change the value you read from
"$interface", but it only gets computed and used internally.

তিনি কভার করেন না accept_raতবে কমপক্ষে এটি এখন কীভাবে allএবং কীভাবে defaultকাজ করবে বা বরং তারা কীভাবে কাজ করবে না তা আমি প্রত্যাশা করতাম clear


3
এবং আইপিভি 6 স্টাফের জন্য? যেমন আমি use_tempaddrপ্যারামিটারটি খুঁজছি ...
mattia.b89

1
আরপি_ফিল্টার যুক্তি 9 বছর আগে পরিবর্তিত হয়েছিল। আগে এটি অ্যান্ডেড ছিল এবং ম্যাক্সে পরিবর্তিত হয়েছিল। "Conf ইন্টারফেস} এ উত্স বৈধকরণ করার সময় ইন্টারফেস} / rp_filter ব্যবহার করা হবে" কনফ / {সব থেকে সর্বাধিক মান দেখুন " মধ্যে git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/... এবং github.com/torvalds/linux/commit/... (মাধ্যমে unix.stackexchange.com/a/427455/ 18568 )
গায়া

@ গাইয়া দুর্দান্ত মন্তব্য!
মুভেরিসেক

5

জন্য হ্যান্ডলার accept_raমধ্যে net/ipv6/addrconf.cহয় proc_dointvec। সুতরাং জেনেরিক ইন্টারফেস কোড পূর্বে আরে allএবং ইন্টারফেস-নির্দিষ্ট এন্ট্রিগুলির একটি অ্যারে তৈরি করেছে এবং এগুলির মধ্যে sysctlবা প্রোফসের সাথে লিখন আপনাকে অ্যারেতে নির্দিষ্ট করা মান দেয়।

সেই মানগুলি তখন কীভাবে ব্যবহৃত হবে তা নিয়ে আমরা উদ্বিগ্ন

আপনি ipv6_accept_ra()ফাংশন কলকারীদের থেকে দেখতে পাবেন include/net/ipv6.hযে প্রতিটি কলকারী সেই ফাংশনটি কল করতে একটি নির্দিষ্ট ইন্টারফেস ব্যবহার করে।

কার্নেলটিতে কোথাও কোথাও নেই যা net.ipv6.conf.all.accept_raব্যবহার করা যায় যতক্ষণ না দেখা যায় ততক্ষেত্র ব্যবহার করা যায় না entry

আপনি যদি accept_raপ্রতিটি কমান্ডের সাহায্যে প্রতিটি ইন্টারফেস পরিবর্তন করতে চান তবে আপনি এটি করতে পারেন:

for TUNABLE in $(sysctl -aN --pattern "accept_ra$")
do
    sysctl -w "$TUNABLE=0"
done

আমি প্রায় 4 বছর দেরীতে আছি তবে এটি সঠিক উত্তর: পি


sysctl (ps.২.৮ সংস্করণ সংস্করণ): ত্রুটি: অজানা প্যারামিটার "-এএন"
কুইন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.