English /  Japanese

802.1X suite for EOS セットアップガイド

EOS は 802.1X 認証機能に対応していません。 そこで我々は EOS に 802.1X 認証機能を追加するソフトウェアを開発し、これをスイッチエンジニアが簡単にインストールし、利用できる Extension パッケージとしてまとめました。

この文書では我々が作成した 802.1X suite for EOS のインストールとセットアップについて説明します。

注意: 2011年3月現在、このソフトウェアはベータ版です。 動作上の不具合に起因する問題について制作者は一切の責任を負わないものとします。

Kenta Mukai, Yutaka Yasuda
Arista Square


10/Dec/2012 : 5. ソースからの再ビルド を追加。あなた自身の EOS バージョンに合わせてリビルドできます。
30/Mar/2011 : 最初のβリリース。EOS 4.5.1 に対応。


目次

1. 概要
1.1 構成・動作環境
1.2 機能
1.3 ソフトウェア構成
1.4 パッケージ内容
2. インストール
2.1 パッケージのインストール
3. 運用
3.1 設定
3.2 起動
3.3 終了
3.4 ログ管理
3.5 トラブルシューティング
4. アンインストール
5. ソースからの再ビルド

1. 概要

1.1 構成・動作環境

一般的な 802.1X のセットアップ

802.1X 認証は図1に示すように Authenticator, Authentication Server, Supplicants の三つの要素から構成される。

ordinary structure for 802.1X config
図1. 一般的な 802.1X 環境

典型的な認証処理は以下のようなステップで行われる。

  1. Supplicant (802.1X クライアントと考えれば良い)が Authenticator (802.1X サーバと考えれば良い)にリクエストを出し、
  2. Authenticator は受け取ったユーザ名とパスワードからなる認証情報を Authentication server (多くの場合 Radius で実現する)に伝えて、結果(認証成功あるいは不成功)を受け取る
  3. 認証に成功しておれば Authenticator は Supplicant と外部との通信を許可する

通信の許可・遮断はスイッチが行うのが合理的であるため、Authenticator の機能は普通スイッチに実装される。つまり初期的にはスイッチは Supplicant が接続されているポートは他のポートとの通信ができない孤立した状態に設定され、認証が成功すれば他のポートとの通信を開けるように振る舞う。

ポートシェアリング

ところで 802.1X はポートベースのアクセス管理を行うために規定されているが、利用者の環境によっては 802.1X 対応のスイッチのポート一つを、必ずしも一台のマシンで占有するとは限らない。 そこで複数の利用者がポートを共有している(port sharing と呼ばれる)状況でも 802.1X プロトコルによる認証の恩恵を受けるために、市場には 802.1X 規格を拡張して、ポートベースではなく MAC アドレスベースでのアクセス制御を行う製品が存在する。

802.1X は EAP と呼ばれるプロトコルを利用するが、これを有線 LAN(Ethernet)環境で利用するために EAPOL (EAP over LAN) プロトコルが規定されている。 EAPOL では宛先 MAC アドレスに特殊な値 01:80:C2:00:00:03 を設定する。 これは IEEE 802.1D で定められたブリッジ制御用のアドレスの一部であり、Spanning Tree などもこの領域を使って機能している。 しかし逆にこのアドレスはスイッチ(ブリッジ)制御用と見なされるため、802.1X 非対応のスイッチではスイッチ内で破棄してしまう。

これでは Supplicant が出した認証リクエストは上流にある802.1X 対応スイッチに届かないため、市場では 802.1X のポートシェアリングを実現するため、EAPOL パケットを上流(あるいは他ポート)にフォワードする事が可能なスイッチが存在する。 この機能は「802.1X パススルー」などと呼ばれており、ポートシェアリングを行う際にはAuthenticator と Supplicant 間を接続するスイッチにこの機能がある事を確認する必要がある。

802.1X suite for EOS のセットアップ

我々の提供する 802.1X suite for EOS は図2. に示すような環境を実現する。

structure for 802.1X config using 802.1X suite for EOS
図2. 802.1X suite for EOS が実現する環境

つまりこれは Arista のソフトウェア実行能力を最大限に活かした one box solution である。 具体的には Authenticator 以外に Authentication server および DHCP server も Arista の中で実行する。 このように必要なサービスを one box で処理することの効果として、次節に示す統合ログの提供などが可能になった。 もちろん不要であれば DHCP あるいは Radius サーバについてそれぞれ外部のものを利用するようにできるが、その場合は幾らか設定変更などの調整が必要となる点に注意されたい。

1.2 機能

802.1X suite for EOS が提供する機能について簡単に列挙しておく。

任意のポートに対する 802.1X 認証機能の設定
ポートごとに 802.1X 対応を設定できる。 設定したポートが異なる VLAN に対応していたとしても問題無く機能する。 (単に MAC アドレスによるアクセス制限を掛けているだけなので)
ポートシェアリング
MAC アドレスベースでの 802.1X 認証を行っている。 もちろん一つのポートに Supplicant を一台だけ接続することに問題はない。
コマンドによる運用
802.1X 機能の起動・終了を EOS コマンドによって操作できる。 スイッチオペレータにとって一般的ではない bash の起動、init script の操作などは必要ない。
統合ログ
ある特定の時間にある IP アドレスを利用していたのがどのユーザ、マシンであったのかをネットワーク管理者が調査する事態はアクセス管理システムではごく普通にあり得る。 通常のシステム構成であれば Authenticator, Authentication server, DHCP server がそれぞれ提供する MAC アドレス、IP アドレス、ユーザ名を別個に付き合わせながらログを解釈する必要があるが、その作業は簡単ではない。
そのためにMAC アドレス、IP アドレス、ユーザ名をひも付けた状態で出力するスクリプトを用意した。
(この機能は現時点ではEOSコマンド化されていない)

1.3 ソフトウェア構成

802.1X suite for EOS が含んでいるソフトウェアの構成を図3.に示す。 次節に述べるパッケージのインストールによってこれらのソフトウェア群がインストールされると考えれば良い。

software components of 802.1X suite for EOS
図3. 802.1X suite for EOS が含むソフトウェア構成

具体的なソフトウェアのバージョン、オリジナルソースの情報などについては次節で示すこととし、ここでは各コンポーネントの役割などについて説明する。 それぞれ図の右側から順に以下に示す。

dhcpd, freeradius
それぞれ DHCP server およびお Radius server のオープンソース実装のものを利用した。 デフォルトの設定ファイルの位置などを示す init script などを微調整した程度で、ソフトウェア自体には手を加えていない。 Linux の daemon として常時起動されている。
hostapd for EOS
Authenticator はオープンソースソフトウェアとして公開されている hostapd を元に手を加え、EOS に対応させた。 802.1X suite for EOS の中心的な役割を果たす。 Linux の daemon として常時起動されている。
acl control daemon
hostapd は MAC 制御に関する実装を含んでいないため、hostapd for EOS にはその部分を独自に追加した。 それでも hostapd 自体に EOS の CLI コマンドである MAC ACL コマンドを認証ごとに起動していたのでは効率が悪すぎて処理能力が上がらないため、ACL コマンドをキューイングして随時実行する worker daemon を新規に作成した。 Python で記述され、Linux の daemon プログラムとして常時起動されている。
log mgmt script
統合ログを出力するための管理スクリプト。 Python で記述され、オペレータによって Linux コマンドとして実行される。
dot1x cmd
hostapd の起動・終了を行う dot1x system-auth-control コマンド。 EOS の CLI コマンドとして実行される。

1.4 パッケージ内容

インストールを容易にするために、802.1X suite for EOS は SWIX および RPM フォーマットのパッケージ形式で提供されている。 以下に必要となる 4 つのパッケージの内容を簡単に示す。 ソフトウェア群の構成については前節を参照のこと。

