Skip to content

受信の防火壁を外し、DL360 の eno4 の sysctl を消す - #652

Merged
5ym merged 1 commit into
mainfrom
conntrack-liberal
Oct 31, 2026
Merged

5ym merged 1 commit into
mainfrom
conntrack-liberal

Conversation

@5ym

@5ym 5ym commented Oct 31, 2026

Copy link
Copy Markdown
Collaborator

Z440 への移行の途中で見つかった 2 つ。どちらもノードには当て済み。

  • 受信の防火壁(feat(talos): ノードの受信の防火壁 (Ingress Firewall) を足す #646)を外す。 Pod からノード自身の IP の 443 番(Gateway)が conntrack の invalid として捨てられ、TCP はつながるが応答が来なかった。Pod は fj.doany.io の AAAA(ノードの公開 IPv6)で Forgejo に来るので、Argo CD の repos-forgejo が TLS handshake timeout、forgejo-runner が CrashLoop。ingress: accept にしても Talos は invalid を捨てる規則を残すので、5 つの文書ごと外した(nf_conntrack_tcp_be_liberal では直らなかった)。外したあと Pod から curl -6 が通り、ApplicationSet のエラーも消えた。render.sh の needle も外し、経緯と戻し方を bootstrap/talos.md に書いた
  • net.ipv6.conf.eno4.disable_ipv6 を消す。 Z440 に eno4 は無く、KernelParamSpecController がそこで失敗し続けて、後から足した sysctl が当たらなかった

外から 50000 / 10250 / 2379 などがまた見える(どれも認証付き)。Cilium と両立する形を決めたら戻す。

🤖 Generated with Claude Code

https://claude.ai/code/session_01T9PbUfqG4pPxus99UeLiJs

#646 の防火壁で、Pod からノード自身の IP の 443 番(Gateway)が conntrack の
invalid として捨てられ、Argo CD が Forgejo を読めず runner も落ちていた
(Z440 への移行で気づいた)。ingress: accept でも invalid の規則は残るので、
5 つの文書ごと外し、render.sh の needle も外す。経緯は bootstrap/talos.md。

eno4 の disable_ipv6 は Z440 に無い名前で KernelParamSpecController が失敗し続け、
後から足した sysctl が当たらなかったので消す。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T9PbUfqG4pPxus99UeLiJs
@claude

claude Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

Claude finished @5ym's task in 31s —— View job


レビュー結果

要修正が 1 点あります(CI が落ちる見込み)。

不具合

  • .github/workflows/talos-boot.yml が防火壁の存在を前提に検査しています。
    • 284〜300 行: 外から kubelet(10250)に届かないことを要求します。防火壁を外すと届くので fail します。
    • 319〜323 行: nftables の ingress の既定が drop であることを要求します。こちらも fail します。
    • 30 行目の 4 枚目の NIC も、この検査のためだけにあります。
    • このワークフローは私の権限では変更できません。手元で外すか、戻すときまで無効にしてください。

ドキュメントの不整合(要確認)

次の文書が、防火壁が今も効いている前提のままです。talos.md の注記と食い違います。

  • docs/router.md 44〜50 行は「止めている」と現在形で書いています。表にポートを足すときは public-tcp / public-udp にも足す、という指示も残っています。
  • recovery/README.md 53 行は、Talos の API(50000)をプライベートのアドレスからしか通さないと書いています。
  • docs/talos.md 141 行は NetworkDefaultActionConfig: block の注意書きです。これは一般論なので、そのままで問題ありません。

「一時的に外してある」旨を docs/router.md に 1 行足すと、読む人が誤解しません。

問題なし

  • eno4 の sysctl を消す変更は妥当です。KernelParamSpecController の失敗が他の sysctl を止める、という理由もコメントに残っています。
  • render.sh の needle の削除は、外した文書と対応しています。
  • talos.md の経緯と戻し方は具体的です。
  • 原因が Cilium の BPF ホストルーティングによるもの、という推測は本文で「未確認」と明記されています。

セキュリティ

  • 50000 / 10250 / 2379 などが外から再び見えます。本文で認識されており、いずれも認証付きです。
  • 認証が通るかどうかに頼る状態です。IPv6 ホスト公開と DMZ が効いているので、Cilium と両立する形が決まるまでの期間は短くしてください。
  • 代替として、ルーター側で 50000 / 10250 / 2379 を落とせるかの確認を勧めます(要確認)。

テスト

防火壁の検査は上記のとおり、CI を更新しないと落ちます。Pod から curl -6 が通ることの確認は手動で済んでいます。再発防止として、CI に同等の検査を足すことを検討してください。

Comment thread bootstrap/render.sh
@@ -238,7 +238,6 @@ for n in "kube-apiserver:$K8S" "ghcr.io/siderolabs/kubelet:$K8S" \
'name: cilium' cilium-operator KUBERNETES_SERVICE_PORT 'value: \"7445\"' 'cgroup-root: \"/sys/fs/cgroup\"' \
'kind: GatewayClass' io.cilium/gateway-controller \
'kind: RawVolumeConfig' 'kind: LVMVolumeGroupConfig' 'name: dm_thin_pool' \

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

不具合(CI が落ちる): 防火壁を外したのに、.github/workflows/talos-boot.yml の検査が残っています。

  • 284〜300 行「受信の防火壁(外から 443 は通り、10250 は通らない)」は、外から kubelet(10250)に届かないこと(KW = 000)を要求します。防火壁が無ければ届くので fail します。
  • 319〜323 行は nftables の ingress の既定が drop であることを要求します。こちらも fail します。

この 2 つを外すか、防火壁を戻すまで無効にしてください(30 行目の 4 枚目の NIC の設定も不要になります)。

@5ym
5ym merged commit f874386 into main Oct 31, 2026
4 of 5 checks passed
@5ym
5ym deleted the conntrack-liberal branch October 31, 2026 14:14
5ym added a commit that referenced this pull request Oct 31, 2026
StorageClass が xfs で、xfs は 300MB より小さいとフォーマットできないので、
128Mi の PVC は Z440 の LVM でマウントできなかった。
#652 で受信の防火壁を外したので、外から 10250 が通らないことの検査も外す。


Claude-Session: https://claude.ai/code/session_01T9PbUfqG4pPxus99UeLiJs

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
5ym added a commit that referenced this pull request Oct 31, 2026
#652 で受信の防火壁を外したので、nftables の ingress の chain は無くなった。
#653 で外から 10250 の検査は外したが、こちらが残っていて boot が落ちていた。


Claude-Session: https://claude.ai/code/session_01T9PbUfqG4pPxus99UeLiJs

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
5ym added a commit that referenced this pull request Oct 31, 2026
Talos の防火壁は conntrack の invalid を捨てる規則を必ず入れ、Envoy の帰りを NOTRACK に
する Cilium と噛み合わず、Pod からノード自身の IP の Gateway が捨てられた(#652)。
hostFirewall を有効にし、ノードを選ぶ CiliumClusterwideNetworkPolicy で外から通す
ポートを決める。boot CI で、外から 443 は通り 10250 は通らない・LAN からは通る・
Pod からノードの IP の Gateway に届く、を見る。


Claude-Session: https://claude.ai/code/session_01T9PbUfqG4pPxus99UeLiJs

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant