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

Linux – / proc / sys / net / ipv [46] / conf /の「all」、「default」、「eth *」の違いは?

sysctlで、/proc/sys/net/ipv[46]/conf/ キーには次のサブキーがあります:alldefault 、および各ネットワークインターフェイスのキー。たとえば、単一のネットワークインターフェイス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/

それぞれの設定はすべて、各キーに個別に存在します。たとえば、accept_raを使用してIPv6ルーターアドバタイズメントを無効にしたい場合 値、この値は4回存在します:

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 (後で表示される可能性のあるすべての新しいインターフェイスを変更するため)が、これらを変更しても、loとeth0の値は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

マシンはeth0でルーターアドバタイズメントを受け入れるようになりますか、それとも受け入れませんか?

承認された回答:

まだ質問を書いている間に答えを見つけました。他の人がこれを洞察に満ちていると思うかもしれないので、とにかくそれを投稿することに決めました、そしてそれからそれを自分で答えます。これが眉をひそめないことを願っています🙂

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

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 動作する、というより、私が期待したように動作しない方法。

関連:特定の実行可能ファイルからの入力と出力をインターセプトしますか?
Linux
  1. /proc/[pid]/pagemaps および /proc/[pid]/maps | Linux

  2. /tmp と /run の違いは何ですか?

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

  1. Linux:/ dev / console、/ dev / tty、/ dev / tty0の違いは?

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

  3. Linux – / proc/mntを/proc/ mountsにリンクしますか?

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

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

  3. Linux – / usr/binと/usr/sbinを/bin(gnu / linux)にマージしますか?