hostapd 0.7.3 for EOS4.5.1
Jouni Malinen が http://hostap.epitest.fi/hostapd/ で公開している開発当時の Latest Stable release である hostapd-0.7.3.tar.gz (2010-09-07 release) を改変したものと、前節で説明した ACL コマンドをキューイングしながら実行する worker daemon 等が含まれている。
他にも hostapd には起動スクリプトが用意されていないためこちらで起こしたもの等が含まれている。
GPL2 ライセンスであるため、ここにソースを提示しておく。 hostapd-0.7.3-arista-1.13.tgz
freeradius 2.1.9 for EOS4.5.1
Fedora Project が提供する freeradius-2.1.9-1.fc12.src.rpm から起こしたもの。 修正箇所は設定ファイルを標準的な位置ではなく /persist 以下にしたのみ。
perl 5.10.0-82 for EOS4.5.1
freeradius はその動作に perl を必要とするが、EOS には perl が入っていない。 そこで必要となった複数の perl の RPM をまとめて一つの SWIX ファイルにした。 含まれているのは perl-5.10.0-82.fc12.i686.rpm, perl-Module-Pluggable-3.90-82.fc12.i686.rpm, perl-Pod-Escapes-1.04-82.fc12.i686.rpm, perl-Pod-Simple-3.07-82.fc12.i686.rpm, perl-libs-5.10.0-82.fc12.i686.rpm, perl-version-0.82-1.fc12.i686.rpm である。 RPM 内部には手を加えていない。
dhcp 4.1.1-18.P1 for EOS4.5.1
Fedora Project が提供する dhcp-4.1.1-18.P1.fc12.src.rpm から起こしたもの。 修正箇所は設定ファイルを標準的な位置ではなく /persist 以下にしたのみ。

上記の RPM ファイルは EOS 4.5.1 のために作られた。 もしより新しい EOS にインストールしたい場合は、5. ソースからの再ビルド を参照されたい。

2. インストール

2.1 パッケージのインストール

ダウンロード

下記のパッケージをダウンロードして、USB メモリドライブに入れる。 ファイル名は変更しても構わないが、拡張子はそのままにすること。

上記の RPM ファイルは EOS 4.5.1 のために作られた。 もしより新しい EOS にインストールしたい場合は、5. ソースからの再ビルド を参照されたい。

Extension の登録

Extension パッケージの登録として CLI の copy コマンドを使った例を示す。 USB メモリドライブを Arista の USB ポートに接続した状態で、下記のように copy コマンドを実行して Extension として登録する。 以下に操作例を示すが、前節でダウンロードしたパッケージはいずれも USB メモリのトップディレクトリにあるものとする。

localhost#copy usb1:hostapd-0.7.3-EOS451.i686.rpm extension:
localhost#

同じ方法で全ての Extension を登録する。
登録状態を show extensions コマンドによって確認できる。 Status が A, NI であることをチェック。

localhost#show extensions 
Name                                       Version/Release           Status RPMs
------------------------------------------ ------------------------- ------ ----
dhcp-4.1.1-18.P1.EOS451.i686.rpm           4.1.1/18.P1.EOS451        A, NI  1
freeradius.EOS451.swix                     2.1.9/EOS451              A, NI  2
hostapd-0.7.3-EOS451.i686.rpm              0.7.3/EOS451              A, NI  1
perl.EOS451.swix                           5.10.0/82.fc12            A, NI  6
A: available | NA: not available | I: installed | NI: not installed | F: forced
localhost#

これによって次回起動時には自動的に Extension が読み込まれる。 詳細な Extension の操作については Arista Square のドキュメント「Extensions」 を参照。

インストール

CLI の extension コマンドを使ってインストールを行う。 依存性があるため、インストール順に注意。

localhost#extension hostapd-0.7.3-EOS451.i686.rpm
localhost#extension perl.EOS451.swix
localhost#extension freeradius.EOS451.swix
localhost#extension dhcp-4.1.1-18.P1.EOS451.i686.rpm
localhost#

登録状態を show extensions コマンドによって確認できる。 Status が A, I になったことをチェック。

localhost#show extensions 
Name                                       Version/Release           Status RPMs
------------------------------------------ ------------------------- ------ ----
dhcp-4.1.1-18.P1.EOS451.i686.rpm           4.1.1/18.P1.EOS451        A, I   1
freeradius.EOS451.swix                     2.1.9/EOS451              A, I   2
hostapd-0.7.3-EOS451.i686.rpm              0.7.3/EOS451              A, I   1
perl.EOS451.swix                           5.10.0/82.fc12            A, I   6
A: available | NA: not available | I: installed | NI: not installed | F: forced
localhost#

3. 運用

3.1 設定

freeradius, dhcpd の設定

