私はインテリジェントファイアウォールの作業を始めていますが、その前に、非常に基本的なファイアウォールがどのように機能するかを明確に理解する必要があります。私と私のチームはCで最も快適なので、それを使用します。
誰かがCで書かれた非常に基本的なファイアウォールの例を挙げてもらえますか。
正しいファイアウォールを開発することは簡単な作業ではありません。基盤となるオペレーティングシステムのネットワークスタックと、OSIモデルのすべての層のさまざまなプロトコルを完全に理解する必要があります。
Linuxで最も広く使用されているパケットフィルタリングソフトウェアを担当するnetfilter/iptablesプロジェクトはオープンソースであり、ファイアウォールに何が入るのかをよく理解できるはずです。確かに「非常に基本的な」カテゴリには含まれていませんが、「非常に基本的な」と主張されているファイアウォールソフトウェアには注意が必要です。
通常、Linuxのほとんどのファイアウォールは、に送信される文字列を整理するシェルスクリプトのコンパイルであり、ブリッジングが機能しているかどうかに応じてコマンドを実行するiptables
こともあります。ebtables
さらに、tc
トラフィックシェーピングが使用されている場合は、ユーティリティと通信します。
ショアウォールはそのようなファイアウォールの例ですが、それだけではありません。さまざまなタイプのNAT、VPN周辺のセキュリティなどを設定できます。
これを完全にCで実行したいようです。iptablesのソースを取得し、対応するカーネルが提供するioctlフックに精通することをお勧めします。その時点で、必要なことを実行する独自のラッパーを作成するプロセスを開始できるようになります。
注意:ルートはアプリケーションを実行しているユーザーである必要があります。そのために(またはその周辺で)設計するようにしてください。