Open3

なんとなく【iptables】を理解したい

harrythecodeharrythecode

iptablesとは

Linux系を触ったことがある人なら概念は分かるかと思います。全く何もわからない人に向けて説明すると「サーバへのアクセス制御を細かくできるツール」の一種だと考えてください。

https://ja.wikipedia.org/wiki/Iptables

要は、ネットワーク通信の「入口」「処理中」「出口」を決まった様式で制御するためのツールです。

今回は、iptablesの動きをなんとなく理解していきます。

harrythecodeharrythecode

XDP / eBPF

XDP
https://zenn.dev/hidenori3/articles/21c4540b80597d

eBPF
https://zenn.dev/hidenori3/articles/e1352e8cfeb2af

用語がわかんないよって人向けの説明

1. Linuxカーネルとは?

Linuxカーネルは、コンピュータの「頭脳」みたいなもので、ハードウェア(コンピュータの物理的な部分)とソフトウェア(アプリなど)をつなげる仕事をしています。

たとえば、インターネットを使って何かをするとき、パソコンにデータ(「パケット」という)が送られてきます。そのパケットをカーネルが処理して、アプリに渡したり、次にどこに送るかを決めたりします。でも、この処理が遅いと、ネットが遅く感じることがあります。

2. XDPって何?

XDPは、簡単に言うと、Linuxカーネルがパケットを受け取ってから処理するまでの時間を短くして、データをめちゃくちゃ速く処理できる仕組みです。

普通は、カーネルがパケットをじっくり見て「これはどうするべきか?」って考えますが、XDPは「そんなの後でいいから、とりあえずめっちゃ早く処理しちゃおう!」という感じで働きます。たとえば、必要のないデータはすぐに捨ててしまったり、別の場所に速攻で送ったりできます。

3. eBPFって何?

eBPFは「プログラムを使って、Linuxカーネルにやってほしいことを追加できる便利なツール」です。

普通、Linuxカーネルはそのままでは決まったことしかできません。でも、eBPFを使えば、カーネルに「こんなふうに動いてほしい!」という細かい指示ができます。しかも、そのプログラムは安全に動くようにしっかりチェックされるので、カーネルが壊れたりする心配が少ないです。

4. XDPとeBPFの関係

XDPは、パケットをすごく速く処理する仕組みです。でも、何をどう処理するかを決めるにはプログラムが必要です。そこで、eBPFを使って「このパケットは捨てる」「このパケットは次にここに送る」といった具体的な指示を書きます。

つまり、XDPが「めっちゃ速く処理する装置」なら、eBPFは「その装置にどう動けって指示するプログラム」みたいなものです。

5. なぜeBPFを使う必要があるのか?

eBPFを使うと、Linuxカーネルにカスタマイズした動き方をさせることができます。以下のようなメリットがあるんです:

  • 高速化:たとえば、ネットがすごく混んでいるときに、いらないパケットを早めに捨ててしまえば、重要なデータがスムーズに処理されてネットが速くなります。

  • 柔軟性:自分のシステムに合わせた特別な処理ができる。たとえば、特定の種類のデータだけを効率よく扱ったり、セキュリティ対策(悪いデータを弾く)を入れたりできるんです。

  • 安全性:eBPFのプログラムはカーネルの中で動くけど、カーネルがクラッシュしないように安全にチェックされて動きます。

まとめ

  • Linuxカーネルは、コンピュータ全体を管理している。
  • XDPは、ネットワークデータをめちゃくちゃ速く処理する仕組み。
  • eBPFは、そのXDPに「どう処理するか」を教えるためのプログラムツール。
  • eBPFを使うと、自分がやりたい特別な処理を、速くて安全にLinuxの中で実行できる。

これで、ネットワークが混んでいても、必要なデータだけを効率よく処理できるようになります。