FreeRADIUS, dhcpd の設定項目などについては省略する。 元となったソフトウェアの資料を参照されたい。 ただし設定ファイルの位置が以下のパスに変えられている点に注意。
dhcpd: /persist/local/dhcp/
FreeRADIUS:/persist/local/raddb/

hostapd の設定

設定ファイルは /persist/local/etc/hostapd/settings.txt である。 まず典型的なファイルの内容を示し、主要な項目についてそれぞれ説明する。

bash-4.0# pwd
/persist/local/etc/hostapd
bash-4.0# cat settings.txt 
interfaces=et19

logger_syslog=2
logger_syslog_level=2

eap_reauth_period=3600

own_ip_addr=127.0.0.1

auth_server_addr=127.0.0.1
auth_server_port=1812
auth_server_shared_secret=xxxxxxx

acct_server_addr=127.0.0.1
acct_server_port=1813
acct_server_shared_secret=xxxxxxx

bash-4.0# 
interfaces
802.1X 機能によるアクセス制限の対象となるスイッチポートを指定する。 複数ポートを対象とする場合は et19 et17 のように空白で区切って続ける。
logger_*
syslog に吐き出すログメッセージの設定。 特に修正する必要はない。 (統合ログの出力とは関係ないので変更しても問題はない)
eap_reauth_period
EAPの再認証期間。再認証は Authenticator と Supplicant の間で自動的に行われるため一般的には変更の必要はない。
own_ip_addr
hostapd のアドレスを指定する。dot1X suite for EOS の環境では自ホストとなる。
auth_server_*, acct_server_*
Authentication server となる Radius サーバのアドレス、ポート、shared secret を設定する。 shared secret は Radius Server に外部からアクセスされる可能性がある場合は FreeRADIUS サーバの設定ファイルと同期して変更すべし。 Radius は同時に Accounting server としてもアクセスする必要があるのでそれも指定している。

この設定ファイルは次節に説明する hostapd の起動時に /persist/local/etc/hostapd/conf ディレクトリ以下に展開され、それらを用いて hostapd が起動する。 逆に conf ディレクトリ以下のファイルは直接修正すべきでない。

3.2 起動

freeradius, dhcpd の起動

FreeRADIUS, dhcpd を起動する。 現時点ではこれらは自動起動になっておらず、また起動するための CLI コマンドを用意していないため、EOS の bash から init スクリプトを用いて起動する。 次回システム再起動時にも同じ操作が必要である。 (近日中に対応予定。ベータテスター募集中。)

bash-
4.0# /etc/init.d/dhcpd start
Starting dhcpd:
bash-
4.0#

bash-
4.0# /etc/init.d/radiusd start
Starting RADIUS server:
bash-
4.0#
hostapd の起動:802.1X サービスの有効化

hostapd を起動し、802.1X サービスを有効化する。 この操作には管理用の CLI コマンドが用意されているので、まず CLI のコンフィグレーションモードに移行し、続けて dot1x system-auth-control コマンドを実行する。 次回システム再起動時にも同じ操作が必要である。 (近日中に対応予定。ベータテスター募集中。)

localhost#configure 
localhost(config)#
 
localhost(config)#dot1x system-auth-control
Applying Mac Access-List: [  OK  ]
Starting hostapd_acl_worker
Starting hostapd: [  OK  ]

localhost(config)#

3.3 終了

freeradius, dhcpd の終了

FreeRADIUS, dhcpd については終了操作は特に用意していない。 停止させたければ起動時と同様に EOS の bash から init スクリプトを用いて行えばよい。

hostapd の終了:802.1X サービスの無効化

hostapd を終了し、802.1X サービスを無効化する。 起動時と同様に、まず CLI のコンフィグレーションモードに移行し、続けて no dot1x system-auth-control コマンドを実行する。

localhost(config)#no dot1x system-auth-control
Stopping hostapd: [  OK  ]
Removing Mac Access-List: [  OK  ]

localhost(config)#

これによって対象となっていたポートの MAC ACL が全て破棄され、どのポートに対しても認証無しにアクセスできるようになる点に注意。

3.4 ログ管理

統合ログ表示スクリプトは hostapd と dhcpd のログを解析し、ユーザ名、MAC アドレス、IP アドレス、認証情報を紐付けた情報を出力する。 スクリプトは /persist/local/etc/hostapd/show_integrated_log.py にある。 Python で書かれており、引数なしで実行することによって下記のような出力を表示する。

