**Show HN:** *Netfence – eBPF フィルター用の Envoy のようなツール*

2026/01/26 0:13

**Show HN:** *Netfence – eBPF フィルター用の Envoy のようなツール*

RSS: https://news.ycombinator.com/rss

要約

日本語訳:

Netfenceは、LinuxのcgroupsとネットワークインターフェースにeBPFフィルタープログラムを注入してネットワークポリシーを強制する軽量デーモンです。承認されたドメインのDNS解決を自動的に行い、その解決結果からIPホワイトリストを構築し、未知のIPへのトラフィックをすべてドロップします—スループットに影響を与えることはありません。デーモンはgRPC経由で中央制御プレーンと通信し、

ALLOW *.pypi.org
やCIDRブロック(例:
10.0.0.0/16
)などのルールを
SetMode
,
AllowCIDR
,
DenyCIDR
,
RemoveCIDR
,
SetDnsMode
,
AllowDomain
,
DenyDomain
,
RemoveDomain
,
BulkUpdate
などのRPCメソッドでプッシュします。ポリシーモードには
disabled
,
allowlist
,
denylist
,
block‑all
があり、ルールはIPv4/IPv6 CIDRに対して任意のTTLを指定できます。

各アタッチメント(VMまたはコンテナ)は、それぞれ専用のDNSサーバーを受け取り、ドメインホワイトリスト/ブラックリストを特異性ベースでマッチング(より具体的なものが優先)して強制します。VM/コンテナがDNSクエリを実行すると、Netfenceはそれを解決し、得られたIPをeBPFフィルタに追加し、ホストから離れる前にホワイトリストにないトラフィックをドロップします。また、デーモンは

DaemonService
というローカルgRPC API を公開しており、インターフェースのアタッチ・デタッチ・一覧表示が可能です。CLIコマンドも同様の操作を行います。

起動時に各アタッチメントは

Subscribed
メッセージを制御プレーンへ送信し、
SubscribedAck
を待ちます。設定されたタイムアウト(デフォルト5 秒)内に確認応答が来ない場合、デーモンは変更をロールバックします。制御プレーンは各アタッチメントからのハートビートを処理し、生存状態を維持しつつ同じ双方向ストリーム (
ControlPlane.Connect
) を介して設定更新を送信します。

自動DNS解決、アタッチメント別eBPFフィルター、および堅牢なgRPCベースのポリシーエンジンを統合することで、Netfenceはオペレーターに対し、クラウドネイティブワークロード向けにDNS変更に自動的に適応する高精度でパフォーマンスフレンドリーなネットワーク制御を提供します。

本文

Netfence – eBPF フィルタデーモン

Envoy xDS と同様に eBPF フィルタを制御します。

  • Netfence は VM/コンテナホスト上でデーモンとして動作し、cgroup やネットワークインターフェースへ自動的に eBPF フィルタプログラムを注入します。
  • 許可済みドメインを解決して IP アリロール(allow‑list)を構築する DNS サーバーも備えています。
  • デーモンは中央制御プレーン(gRPC)に接続し、バックエンドと allow/deny リストを同期します。

制御プレーンからは以下のようなルールがプッシュされます。

ALLOW *.pypi.org
ALLOW 10.0.0.0/16

これらはアタッチされたインターフェース/cgroup に適用され、VM/コンテナが DNS を問い合わせると Netfence が解決結果を eBPF フィルタに追加し、ホストから外部へ流れる前に未知の IP へのトラフィックをドロップします。パフォーマンスに影響はありません。


主な機能

  • ネットワークインターフェース(TC)または cgroup への eBPF フィルタのアタッチ
  • ポリシーモード:disabledallowlistdenylistblock‑all
  • IPv4/IPv6 CIDR を TTL のオプション付きでサポート
  • アタッチごとの DNS サーバーとドメイン allow/deny リスト
  • ドメインルールはサブドメインを許可し、特異度に応じてマッチ(より具体的なものが優先)
  • 解決済みドメインは自動で IP フィルタへ登録
  • デーモンとアタッチメントのメタデータに VM ID、テナントなどを紐付け可能
  • アタッチごとの DNS クエリを制御プレーンへプロキシして判断

