Ubnutu 14.04 LTSで最新版のiptablesを使う

Ubuntu 14.04 LTSに導入されているiptablesが古いので最新版をビルドしてみました。その備忘録です。

Ubuntu 14.04 LTSに導入されているiptablesのバージョンは以下になります。

$ iptables -V
iptables v1.4.21

普通に使う分には困ることはないのですが、kernelの新しい機能を活かすにはiptablesも新しくしないといけません。

動作環境

以下のバージョンでの確認手順になります。なお、ビルドしたiptablesを用いた細かい動作確認はしておりませんのであしからず。

Ubuntu Server 14.04.3 LTS

$ lsb_release -drc
Description:    Ubuntu 14.04.3 LTS
Release:        14.04
Codename:       trusty

Linux Kernel

$ uname -r
3.19.0-25-generic

ビルド手順

必要なパッケージのインストール

ビルドに必要なツールチェインや依存ライブラリを取ってきます。

$ sudo apt-get install build-essential git dh-autoreconf pkg-config bison flex libmnl-dev

作業ディレクトリ作成

適当なディレクトリを作ってその下で作業することにします。

$ mkdir work
$ cd work

libnftnl

パッケージで導入できないライブラリを最新のiptablesでは用いているのでこちらからビルドします。

The netfilter.org “libnftnl” project

$ git clone git://git.netfilter.org/libnftnl
$ cd libnftnl
$ ./autogen.sh && ./configure
$ make
$ sudo make install
$ sudo ldconfig
$ cd ..

ビルドしたライブラリはこんな感じです。

$ ls /usr/local/lib/libnftnl*
/usr/local/lib/libnftnl.la  /usr/local/lib/libnftnl.so.4
/usr/local/lib/libnftnl.so  /usr/local/lib/libnftnl.so.4.0.0

iptables

さて、ようやく本命のiptablesです。

The netfilter.org “iptables” project

$ git clone git://git.netfilter.org/iptables
$ cd iptables
$ ./autogen.sh && ./configure
$ make
$ sudo make install
$ cd ..

“/usr/local/sbin”配下にインストールされます。デフォルトのiptablesは”/sbin”配下に残っているのでパスを切り替えればどちらも使えます。

$ /usr/local/sbin/iptables -V
iptables v1.6.0

nftables

ついでにiptablesの後継、というか{ip,ip6,arp,eb}tablesを統合するらしいnftablesも入れてみましょうか。

The netfilter.org “nftables” project

一部依存ライブラリがあるので追加でパッケージインストールしてビルドします。

$ sudo apt-get install libgmp3-dev libreadline6-dev
$ git clone git://git.netfilter.org/nftables
$ cd nftables
$ ./autogen.sh && ./configure
$ make
$ sudo make install
$ cd ..

“/usr/local/sbin”配下にインストールされます。

$ nft -v
nftables v0.5 (Support Edward Snowden)

バージョンは”0.5″。公式サイトでも

It is currently under development.

とあるのでゴリゴリ使うことはないでしょうが、今後はiptablesよりもnftablesのほうの開発を進めていくと思われますのでいつかは使い方を覚えないといけないですね。

バージョン番号の後ろのサポート者はもしかしてあの御方なのでしょうか(よくわかりません)。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*