bash-4.0# cd /persist/local/etc/hostapd
bash-4.0# python show_integrated_log.py
 :
dot1x: Mar 31 03:42:24 et18 john 00:09:6b:3f:ce:fe authenticated
dot1x: Mar 31 03:42:54 et18 john 00:09:6b:3f:ce:fe 192.168.12.178
dot1x: Mar 31 03:44:44 et17 foo 00:1f:d0:ad:c7:e7 authenticated
dot1x: Mar 31 03:45:04 et17 foo 00:1f:d0:ad:c7:e7 192.168.12.162
dot1x: Mar 31 03:47:49 et17 foo 00:1f:d0:ad:c7:e7 unauthenticated
dot1x: Mar 31 03:48:26 et18 john 00:09:6b:3f:ce:fe unauthenticated
bash-4.0#

各行はそれぞれイベントがある度に出力される。 以下にイベントの種類と出力フォーマットを示す。

認証成功時
802.1X の認証に成功したときに出力される。
フォーマット:dot1x: <time> <interface> <user-name> <mac-addr> authenticated
認証失敗・失効時
802.1X の認証に失敗した、あるいは logoff を行った場合に出力される。 また再認証に失敗した場合にも出力される。 802.1X は logoff せずにクライアントのネットワーク接続を切る場合が多いため、EAPOL では一定期間ごとに再認証が行われる。Supplicant が機能しておれば再認証は自動的に行われるが、ネットワーク接続が切られた場合はこの再認証がタイムアウトして失敗する
フォーマット:dot1x: <time> <interface> <user-name> <mac-addr> unauthenticated
クライアントの IP アドレス取得
Supplicant が dhcp によって IP アドレスを取得したときに出力される。 802.1X では認証に成功するまで DHCP を含めた全てのパケットが遮断されるため、DHCPによるアドレスの取得は普通、認証に成功した後で行われる。
フォーマット:dot1x: <time> <interface> <user-name> <mac-addr> <IP-addr>

なおオリジナルの hostapd では認証時のログには MAC アドレスと認証の成否しか出力されない。 このために認証時に ユーザ名とインタフェース名を付加したログを出力するよう変更を加えている。

3.5 トラブルシューティング

既に判っている典型的な問題についてまとめておく。

仮想マシンでの使用

仮想化システムのゲストOSに Supplicant の役割をさせた場合、Supplicant ソフトウェアが正しく動作しない場合が確認された。 原因は仮想化システムに利用される Virtual Switch が図4.に示すように EAPOL のスイッチ制御パケットを全ポートにフォワーディングしてしまうことにある。

EAPOL forwarding on virtual switch
図4. 仮想スイッチにおけるEAPOLパケットのフォワーディング

wpa_supplicant を含めて、ある種の Supplicant ソフトウェアは他ホストからの、あるいは他のホスト向けの EAPOL パケットを受け取ると動作がおかしくなる場合がある。 対策としては、仮想スイッチに対して ebtables などを用いたフィルタリングを設定し、EAPOL パケットは特定のポート、つまり上流スイッチに接続されたポート以外にはフォワードしないように設定すれば良い。

以下に ebtables による設定例を示す。0x888E は EAPOL のプロトコルタイプ、eth1 はホストサーバの NIC に対応する。

$ ebtables -A FORWARD -p 0x888E -i eth1 -j ACCEPT
$ ebtables -A FORWARD -p 0x888E -o eth1 -j ACCEPT
$ ebtables -A FORWARD -p 0x888E -j DROP

なお従来 Linux のブリッジにおいては EAPOL を含めたスイッチ制御パケットは一切フォワードしない仕様だった。(つまり802.1X 認証はゲストOSからは一切出来なかった)
しかし KVM のゲストOSから 802.1X 認証を利用したい、というリクエストを聞いて、David Miller が2010年10月21日にカーネルに対して全てのスイッチコントロールパケットを転送するように修正を加えた。 このため現在の最新カーネルはこの問題の対策が必要と思われる。

その他の問い合わせ先

技術的な問い合わせは yasuda [ at ] ylb.jp まで。

4. アンインストール

パッケージのアンインストール

CLI の no extension コマンドを使ってアンインストールする。 依存性があるため、アンインストール順に注意。

localhost#no extension dhcp-4.1.1-18.P1.EOS451.i686.rpm
localhost#no extension hostapd-0.7.3-EOS451.i686.rpm
localhost#no extension freeradius.EOS451.swix
localhost#

perl は依存関係のために正常にアンインストールできない。

localhost#no extension perl.EOS451.swix
% Error uninstalling extension: RPM uninstall error: Transaction check failed: perl(Data::Dumper) is needed by
 (installed) net-snmp-utils-1:5.5-7.99.Ar.i686
perl(Fcntl) is needed by (installed) i2c-tools-3.0.2-4.fc12.i686
perl(File::Copy) is needed by (installed) net-snmp-utils-1:5.5-7.99.Ar.i686
perl(Getopt::Std) is needed by (installed) net-snmp-utils-1:5.5-7.99.Ar.i686
perl(IO::File) is needed by (installed) net-snmp-utils-1:5.5-7.99.Ar.i686
perl(POSIX) is needed by (installed) i2c-tools-3.0.2-4.fc12.i686
perl(POSIX) is needed by (installed) i2c-tools-3.0.2-4.fc12.i686
perl(Term::ReadLine) is needed by (installed) net-snmp-utils-1:5.5-7.99.Ar.i686
perl(constant) is needed by (installed) i2c-tools-3.0.2-4.fc12.i686
perl(strict) is needed by (installed) i2c-tools-3.0.2-4.fc12.i686
perl(vars) is needed by (installed) i2c-tools-3.0.2-4.fc12.i686
perl >= 0:5.004 is needed by (installed) i2c-tools-3.0.2-4.fc12.i686
/usr/bin/perl is needed by (installed) i2c-tools-3.0.2-4.fc12.i686
/usr/bin/perl is needed by (installed) net-snmp-utils-1:5.5-7.99.Ar.i686

localhost#

登録状態を show extensions コマンドによって確認できる。 Status が A, NI になっておれば良い。 (perl については I のまま)

localhost#show extensions 
Name                                       Version/Release           Status RPMs
------------------------------------------ ------------------------- ------ ----
dhcp-4.1.1-18.P1.EOS451.i686.rpm           4.1.1/18.P1.EOS451        A, NI  1
freeradius.EOS451.swix                     2.1.9/EOS451              A, NI  2
hostapd-0.7.3-EOS451.i686.rpm              0.7.3/EOS451              A, NI  1
perl.EOS451.swix                           5.10.0/82.fc12            A, I   6
A: available | NA: not available | I: installed | NI: not installed | F: forced
localhost#
Extension の削除

Extension パッケージの削除は CLI の delete コマンドによって行う。

localhost#delete extension:hostapd-0.7.3-EOS451.i686.rpm
localhost#

同じ方法で全ての Extension を削除する。
show extensions で状態を確認すると以下のようになっているだろう。

localhost#show extensions
No extensions are available
localhost#

これで次回起動時に自動的に Extension が読み込まれる事はない。 詳細な Extension の操作については Arista Square のドキュメント「Extensions」 を参照。

5. ソースからの再ビルド

上に記した RPM ファイルはすべて EOS 4.5.1 のために作られたものである。 より新しい EOS にインストールしたい場合は、以下の記述に従ってパッケージ群を再構成すれば良い。 我々は EOS 4.5.1 のベースバージョンであった Fedora 12 環境を PC 上に構築し、そこでビルドした。

ソースの取得

必要なソースは SRPM 形式で以下に置かれている。

Perl については EOS 向けの加工は何も無いので、一般的な perl パッケージをそのままインストールすれば良い。

SRPM ファイルのインストールと再ビルド

SRPM ファイルを展開する。これらの作業は PC 上で行っている。(Arista の上で行ったのではない)

$ rpm -ivh dhcp-4.1.1-18.P1.EOS451.src.rpm 
   1:dhcp                   ########################################### [100%]
$ rpm -ivh freeradius-2.1.9-EOS451.src.rpm 
   1:freeradius             ########################################### [100%]
$ rpm -ivh hostapd-0.7.3-EOS451.src.rpm 
   1:hostapd                ########################################### [100%]
$ 

すると、ソースコードとパッチファイルがrpm/SOURCES/に、スペックファイルがrpm/SPECS/に展開される。