設計・構成図

+------------------+          +--------------------------------+
|  Control Plane   |<-------> |  デーモン(ホスト毎)           |
|  (gRPC)          |  ストリーム |                                |
+------------------+          |  +------------------------+    |
                               |  | DNS サーバー            |    |
                               |  | (アタッチごと)         |    |
                               |  +------------------------+    |
                               +--------------------------------+
                                         |
                         +---------------+-------------+
                         |                             |
                      TC フィルタ(veth, eth)     Cgroup フィルタ
                                            (コンテナ)

各アタッチメントにはデーモンが割り当てるユニークな DNS アドレス(ポート)がプロビジョニングされます。
コンテナ/VM はそのアドレスを DNS として設定します。


ホスト単位

デーモン起動

# デフォルト設定で開始
netfenced start

# カスタム設定ファイルで開始
netfenced start --config /etc/netfence/config.yaml

ステータス確認

デーモンは以下の機能を持ちます。

  1. ローカル gRPC API(
    DaemonService
    )でフィルタのアタッチ/デタッチを行う
  2. 制御プレーンへ双方向ストリーム(
    ControlPlane.Connect
    )で接続する
  3. eBPF プログラムをロード・管理する

アタッチメント単位

オーケストレーションシステムはデーモンのローカル API を呼び出します。

gRPC

DaemonService.Attach(
    interface_name: "veth123",
    metadata: {vm_id: "abc"}
)
// または
DaemonService.Attach(
    cgroup_path: "/sys/fs/cgroup/…",
    metadata: {container_id: "xyz"}
)

CLI

# ネットワークインターフェース(TC)にアタッチ
netfenced attach --interface veth123 --metadata vm_id=abc

# cgroup にアタッチ
netfenced attach --cgroup /sys/fs/cgroup/... --metadata container_id=xyz

# メタデータ付きでアタッチ
netfenced attach --interface eth0 --metadata tenant=acme,env=prod

デーモンは対象に eBPF フィルタをアタッチし、制御プレーンへ

Subscribed{id, target, type, metadata}

を送信して

SubscribedAck
(mode、CIDR、DNS ルール)を待ちます。
タイムアウト(デフォルト 5 秒、
control_plane.subscribe_ack_timeout
で設定可)が発生した場合はロールバックしアタッチが失敗します。
ターゲットの削除を監視して
Unsubscribed
を自動送信します。

CLI デタッチ & リスト

netfenced detach --id <attachment-id>
netfenced list            # 現在のページを表示
netfenced list --all      # すべてのページを取得

制御プレーン API(実装する側)

ControlPlane.Connect
を双方向ストリームとして実装します。

デーモンから受信

メッセージ用途
SyncRequest
(接続時/再接続時)
現在のアタッチメント一覧を取得
Subscribed
新規アタッチメント追加
Unsubscribed
アタッチメント削除
Heartbeat with stats生存確認・メトリクス

デーモンへ送信

メッセージ用途
SyncAck
SyncRequest
への応答
SubscribedAck{mode, cidrs, dns_config}
必須 – デーモンはこれを待ってから成功とする
SetMode{mode}
IP フィルタポリシー変更
AllowCIDR{cidr, ttl}
,
DenyCIDR
,
RemoveCIDR
CIDR ルール
SetDnsMode{mode}
DNS フィルタモード変更
AllowDomain{domain}
,
DenyDomain
,
RemoveDomain
ドメインルール
BulkUpdate{mode, cidrs, dns_config}
全状態同期

デーモンが

Subscribed
を受け取ると、応答の
SubscribedAck
が来るまでブロックし、呼び出し元に成功を返します。これにより、トラフィックが流れ始める前に初期設定が確実に適用されます。メタデータで VM/テナント/コンテナを特定し、適切なルールを応答してください。

同じ日のほかのニュース

一覧に戻る →

2026/01/26 4:03

まず、私に関心を持っていただけるようにしてほしいです。

## Japanese Translation: **改訂要約:** 著者は、ウェブサイト、個人の「Me」セクション、ブログを組み合わせた新しいプラットフォームを立ち上げました。外部リソースへのリンクとファンサポート用のPatreonページが特徴です。今後の計画としては、さらに多くのブログ投稿を追加し、リンク統合を拡大し、場合によっては追加のPatreonティアを作成することがあります。これによりユーザーはキュレーションされたコンテンツへ簡単にアクセスでき、クリエイターには追加収益源が提供されます。 (このバージョンではすべての主要ポイントを保持し、推測された業界全体のトレンド表現を削除しています。)

2026/01/26 9:10

**科学者たちが「あなた」の限界を決める脳波を特定**

## Japanese Translation: > 本研究は、頭頂皮質におけるアルファ振動のリズムが、人々がゴム手を所有していると感じる強さを因果的に形成することを示しています。スウェーデンの研究者66名とフランスの研究者43名が合計106名の被験者から脳波(EEG)を記録し、古典的なゴム手錯覚を体験させました。ロボットアームは実際の手と偽の手の両方にタップを打ち、タップの同期性は最大500 msまで遅延させられました。 > > 被験者はタップが同期しているときに最も強い所有感を報告し、遅延が増すにつれてその感覚が弱まりました。EEGからは、頭頂部のアルファ周波数が被験者の遅延検知能力と相関していることが明らかになりました:高速なアルファ波は小さな時間ギャップに対する敏感性を高め、一方で低速なアルファ波は大きなギャップが存在しても錯覚を強化しました。 > > 頭頂部のアルファ波を人工的に高速化または遅延させる経頭蓋交流電流刺激(tACS)を用いて、研究者たちは因果関係を確認しました——アルファ波を加速すると所有感が増し、逆に減速すると錯覚が弱まり、自分の手と偽手との区別が難しくなりました。 > > これらの結果は *Nature Communications* に掲載され、頭頂部のアルファ活動が身体所有感を構築する上で因果的役割を果たすことを示唆しています。精神疾患(統合失調症や幻肢痛など)の治療に寄与したり、ターゲットとした脳刺激によってよりリアルな義手や仮想現実インターフェースの設計指針となる可能性があります。

2026/01/26 0:34

**タイトル** 「姿勢が悪くなると画面をぼかす macOS アプリ」

## Japanese Translation: Posturrは、MacのカメラとAppleのVisionフレームワークを使用してリアルタイムで姿勢を監視する軽量macOSアプリです。鼻と肩の角度を測定し、全身ランドマークが利用できない場合は顔検出にフォールバックします。前かがみが検知されると、画面が徐々にぼかれます(デフォルトではmacOSのプライベートCoreGraphics APIを使用し、互換モードではNSVisualEffectViewにフォールバック)。良い姿勢が回復するとぼかしは即座に消えます。ぼかしの強度は「Low」から「Very High」に段階的に上昇し、デッドゾーン設定で軽微な前かがみを無視できます。 Posturrは完全にローカルで動作します:動画データはマシンを離れず、オンラインアカウントやクラウドサービスも不要です。MITライセンスのソースコードはコミュニティへの貢献を歓迎しています。メニューバーには小さなアイコンがあり、ステータス表示、監視の有効/無効化、再校正、感度調整、互換モード切替、デッドゾーン設定、またアプリ終了などが可能です。また、外部制御用に`/tmp/posturr-command`というファイルベースのコマンドインターフェイス(`capture`、`blur <0‑64>`、`quit`)も公開しています。 インストールは簡単で、Homebrew(`brew install --cask posturr`)を使用するか、リリースページから署名済みのDMG/ZIPをダウンロードします。ノタリゼーションされており、システム設定でカメラ権限が必要です。最適な結果を得るためには、カメラを目線レベルに位置させ、十分な照明を確保し、画面を向いて座り続け、肩が見えるようにしてください。Posturrはマルチディスプレイ環境にも対応しており、macOS 13+でXcode Command Line Toolsを使用してソースからビルドできます。 すべての処理をデバイス上で完結させ、プライバシー優先設計を提供することで、Posturrは姿勢モニタリングツールがユーザーのプライバシーを侵害せずにエルゴノミック支援を行う方法を示しています。