私の自宅ネットワークでは、OpenBSD と PF を使用して就寝時間を制御しています。

2026/03/23 22:56

私の自宅ネットワークでは、OpenBSD と PF を使用して就寝時間を制御しています。

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

要約

Japanese Translation:

著者は、OpenBSD で pf を使用して動的「就寝時間」ファイアウォールルールを実装する方法について説明しています。

  • pf はカーネルに組み込まれており、/etc/pf.conf で設定します。
  • 2 つのテーブルが使用されます:<leased_ips>(dhcpd によって自動生成され、pf.conf の
    table <leased_ips> persist counters
    として作成され、/etc/rc.conf.local の
    dhcpd_flags="-L leased_ips"
    で有効化)と <bedtime_exempt>(テキストファイルから
    pfctl -t bedtime_exempt -T replace -f no_bedtime.txt
    を使って更新)。
  • 日中は、ルール
    pass proto tcp from <leased_ips>
    がトラフィックを許可します。夜間はアンカーが
    pass proto tcp from <bedtime_exempt>
    に切り替わります。アンカーは既存の接続を中断せずにオン・ザ・フライでルールを変更できるようにします。アンカーのルールに構文エラーがある場合、単にロードされず現在のトラフィックには影響しません。
  • デフォルトでは pf はアクティブなセッションを状態テーブルに保持します。就寝時間制限を即座に適用するために、スクリプトは
    pfctl
    を使って該当するすべての状態エントリを削除します。著者は
    <leased_ips>
    から
    <bedtime_exempt>
    を差し引いた状態だけを殺す簡単な方法がないことを指摘しており、ルールにラベル付けしたり追加スクリプトを検討しました。
  • このアプローチにより、管理者は pf を再起動せずに時間帯ベースのネットワークアクセス制御(例:ゲストネットワーク、親権設定)を適用でき、長期間続く接続は状態クリアで管理できます。

本文

作家によるスケッチブックのインクと水彩画:
恐ろしいフッピーが通過すべきパケットを決定します。

私の設定の中心は、OpenBSD カーネルに組み込まれた pf パケットフィルタ です。この機能は OpenBSD 本来から存在し、

/etc/pf.conf
に多くの pf 設定が記述されています。私は The Book of PF, 4th Ed. を読みながらゼロから自分用に構築しました(本ページ下部の参考文献を参照してください)。

設定全体はリポジトリ内で確認できます:

pf.conf

頻繁に触れない項目については徹底的にコメントを書き込み、pf を更新する手順も記載しています。


推奨構成

推奨される方法で設定しました:すべてのトラフィックをブロックし、必要なものだけを許可します。

  • 昼間ルール

    pass proto tcp from <leased_ips>
    
  • 就寝時ルール

    pass proto tcp from <bedtime_exempt>
    

IP アドレステーブルは次の二つを使用します。

  • <leased_ips>
    dhcpd
    がローカルネットワーク上でクライアントに IP を割り当てる際に管理されます。
  • <bedtime_exempt>
    – 私が手動で管理。テキストファイルにアドレスを保存し、変更時にスクリプトでテーブルへロードします。

就寝中は除外対象のコンピュータへの通信のみ許可し、それ以外はデフォルトポリシー すべてブロック により遮断されます。
TCP のみを対象にしており、ICMP と UDP は書籍の指針通りに処理します。(更新:昼間ルールの実験が必要です—Discord の音声チャットや Roblox が機能しないため、一部メンバーから不満が出ました。)


テーブルの更新

<leased_ips>
テーブルは
pf.conf
でプレースホルダーとして初期化します:

table <leased_ips> persist counters

dhcpd
/etc/rc.conf.local
(リポジトリにもあります)に設定したコマンドラインオプションで自動的に埋められます:

dhcpd_flags="-L leased_ips"

<bedtime_exempt>
のアドレスはテキストファイルに保存し、次のように更新します:

pfctl -t bedtime_exempt -T replace -f no_bedtime.txt

テキストファイルは1行に1アドレスを並べ、コメントは

#
で付けることができます。
テーブルが更新されると、カーネルの実行中テーブルに即座に反映され、pf を再ロードする必要はありません。


アンカー

就寝時の強制は、ローカルコンピュータからのトラフィックを許可するようスケジュールされたルール変更に依存します。アンカーは

pf.conf
内でルールをグループ化し、コマンドラインからリロードせずに置き換えることができる名前付きチャンクです。

anchor bedtime {
    # デフォルト「覚醒」ルール – 就寝時制御なし
    pass proto tcp from <leased_ips>
}

アンカーを作成したら、ファイルや STDIN からそのルールを即座に置き換えることができます:

echo "block all" | pfctl -a foo -f -

アンカーのルールが置き換わると、pf はすぐにそれらを使用します。新規ルールに構文エラーがある場合は、pf が報告し無効なルールのみ無視して残りは継続実行されます。


ステートテーブルのアクティブ接続を削除

デフォルトでは pf はステートテーブルでアクティブな接続を追跡し、新しいルールがそれらを禁止しても接続を維持します。これは通常望ましい挙動です:

  1. 同じ接続内の各パケットを再度検査する必要がない。
  2. ルール変更やアドレステーブル更新時でも既存セッション(例:SSH)が継続できる。

私の場合は就寝時にトラフィックを遮断したい、特に YouTube の長時間ストリームなど。したがって、アンカーのルールを変更すると同時にローカルネットワーク上の接続を

pfctl
で強制終了します:

# 実際のコマンドは省略

理想的には

<leased_ips>
のエントリから
<bedtime_exempt>
を差し引いたものだけを対象にステートを削除したいです。man ページやウェブ、ソースコードを調べても簡単な方法は見つかりませんでした。可能性としては pf ルールにラベルを付けてラベルで接続を削除する―テーブルを利用して正しい接続リストを取得する「マッチ」ルールを作るなどがあります。あるいはスクリプト内で二つのテーブルの差分を計算する方法もありますが、手間が増えるでしょう。


最終スクリプト

上記すべてのステップを一つのシェルスクリプトにまとめています。

同じ日のほかのニュース

一覧に戻る →

2026/03/27 5:53

**Deploytarot.com – デプロイメントのタロットカードリーディング** 「デプロイプロジェクトに対する洞察に満ちた指針を、個別化されたタロットカードリーディングで得ましょう。」

## 日本語訳: 記事では、ソフトウェアデリバリーを一連のタスク、リスク、およびステークホルダーの視点として可視化する比喩的な「カードデッキ」を紹介しています。各カードは、A/Bテスト、AI統合、DB移行、サーバーレス移行などの特定のタスクとアイコンおよび簡潔な説明をペアにします。リスクカードでは、「どの指標が重要かについてゼロコンセンサス」や「カードが見ている」という不確実性を列挙しています。役割カードは、CEO、CISO、CTO、清掃係、クライアント、コンサルタント、請負業者、DBA、データサイエンティスト、デザイナー、DevOpsエンジニア、エンジニアリングマネージャー、人事、インターン、ジュニア開発者、オフショア開発者、プロダクトマネージャー、プロジェクトマネージャー、QAエンジニア、受付係、営業、スクラムマスター、セキュリティエンジニア、シニアデベロッパー、SRE、ステークホルダー、テックリード、VP of Engineering など多岐にわたるステークホルダーの各役割がデプロイメント決定をどのように見ているかを示す一文の逸話を提供します。 物語は「アーケナはあなたのスプリント速度を気にしない」と強調し、代わりに「時折その終点で崖がある」という潜在的な落とし穴をハイライトすることに焦点を当てています。 デッキは各引きごとに新たにシャッフルされますが、「戻ってくると覚えている」と説明され、過去の洞察を保持する動的システムであることを示唆しています。 速度よりもリスク認識を前面に押し出すことで、このモデルは多様な役割間で明確なコミュニケーションと整合性を維持し、よりレジリエントなデリバリープロセスを育むことを奨励します。

2026/03/26 0:46

**2025年に多くの制御室がシー・フロムグリーン(海泡色)を採用した理由は?** | 要因 | なぜ重要だったか | |------|-----------------| | **エルゴノミクス研究** | その年に公開された調査では、海泡色が目の疲労を軽減し、長時間の監視作業中に集中力を向上させることが示されました。 | | **省エネルギー動向** | この色は白や黄よりも自然光を反射しやすく、24時間稼働する環境で人工照明の必要性を低減します。 | | **ブランドアイデンティティ** | いくつかのテック大手が「グリーンファースト」サステナビリティイニシアチブを開始し、その理念に合わせて制御室も再設計されました。 | | **心理的影響** | 緑は落ち着きとバランスに結びついており、オペレーターが重要なシステムを管理する際には不可欠な特性です。 | | **規制ガイドライン** | 新たな安全基準では、状態インジケータの可視性を高めるカラースキームが推奨されており、海泡色は赤警報と衝突せずにその要件を満たしました。 | まとめると、エルゴノミクス科学、省エネルギー政策、企業ブランディング、心理研究、そして更新された規制の融合が、2025年の制御室にとって実用的でストレスの少ない選択肢として海泡色を押し上げました。

