Ubuntu Accept_raはsysctlに影響を与えず、netplan yamlでdhcp6をブロックします。

Ubuntu Accept_raはsysctlに影響を与えず、netplan yamlでdhcp6をブロックします。

Ubuntu 22.04.2仮想マシンがあります。私の意図は、SLAAC v6アドレスとそのルートを取得しないようにインターフェイス上でdhcpv6のみを実行し、ルータ広告を無視することです。現在のインターフェイスからlink-local、SLAAC、およびdhcpv6アドレス(およびv4)が正常に取得されました。 "net.ipv6.conf.eth0.accept_ra=0" を /etc/sysctl.conf に入れて (そして sysctl -p を実行すると)、まだインターフェイスのすべてのアドレスを取得します。また、「all.accept_ra=0」、「default.accept_ra=0」を実行しても効果はありません。パラメータ変更後にインターフェイスを閉じるか開きます。もっとやるべきことはありますか? sysctl -wとこれらのパラメータは私には機能しません。

netplan yamlファイル(sysctlのaccept_ra = 1)に「accept-ra:false」と入力すると、インターフェイスにSLAACまたはdhcpv6アドレスが表示されません。だからこれは私が望むようにRAを無視するようですが、dhcpv6は動作を停止します。 v6リンクローカルアドレスのみがあります。 tcpdump を見ると、SOLICIT や他の dhcp6 または icmp6 メッセージが送信されるのを見ることができません。 RAが入ってくるのを見ましたが、正常に無視されました。

sysctlがうまくいかない理由とnetplan yamlの変更がdhcpv6にも影響する理由を教えてください。

その他のガイドライン:2つのインターフェースシステム(eth0、eth1)。私はeth0で作業しています。すべての転送は無効になります(例:net.ipv4.conf.eth0.forwarding = 0)。 yamlファイルのeth1には「accept-ra:false」があります。

ベストアンサー1

sysctl は RA を処理するカーネルではないため、無効です。 netplan の場合、これは DHCPv6 と同様にユーザー空間で systemd-networkd によって処理されます。

アドレス割り当てを無効にするには、systemd.network(5)オプションに対応するNetplanが必要です。

[IPv6AcceptRA]
UseAutonomousPrefix=false

設計上、RAはトリガーDHCPv6はシステムへのデフォルトパスも提供します(DHCPv6ではこれを行いません)。 Netplanに対応するファイル(.networkファイルにもあります)を使用して、RAなしでsystemd-networkdにDHCPv6を起動させることができます。

[DHCPv6]
WithoutRA=solicit

(いいえ、これらのオプションに対応するNetplanが何であるか、オプションがまったくないのかわかりません。正直にNetplanなしで直接systemd-networkdを設定する方が簡単です。Netplanで生成された.networkファイルをコピーすることです。に従って拡張してください)。

おすすめ記事