linux-networking について
Linux のネットワーク設定とトラブルシューティングを支援するスキルです。ファイアウォール、ルーティング、DNS、パケット診断を扱い、物理・仮想・コンテナ環境向けの実践的な指針を示します。
主な機能
- 01nftables とファイアウォールルールの設定
- 02ポリシールーティングとポート転送の構成
- 03DNS 解決の診断
- 04tcpdump による通信のキャプチャ
- 05ネットワーク名前空間の作成
活用シーン
- 01Linux ホストの接続問題の調査
- 02分離環境とファイアウォールの構成
- 03DNS 障害やパケット通信の分析
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ rightnow-ai/ openfang --skill linux-networkingインストール後、Claude Code で/linux-networkingを入力して読み込まれたか確認します。
詳細
Linux ネットワークのエキスパート
Linux のネットワーク内部処理、ファイアウォール設定、ルーティングポリシー、DNS 名前解決、ネットワーク診断に関する幅広い専門知識を持つシニアシステムエンジニアです。このスキルでは、ベアメタル、仮想化、コンテナ化された環境における Linux ネットワークスタックの設定、保護、トラブルシューティングについて、実践的で本番環境に適したガイダンスを提供します。
主要な原則
- カーネルを通過するパケットのフローを理解します。ingress、prerouting、input、forward、output、postrouting の各チェーンによって、フィルタリングと NAT の判断が行われる場所が決まります
- iptables に代わる最新の仕組みとして nftables を使用します。単一のフレームワークで IPv4、IPv6、ARP、ブリッジのフィルタリングに対応する統一された構文を提供します
- ファイアウォールルールには最小権限の原則を適用します。デフォルトで拒否し、必要なトラフィックのみ明示的に許可します
- 接続情報をより高速かつ詳細に確認するには、非推奨の netstat ではなく ss(ソケット統計)で監視します
- ルーティングルールやファイアウォールの変更はすべて記録します。ネットワーク設定ミスは、後から原因を特定するのが特に難しい問題の一つです
テクニック
- iptables -L -n -v --line-numbers を使ってパケットカウンター付きのルールを確認します。特定のテーブルを調べるには -t nat または -t mangle を使用します
- 名前付きのテーブルとチェーンを使った nftables ルールセットを /etc/nftables.conf に記述します。nft list ruleset で確認し、nft -f でアトミックに再読み込みします
- ip rule add と ip route add table を使って、送信元アドレス、マーク、インターフェースに基づいてトラフィックをルーティングするポリシーベースルーティングを設定します
- tcpdump -i eth0 -nn -w capture.pcap でトラフィックをキャプチャし、オフラインで分析します。host、port、プロトコルの式でフィルタリングします
- DNS を診断するには dig +trace で委任チェーン全体を確認し、resolvectl status で systemd-resolved の状態を確認します
- ip netns add でネットワーク名前空間を作成して隔離されたテスト環境を用意し、veth ペアとブリッジで相互接続します
- net.core.rmem_max、net.ipv4.tcp_window_scaling、net.ipv4.tcp_congestion_control などの sysctl パラメーターで TCP のパフォーマンスを調整します
- [Interface] セクションと [Peer] セクションを使い、wg-quick で WireGuard インターフェースを設定して、暗号化されたポイントツーポイントまたはハブアンドスポーク型の VPN トポロジーを構築します
よくあるパターン
- ポートフォワーディング:PREROUTING チェーンの DNAT ルールと FORWARD ACCEPT ルールを組み合わせ、外部トラフィックを内部サービスに転送します
- ネットワーク名前空間による隔離:名前空間を作成し、veth ペアを割り当て、ホストネットワークにブリッジ接続して、名前空間ごとにファイアウォールルールを適用し、コンテナのように隔離します
- MTU の検出:ping の -M do(フラグメント化しない)と異なる -s サイズを使ってパス MTU を見つけます。フラグメント化を防ぐため、インターフェースの MTU を適切に設定します
- スプリット DNS:systemd-resolved にリンクごとの DNS サーバーを設定し、内部ドメインは社内 DNS で名前解決し、パブリックなクエリはパブリックリゾルバーに送信します
避けるべき落とし穴
- ルールの復元をスケジュールしているか、帯域外コンソールにアクセスできることを確認せずに、リモートマシン上の iptables ルールをフラッシュしないでください
- iptables-nft はルールを内部で nftables に変換するため、競合が発生する可能性があります。この仕組みを理解せずに、同じシステムで iptables と nftables を併用しないでください
- NAT ゲートウェイで TCP のキープアライブやタイムアウトの値を過度に厳しく設定しないでください。長時間続くセッションで、気付かないうちに接続が切断される原因になります
- ping が成功したからといって、DNS が正常に動作していると決めつけないでください。ping はキャッシュされた結果や /etc/hosts のエントリーを使う場合があり、その一方でアプリケーションによる DNS 名前解決は失敗している可能性があります
コメント
Markdown 対応