Skip to main content

Sysctl プロファイル

routerd は Linux ルーター向けの SysctlProfile を持ちます。 単発の Sysctl を並べる代わりに、家庭用ルーターで必要になりやすい値をまとめて宣言できます。

apiVersion: system.routerd.net/v1alpha1
kind: SysctlProfile
metadata:
name: router-runtime
spec:
profile: router-linux
runtime: true
persistent: true

runtime: true は実行中のカーネルへ即時反映します。 persistent: true/etc/sysctl.d/ に永続設定を書きます。 個別に変えたい値は overrides で上書きします。

spec:
profile: router-linux
overrides:
net.netfilter.nf_conntrack_max: "524288"

router-linux の値

キー理由
net.ipv4.ip_forward1IPv4 転送を有効にします。
net.ipv4.conf.all.forwarding1インターフェース単位の IPv4 転送を有効にします。
net.ipv6.conf.all.forwarding1IPv6 転送を有効にします。
net.ipv6.conf.default.forwarding1後から作られるインターフェースでも IPv6 転送を有効にします。
net.netfilter.nf_conntrack_max262144多数の端末とアプリの同時接続で conntrack が詰まることを避けます。conntrack が未ロードの環境では任意扱いです。
net.netfilter.nf_conntrack_buckets65536nf_conntrack_max / 4 を目安にします。環境によって書けないため任意扱いです。
net.netfilter.nf_conntrack_tcp_timeout_established86400既定の 5 日は家庭用ルーターでは長すぎるため、24 時間へ短縮します。conntrack が未ロードの環境では任意扱いです。
net.netfilter.nf_conntrack_udp_timeout30単発 UDP の保持時間を短くします。conntrack が未ロードの環境では任意扱いです。
net.netfilter.nf_conntrack_udp_timeout_stream180継続 UDP の保持時間を 3 分にします。conntrack が未ロードの環境では任意扱いです。
net.core.rmem_max16777216受信バッファーの上限を 16 MiB にします。
net.core.wmem_max16777216送信バッファーの上限を 16 MiB にします。
net.ipv4.tcp_rmem4096 87380 16777216TCP 受信バッファーの自動調整範囲を広げます。
net.ipv4.tcp_wmem4096 65536 16777216TCP 送信バッファーの自動調整範囲を広げます。
net.core.netdev_max_backlog5000瞬間的な受信バーストで破棄されにくくします。
net.core.somaxconn4096listen backlog の上限を明示します。
net.ipv4.ip_local_port_range1024 65535ルーター自身が使う一時ポート範囲を広げます。
net.ipv4.tcp_fin_timeout30FIN-WAIT-2 の保持時間を短くします。
net.ipv4.tcp_tw_reuse1TIME-WAIT ソケットの再利用を許可します。
net.ipv6.route.max_size16384IPv6 経路キャッシュの上限を引き上げます。

net.ipv4.route.max_size は現在の Linux では実効性が薄い環境があります。 routerd の既定プロファイルでは設定しません。 必要な環境では overrides ではなく個別の Sysctl として追加し、実機で存在確認してください。

個別 Sysctl との使い分け

SysctlProfile は推奨値のまとまりです。 WAN の RA 受信のようにインターフェース名が入る値は、個別の Sysctl で書きます。

apiVersion: system.routerd.net/v1alpha1
kind: Sysctl
metadata:
name: wan-accept-ra
spec:
key: net.ipv6.conf.ens18.accept_ra
value: "2"
runtime: true
persistent: true