$ ls rpm/
SOURCES  SPECS
$ 

rpmbuildコマンドを使って再ビルドを行う。

$ rpmbuild -bb rpm/SPECS/dhcp.spec 
:
書き込み完了: /home/kenta/rpm/RPMS/i686/dhcp-4.1.1-18.P1.EOS451.i686.rpm
:
$

$ rpmbuild -bb rpm/SPECS/freeradius.spec 
:
書き込み完了: /home/kenta/rpm/RPMS/i686/freeradius-2.1.9-EOS451.i686.rpm
:
$ 

$ rpmbuild -bb rpm/SPECS/hostapd-0.7.3.spec 
:
書き込み完了: /home/kenta/rpm/RPMS/i686/hostapd-0.7.3-EOS451.i686.rpm
:
$ 

rpm/RPMS/i686/ 以下に作成された rpm ファイルが確認できるだろう。

$ ls rpm/RPMS/i686/
dhclient-4.1.1-18.P1.EOS451.i686.rpm        freeradius-mysql-2.1.9-EOS451.i686.rpm
dhcp-4.1.1-18.P1.EOS451.i686.rpm            freeradius-perl-2.1.9-EOS451.i686.rpm
dhcp-debuginfo-4.1.1-18.P1.EOS451.i686.rpm  freeradius-postgresql-2.1.9-EOS451.i686.rpm
dhcp-devel-4.1.1-18.P1.EOS451.i686.rpm      freeradius-python-2.1.9-EOS451.i686.rpm
freeradius-2.1.9-EOS451.i686.rpm            freeradius-unixODBC-2.1.9-EOS451.i686.rpm
freeradius-debuginfo-2.1.9-EOS451.i686.rpm  freeradius-utils-2.1.9-EOS451.i686.rpm
freeradius-krb5-2.1.9-EOS451.i686.rpm       hostapd-0.7.3-EOS451.i686.rpm
freeradius-ldap-2.1.9-EOS451.i686.rpm       hostapd-debuginfo-0.7.3-EOS451.i686.rpm
$ 
SWIX ファイルの作成

FreeRADIUS は perl と libtool-ltdl-2.2.6-15.fc12.i686.rpm に依存している。 Arista の Extension としてインストールするために、これらを含めて EOS の SWIX フォーマットにアーカイブする。 また、perl についても(インストール操作を簡単にするために)必要なモジュールをひとつの SWIX ファイルにアーカイブする。 なお、以下の作業は Arista / EOS で行う。

locahost#swix create freeradius.eos4.5.1.swix \
> freeradius-2.1.9-EOS451.i686.rpm \
> libtool-ltdl-2.2.6-15.fc12.i686.rpm
   adding: manifest.txt (stored 0%)
   adding: freeradius-2.1.9-EOS451.i686.rpm (stored 0%)
   adding: libtool-ltdl-2.2.6-15.fc12.i686.rpm (stored 0%)
locahost# 

locahost#swix create perl.eos4.5.1.swix \
> perl-5.10.0-82.fc12.i686.rpm \
> perl-Module-Pluggable-3.90-82.fc12.i686.rpm \
> perl-Pod-Escapes-1.04-82.fc12.i686.rpm \
> perl-Pod-Simple-3.07-82.fc12.i686.rpm \
> perl-libs-5.10.0-82.fc12.i686.rpm \
> perl-version-0.82-1.fc12.i686.rpm
   adding: manifest.txt (stored 0%)
   adding: perl-5.10.0-82.fc12.i686.rpm (stored 0%)
   adding: perl-Module-Pluggable-3.90-82.fc12.i686.rpm (stored 0%)
   adding: perl-Pod-Escapes-1.04-82.fc12.i686.rpm (stored 0%)
   adding: perl-Pod-Simple-3.07-82.fc12.i686.rpm (stored 0%)
   adding: perl-libs-5.10.0-82.fc12.i686.rpm (stored 0%)
   adding: perl-version-0.82-1.fc12.i686.rpm (stored 0%)
locahost# 

これで、2.1 パッケージのインストール に示した手順でインストール可能な RPM および SWIX パッケージが用意できた。



Yutaka Yasuda (yasuda [ at ] ylb.jp)