GNU/Linux >> Linux の 問題 >  >> Linux

/proc/sys/net/ipv[46]/conf/ の all、default、eth* の違いは何ですか?

まだ質問を書いている間に答えを見つけました。とにかく投稿することにしました。他の人がこれを洞察に満ちていると思うかもしれないので、自分で答えてください。これが嫌われないことを願っています:)

linux-kernel メーリング リストのユーザー Philipp Matthias Hahn は、少なくとも部分的にそれを理解しました:

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 私が期待していたように、彼らがどのように機能しないのか.


accept_ra のハンドラー net/ipv6/addrconf.cproc_dointvec です .そのため、ジェネリック インターフェイス コードは以前に all の配列を生成しました。 およびインターフェイス固有のエントリ、および sysctl を使用してこれらに書き込む または procfs は、指定した値を配列に入れるだけです。

それらの値が次にどのように使用されるかが重要です

ipv6_accept_ra() の呼び出し元からわかります include/net/ipv6.h の関数 すべての呼び出し元が特定のインターフェイスを使用してその関数を呼び出すこと。

したがって、カーネルには net.ipv6.conf.all.accept_ra という場所はありません 私が見る限り、procfs エントリを保存する以外に使用されたことはありません。

accept_raを変更したい場合 1 つのコマンドですべてのインターフェースを管理するには、次のようにします:

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

私は約4年遅れていますが、これが正解です:P


Linux
  1. /proc/[pid]/pagemaps および /proc/[pid]/maps | Linux

  2. /usr/sbin、/usr/local/sbin、/usr/local/bin の意味は何ですか?

  3. Linux の /etc/init.d と /etc/rcX.d ディレクトリの間の接続は何ですか?

  1. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  2. Linux:/dev/console 、 /dev/tty 、 /dev/tty0 の違い

  3. /etc/hosts と /etc/resolv.conf の違い

  1. Bash =〜正規表現とHttps://regex101.com/?

  2. /optと/usr/ localの違いは?

  3. Linux – / sys / block / sda1/statと/sys/ block / xvda1 / statの違いは?