## Japanese Translation: 記事は、核施設や工業サイトでよく見られる特徴的な海藻緑色を第二次世界大戦時のファーバー・ビレン(Faber Birren)の産業用カラー安全コードに遡ります。2017年夏、著者はオークリッジのX‑10グラファイト炉(「ファットマン」研究のためにロスアラモスへ輸送されたプルトニウムを生成した24フィート四方のブロック)を訪れ、壁と制御パネルでビレンが推奨するライト/ミディアムグリーンが一貫して使用されていることに注目しました。ビレン(1919–1996)は1944年に国立安全協議会によって承認されたカラーコードを開発し、1948年までに世界中で採用されました。このコードは次のような色から構成されています: - **Fire Red** – 火災防止、緊急停止、可燃液 - **Solar Yellow** – 注意、物理的危険 - **Alert Orange** – 危険機械部品 - **Safety Green** – 救急装置、出口、洗眼ステーション - **Caution Blue** – 非安全通知または故障表示 - **Light Green** – 視覚疲労を軽減する壁色 同じスキームがハンフォードのB‑レイザー制御室にも見られます:下部壁にミディアムグリーン、機械にはミディアムグレー、火災防止にファイヤーレッド、低照度エリアにベージュ、床はライトです。ビレンは、このような機能的カラー使用が明るさを制御し、事故を減らし、メンテナンス基準を向上させ、労働士気を高めると主張しました。 ドイツの「ケルン橋緑(Cologne Bridge Green)」は、橋という工業用途で開発された海藻緑色の別例です。著者はまた、古い自動車部品リストに触発されて「Parts List」というフォントをデザインし、オイル交換待合室の雰囲気を呼び起こすことを目的としています。このフォントは彼女のウェブサイトで入手可能です。彼女はこれら歴史的安全色が今日どのように適用できるかを引き続き探求し、海藻緑の使用を現代施設に拡大する可能性や、「Parts List」フォントを産業美学を捉えるデザインツールとして推進する計画です。

2026/03/24 7:06

**クラウドフレアのGen 13サーバー:** コア数とキャッシュ容量を入れ替えて、パフォーマンスを2倍にしています。

## Japanese Translation: Cloudflare は、AMD EPYC 5th‑Gen「Turin」CPU と Rust ベースのリクエストハンドラ FL2 を搭載した新しい Gen 13 エッジサーバーをデプロイ完了しました。Turin はコア数が倍増(最大 192 コア、Gen 12 の 96 コアに対して)し、Zen 5 により IPC が向上、1 コアあたりの電力消費が約32%削減され、DDR5‑6400 メモリバンド幅をサポートします。チップは全コアで 384 MB の L3 キャッシュしか共有せず、1 コアあたり約 2 MB(Gen 12 の 3D V‑Cache を搭載した場合は 12 MB/コア)です。 元の FL1 ハンドラ(NGINX/LuaJIT)は Turin 上で L3 ミス率が高く、ミスサイクルが約350回に対しヒットは約50回と遅延が増大し、スループット向上にもかかわらずレイテンシが悪化しました。プリフェッチャーの調整、ワーカースケーリング、および NUMA コアアフィニティの最適化を行っても、スループットはわずか 5 % 未満にしか改善されませんでした。FL2 の軽量メモリアクセスパターンはこのボトルネックを解消し、Turin 上で Gen 12 に比べ約 50 % 低いレイテンシ、62 % 高いスループット、および FL1 より CPU あたり 2 倍のリクエスト数を実現します。 Gen 13 が Cloudflare のグローバルエッジネットワーク全体に完全展開されたことで、同社はサーバー数を減らしつつより多くのトラフィックを処理できるようになり、SLA に縛られたレイテンシを維持したままで最大 2 倍のスループットを達成します。これにより、パフォーマンス・ペー・ワットが約 50 % 改善され、ラック単位でのスループットは約 60 % 向上します。結果として CDN とクラウド顧客双方の運用コスト削減とカーボンインパクト低減に寄与します。