Opengate インストール手順


*こちらが、より新しいドキュメントです。先に参照ください。

A インストール概要

A.1 システム構成

ゲートウェイマシンとして、NICを2枚以上持ち、FreeBSDをインストールすることが可能なものを用意する。

本文書の説明では、下に示す構成のシステムを仮定している。ここで端末接続のネットワークを下流側と呼び、利用するWebサーバー等が存在す るネットワークを上流側と呼ぶことにする。

上流側ネット:192.168.0.0/24, 2001:db8:1:2:3/64
ゲートウェイ上流側インターフェース:fxp1, 192.168.0.124, 2001:db8:1:2:3::4
ゲートウェイ下流側インターフェース:fxp0, 192.168.1.1, 2001:db8:5:6:7::1
下流側ネット:192.168.1.0/24, 2001:db8:5:6:7/64

Opengateは、IPv4とIPv6の両アドレスを認識して、それぞれに対するファイアウォールを制御するが、IPv4だけを設定した FreeBSDシステムであっても問題なく利用できる。

A.2 インストール手順

Opengateのインストール手順を以下に示す。ただし、※は必須項目を示し、それ以外の手順は必要に応じて行なう。

A.2 サポートページ

Opengateの情報を下記のページにまとめている。
 http://www.cc.saga-u.ac.jp/opengate/

back top

B FreeBSDのインストール

B.1 基本インストール

FreeBSD6.1以降のどれかをインストールする。後にカーネルを再構築する必要があるので、インストールする Distributionsを選択する際に、Developer(Full sources,binaries and doc)もしくはAllを選択しなければならない。

FreeBSDをインストールした後に、ゲートウェイとしての機能を有効にするために、/etc/rc.confに次の設定を記述する。もし くは、 FreeBSDをインストールする際に、ゲートウェイとしての機能を有効にするか否かを問われるので、ここでゲートウェイの機能を有効にして も構わない。

gateway_enable="YES"
back top

B.2 NATとファイアウォールの追加

ファイアウォール(ipfw)を利用するためには、FreeBSDのカーネルを再構築する必要がある 。 FreeBSDインストール時にカーネル等の全てのソースをインストールしていなければならない。

* 新しいカーネルでは標準でipfwが含まれており、再構築の必要はない。以下をスキップして/etc/rc.confの設定から始める。

以下のディレクトリにおいて、Opengate用のカーネルオプションを指定するファイルMYKERNELを作成する。

# cd /usr/src/sys/i386/conf
# vi MYKERNEL

MYKERNELの内容は次の通り。

include GENERIC

ident MYKERNEL

options IPDIVERT

options IPFIREWALL
options IPFIREWALL_FORWARD
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100

options IPSEC
device crypto

MYKERNELを保存した後に、カーネルのコンパイルとインストールを行なう。

#cd /usr/src
#make buildkernel KERNCONF=MYKERNEL
#make installkernel KERNCONF=MYKERNEL

これが失敗するなら、古い方式を利用する。
# config MYKERNEL
# cd ../compile/MYKERNEL
# make depend
# make
# make install

"make depend"を実行する前に、"make clean"が要求される場合もある。

再構築したカーネルによって、ファイアウォールを有効にするために/etc/rc.confに以下のオプションを記述する。

firewall_enable="YES"
firewall_script="/etc/rc.firewall"
firewall_type="open"

natd_enable="YES"
natd_interface="fxp1"

ここでは、この後のチェックにおいて不可解な問題を起こさないように、ひとまず全ての通信を許可する設定とする。さらにNATが必要である場 合は、 natdを有効にし、アドレス変換を行うインタフェース(上流側)のIDを指定する。

下流側ネットワークにPCをつなぎ、IPv4におけるゲートウェイ機能を満たしていることを確認する。

まだDHCPは設定されていないので、PCのネットワークはマニュアルで設定しなければならない。

back top

B.3 IPv6の設定(Optional(任意))

IPv6機能を使わない場合には、この項は不要である。IPv6機能を使う場合には多くの設定を/etc/rc.confにする必要がある。 複雑なために詳細は略すが、熟知した上で設定することが必要である。

##ENABLE IPv6
ipv6_enable="YES"
ipv6_network_interfaces="gif0 fxp0"

##TUNNELLING INTERFACE
gif_interfaces="gif0"
gifconfig_gif0="192.168.0.124 192.168.0.126"

##IPv6 ADDRESS
ipv6_prefix_fxp0="2001:db8:5:6:7"
ipv6_ifconfig_fxp0="2001:db8:5:6:7::1 prefixlen 64"

##ADVERTISE
rtadvd_enable="YES"
rtadvd_interfaces="fxp0"

##DEFAULT GATEWAY
ipv6_default_interface="gif0"
ipv6_defaultrouter="fe80::a:b:c:d%gif0"

##ROUTING(RIPv6)
ipv6_gateway_enable="YES"
ipv6_router_enable="YES"
ipv6_router="/usr/sbin/route6d"
ipv6_router_flags="-O 2001:db8:5:6:7::/64,gif0"

下流側ネットワークにPCをつなぎ、IPv6が有効であることを確認する。

WindowsPCにおいてIPv6を有効にするには、"ipv6 install"とコマンドを入れる必要があるかもしれない。

back top

C BIND9のインストール(Optional(任意))

C.1 インストール(ports)

IPv6機能を使う場合には、IPv4とIPv6の両アドレスが登録されたDNSが必要である。IPv6機能を使わない場合には、DNSを設 定せずにIP アドレスで制御することも可能である。既存のDNSに追加することでも良い。 ここでは、BIND9をサーバマシンにインストールする手順を記す。

*新しいFreeBSDでは、標準で含まれているUnboundを使うことを薦める。

インストールにはsysinstallコマンドを用いても良い。portsからインストー ルするには以下のコマンドを使う(標準で/usr/sbin/namedが存在する場合 は[1.インストール]を省略する)。

# cd /usr/ports/dns/bind9/
# make clean
# make install clean ; rehash

インストールが完了すると、/etc/namedb(/var/named/etc/namaedb)以下のディレクトリに各種設定ファイル が生成される。

back top

C.2 認証キーの作成

BIND9では、セキュリティを確保するために認証キーを設定し、rndcコマンドを用いてnamedを制御する。

そこで、まず認証キーの作成を行う。認証キーの作成手順を以下に示す。

# cd /etc/namebd/
# rndc-confgen -b 512 > rndc.conf

以下のようにキーを含む設定ファイルrndc.confが作成される。

# Start of rndc.conf
key "rndc-key" {
algorithm hmac-md5;
secret "wMpASEmnRVnD602MtEb+RqtMee5+n0RVgpaUrlAHvPpgH3SoK7f2nRZBUH7a0urvmyBuAg0dwtk/Otg9Ker3gA==";
};

options {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf

# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
# algorithm hmac-md5;
# secret "wMpASEmnRVnD602MtEb+RqtMee5+n0RVgpaUrlAHvPpgH3SoK7f2nRZBUH7a0urvmyBuAg0dwtk/Otg9Ker3gA==";
# };
#
# controls {
# inet 127.0.0.1 port 953
# allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf
back top

C.3 named.confの設定

namedの主な動作を制御するための設定ファイル/etc/namedb/named.confの設定を行う。

まず、認証キーの設定のためにkeyディレクティブの設定が必要である。前述したrndc.confの keyディレクティブと同様の設定をしなければならない。そこで、rndc.confの後半部分をコピーしてコメントを外す。さらにIPv6 設定(必要なら)を加える。

# Use with the following in named.conf, adjusting the allow list as needed:
key "rndc-key" {
algorithm hmac-md5;
secret "wMpASEmnRVnD602MtEb+RqtMee5+n0RVgpaUrlAHvPpgH3SoK7f2nRZBUH7a0urvmyBuAg0dwtk/Otg9Ker3gA==";
};

controls {
inet ::1 port 953 allow { ::1; } keys { "rndc-key"; };
inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; };
};
# End of named.conf

なおkeyディレクティブについては別ファイルに記述し、named.confでinclude することが望ましい。

次に、named.conf中のoptionsディレクティブの設定を行う。

options {
directory "/etc/namedb";
pid-file "/var/run/named/pid";
auth-nxdomain yes;
listen-on-v6 { any; };
};

pidファイルを置くディレクトリは適当に作成する必要がある。

back top

C.4 zoneの設定

Opengateで管理するドメインについて設定を行う。各ドメインはnamed.confのzoneディレクティブによって管理される。

 zone "og.saga-u.ac.jp" {
 type master;
 file "og.saga-u.ac.jp";
 };

以上の設定において、"og.saga-u.ac.jp"というzoneを設定した。この設定に おいて、ドメイン"og.saga-u.ac.jp"に属するホストを設定した og.saga-u.ac.jpというファイルを読み込むように設定している。そこで、 og.saga-u.ac.jpという名の、次のようなファイルを用意する。なお、ドメイ ン名とIPアドレスは、適切に設定する必要がある。IPv6が不要なら、"AAAA ...."の行は削除する。

$TTL 3600
$ORIGIN og.saga-u.ac.jp.

@ IN SOA ns.og.saga-u.ac.jp. postmaster (
   2005051702 ;
   3600
   1200
   2419200
   86400 )
  IN NS ns.og.saga-u.ac.jp.
  IN A 192.168.1.1
  IN MX 10 opengate.og.saga-u.ac.jp.

ns IN A 192.168.1.1

opengate IN A 192.168.1.1
  IN AAAA 2001:db8:5:6:7::1
back top

C.5 起動確認

以上、全ての設定が完了した後に、起動確認を行う。

# /usr/local/sbin/named -u bind -c /etc/namedb/named.conf

問題なくnamedが起動していれば成功である。問題がなければ、/etc/rc.confに以下の項目を記述し、自動起動するように設定す る。

named_enable="YES"
named_program="/usr/local/sbin/named"
named_flags="-u bind -c /etc/namedb/named.conf"

DNSサーバは管理が複雑であるため、この他の資料も参考にし、マニュアルを熟読した上で設定することが望ましい。

back top

D isc-dhcp3のインストール(Optional(任意))

D.1 インストール(ports)

Opengateを導入するネットワークでは、利用者端末が頻繁に入れ替わることが予測できる。そこで、様々な利用者端末に対して自動的に IPv4アドレスを割り当てることができるDHCPサーバを導入することが望ましい。

以下にisc-dhcp3のインストール手順を記す。"sysinstall"コマンドを用いても良い。

# cd /usr/ports/net/isc-dhcp3-server
# make clean
# make install clean ; rehash
back top

D.2 DHCPの設定

インストール作業が完了すると、/usr/local/etc以下にdhcpd.conf.sampleが生成されている。同ディレクトリに dhcpd.confとしてコピーし修正する。

以下に、設定例を示す。リース時間は、許容最大時間(opengatesrv.conf内のDuration/Max)より長くすること。

option domain-name "og.saga-u.ac.jp";
option domain-name-servers 192.168.1.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;

default-lease-time 86400;
max-lease-time 604800;
ddns-update-style none;
log-facility local7;

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.250;
}

また、dhcpdを自動起動するために、/etc/rc.confに以下の項目を記述する。

dhcpd_enable="YES"
dhcpd_ifaces="fxp0"
dhcpd_conf="/usr/local/etc/dhcpd.conf"

dhcpd_ifacesについては、dhcpを送信するインタフェースIDを記述する。

back top

E Apache2のインストール

E.1 インストール(ports)

IPv6機能を使う場合、IPv6をサポートしたApache2が必要である。また、認証を行うことから SSLをサポートすることが望ましい。Apache2は標準でSSLをサポートしているので、mod_ssl を別途インストールする必要はない。

以下に、portsを利用してインストールする手順を以下に記す。インストールは"sysinstall"コマンドを用いても良い。

# cd /usr/ports/www/apache22
# make clean
# make install clean ; rehash
back top

E.2 秘密鍵、証明書の作成

Apache2で、SSLを利用するために秘密鍵と証明書を用意する必要がある。正規の認証局から発行された証明書を用意することが望ましい が、自己署名を行った証明書と秘密鍵でも最低限のセキュリティを確保することが可能である。以下に、秘密鍵と証明書を作成する手順を示す。

# cd /usr/local/etc/apache22
# mkdir ssl.key ssl.crt
# chmod 700 ssl.key ssl.crt

# /usr/bin/openssl genrsa -out /usr/local/etc/apache22/server.key 1024

上記において作成した秘密鍵を用いて署名した証明書を作成する。

# /usr/bin/openssl req -new -x509 -days 365 \
-key /usr/local/etc/apache22/server.key \
-out /usr/local/etc/apache22/server.crt

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Saga
Locality Name (eg, city) []:Saga-city
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Saga-university
Organizational Unit Name (eg, subsection) []:Information Science
Common Name (eg, YOUR name) []:opengate.og.saga-u.ac.jp
Email Address []:administrator@opengate.og.saga-u.ac.jp

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
back top

E.4  SSLの設定

以下に/usr/local/etc/apache22/extra/httpd-ssl.confにおけるSSL設定例を示す。

ssl.conf
<VirtualHost _default_:443>
DocumentRoot "/usr/local/www/apache22/data"
ServerName opengate.og.saga-u.ac.jp:443
ServerAdmin administrator@opengate.og.saga-u.ac.jp
ErrorLog "|/usr/bin/logger -p local6.info"
CustomLog "|/usr/bin/logger -p local5.info" combined

SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /usr/local/etc/apache22/server.crt
SSLCertificateKeyFile /usr/local/etc/apache22/server.key
</VirtualHost>

上記の設定例は、バーチャルホストの設定のためのディレクティブのみ記述している。この他にも多くの項目を設定しなければならないので、 Apache2の設定を熟知した上で設定することが望ましい。

back top

E.5 その他の設定と動作確認

その他、/usr/local/etc/apache22/httpd.confにおいて以下の設定をする。

Opengateでは、利用者端末から送信されてくるHTTPリクエストを、Opengateが持つWebサーバに転送することによって、認 証ページを提供している。このため、利用者端末から送信されてくるHTTPリクエストは予期することができない。よって、存在しないファイル に対するHTTPリクエストに対しても、認証ページを返すために、HTTP_ERROR 404(File Not Found)が発生した場合に、DocumentRootを返すように設定する。

ErrorDocument 404 /

また、CGIプログラムの動作を許可する。

<Directory "/usr/local/www/cgi-bin">
...
Options ExecCGI
...
</Directory>

下の設定を有効にする。
AddHandler cgi-script .cgi
AddHandler type-map .var

index.html.varをDirectoryIndexに追加する。
DirectoryIndex index.html.var index.html

SSL設定ファイルをインクルードする。
Include etc/apache22/extra/httpd-ssl.conf

サーバ名を設定する。
ServerName opengate.og.saga-u.ac.jp

日本語が化ける場合には、文字セットの設定をコメントアウトする。

#AddDefaultCharset ISO-8859-1

インストール作業が完了した後、"apachectl start"コマンドで起動して動く事を確認する。 SSLでのアクセスや存在しないファイルの要求にも対応できているかも確認する。その後、Apache2の起動とSSLを有効にするために、 以下の項目を/etc/rc.confに記述する。

apache22_enable="YES"
apache22ssl_enable="YES"

もし"Failed to enable the 'httpready' Accept Filter"のメッセージが出た時は、/boot/loader.confに以下を記述する。
accf_http_load="YES"

back top

F SQLite3のインストール

F.1 インストール

SQLiteのサイトからダウンロードしたアーカイブを解凍し、インストール する。portsまたはsysinstallコマンドを用いても良い。

# tar xzvf sqlite-amalgamation-3.xx.xx.tar.gz
# cd sqlite-3.xx.xx
# ./configure
# make
# make install
back top

F.2 動作確認

以下のコマンドでインストールを確認する。
# sqlite3
SQLite version 3.xx.xx
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .quit
#

back top

G Opengateのインストール

G.1 Opengateパッケージ

Opengateのパッケージを適当なディレクトリに展開する。

# tar xzvf opengatexxxx.tar.gz

パッケージには以下のディレクトリが含まれる。

doc:各種文書
conf:設定ファイル、ファイアウォールスクリプト
javahtml:クライアントプログラム、HTMLファイル
opengatesrv:サーバCGIプログラム
tools: 付加ツール
ezxml: XMLパーサ (copyright Aaron Voisine)
back top

G.2 コンパイル

展開したファイルの中のopengatesrv/Makefileを確認する。もし以下のディレクトリが異なっていれば変更する。

HTMLTOP = /usr/local/www/apache22
DOCDIR = /data
CGIDIR = /cgi-bin
OPENGATEDIR = /opengate
CONFIGPATH = /etc/opengate
コンパイルとインストールをopengatesrvディレクトリにおいて行う。
# make clean
# make install
back top

G.3 設定ファイルの設定

設定ファイル/etc/opengate/opengatesrv.conf.sampleが作成されているので、これを /etc/opengate/opengtesrv.confにコピーして変更を加える。

cd /etc/opengate
cp opengatesrv.conf.sample opengatesrv.conf
vi opengatesrv.conf

必須変更箇所は以下の部分である。

	<OpengateServerName>opengate.og.saga-u.ac.jp</OpengateServerName>

<AuthServer>
<Protocol>pop3s</Protocol>
<Address>192.168.0.2</Address>
</AuthServer>

<OpengateServerName>には、サーバのHOSTNAME(FQDN)もしくはIPアドレスを記す。IPv6機 能を使うときには、IPv4とIPv6の両方が登録されたFQDNとする必要がある。

<AuthServer>には、認証サーバの設定を記す。各種プロトコルをサポートしているが、詳細は設定ファイルを参照のこ と。Opengateサーバと認証サーバの問題を切り分けるために、最初は以下の「全て許可」を試行すると分かりやすい。

 ****運用では用いないこと****
<AuthServer>
<Protocol>accept</Protocol>
</AuthServer>

設定ファイルはXML形式である。コメントは<!-- Comment String -->と書く。#マークはコメントを意味しないので、コメントアウト時には注意すること。

Opengateは"userid@extid"のパターンによって認証を切り替えることができる。これにより、部門別ユーザや外部ユーザに 対する認証を分離できる。詳細は設定ファイルを参照の事。

Opengateは、最初の認証サーバが返答しない時、次のサーバへ問い合わせる設定ができる。詳細は設定ファイルを参照の事。

注意:不要の場合もIPv6関連の設定を削除しないこと。IPv6アドレスでのアクセスは、IPv6に対応したFQDNが設定されたときに実 行される。

back top

G.4 ipfwの設定

Opengateの動作のために適切にファイアウォールのルールを記述しなければならない。

IPv4/IPv6の両者をipfwシステムで制御する。そのファイアウォールのルール設定のスクリプト例を、 "/etc/opengate/rc.firewall.sample"に用意している。

これを"/etc/opengate/rc.firewall"にコピーして、IPアドレス等を修正する。IPv6を使わない場合、 IPv6アドレスにはlocalhost(*net6="0", *ip6="::1")を設定する。

# cd /etc/opengate
# cp rc.firewall.sample rc.firewall
# vi rc.firewall

/erc/rc.conf内のファイアウォール設定を以下のように変更する。この設定後は、ファイアウォールが原則閉鎖になるので注意する。

firewall_enable="YES"
firewall_script="/etc/opengate/rc.firewall"

実際にOpengateを導入する際には、ipfwの動作を熟知した上、各種ネットワークに適したファイアウォールを設置することが望まし い。

Opengateは、認証を通過した端末に対して、許可ルール(番号:10000-40000)を追加/削除する。また、最初から優先順位の 低い位置(番号:60000)に、フォワードルールが設定されている。よって、許可端末のパケットはゲートウェイを通過し、それ以外の端末の Webアクセスでは認証ページが表示される。

/etc/opengateには、もう一つipfwctrl.pl.sampleがある。これはipfw制御のperlスクリプトであるが defaultでは使用しない。

back top

G.5 syslogの設定

SYSLOGによるログ記録を有効にするために、/etc/syslog.confに以下の設定を行う。

local1.* /var/log/opengate.log
        ↑ ここはTABで区切ること。

設定と対応したログファイルを作る。このファイルは利用とともに大きくなるので適切なログ更新を設定する。

# touch /var/log/opengate.log
back top

G.6 動作確認

設定を生かすためにリブートを行い、下流側ネットワークにPCをつないで、上流側のWebサイトをアクセスする。適切に動作しない場合、まずは、 doc/progflow.html, doc/protocol.txtを見て、動作の関連を理解するとともに、ログファイル(Opengate, httpd, システムなど)を参照して欲しい。詳細なログを出すには、opengatesrv.conf内の<Debug>を2に設定する。 また、関連ソフトウェアが独立で動作するかを確かめて欲しい。また、エラーチェックドキュメントerrcheck.html、質問回答 qa.html、Web上の recentqa.htmlも参考になるだろう。

back top

G.7 ページの修正

表示ページの内容を変更するときには、HTMLドキュメントディレクトリ中の該当HTMLファイルを修正する。これらのファイルは CGIを経由してブラウザに送られる。なお、httpkeep.html内のURLには相対パスは使えない。フルパスで指定することが必要で ある。%%XXX%%のような記述は変数であり、CGIにおいて適切な値に置き換えられる。

back top

G.8 SQLite3の設定

Opengateはセッション情報を保持するためにSQLite3データベースを利用する。データベースファイルの位置は、 opengatesrv.conf中の、<SqliteDb>で指定する。 default値から、より適切なディレクトリ内に変えることが望ましい。なお、そのディレクトリには、下記の例のようにWWWからの書き込 み許可を与える必要がある。

Example:
-- opengatesrv.conf --
<SqliteDb>/home/sqlitedb/opengate.db</SqliteDb>
-- shell commands --
# mkdir /home/sqlitedb
# chown www /home/sqlitedb

データベースファイルおよびテーブルの作成は自動的に行われる。

接続のたびにファイル容量が徐々に増加するため、cron(もしくは手作業)でファイル圧縮(もしくは削除)を定期的に行う必要がある。以下 は閉鎖から3日以上経過したレコードを削除するスクリプトの例である。

#!/bin/sh
echo "delete from session where closeTime < datetime('now','localtime','-3days');" | sqlite3 /tmp/opengate.db
exit 0
back top

H MRTGのインストール(Optional(任意))

back top

H.1 MRTGのインストール

このインストールは任意である。Opengate の利用状況を監視するために、MRTGを用いることが可能である。必要になってからインストールすること。利用状況の監視を行なわない場合 は、MRTGのインストールは不要である。

MRTG(Multi Router Traffic Grapher)とは、本来ネットワークの負荷を監視するツールである。 SNMPエージェントよりトラフィックの値を取得し、グラフィックイメージを含むHTMLページを生成する。 詳細

MRTGを用いて、Opengateの利用状況を監視するにあたっては、Opengateを導入したゲートウェイにおいて MRTGをインストールしても構わないが、監視用の別のサーバにインストールしても構わない。また、 Opengateを分散配置するように設計されているため、複数のOpengateを管理するにあたっては監視用のサーバにおいてMRTGを インストールすることを推奨する。

以下に、MRTGをportsを用いてインストールする手順を示す。

# cd /usr/ports/net-mgmt/mrtg/
# make clean
# make install clean ; rehash
back top

H.2 MRTGの設定

MRTGのインストールが完了すると、/usr/local/etc/mrtg/以下に設定ファイルが用意されている。同ディレクトリに、 opengate.cfgとして新たに設定ファイルを用意する。

##################################################
# opengate user counter

WorkDir: /usr/home/user/public_html/mrtg/opengate/
Language: euc-jp

##### オプション
# growright: X軸の原点を左に integer: 整数表示 info: 3,4番目の出力の非表示
# gauge: 現在の値=入力値-前回の入力値をしない nopercent: パーセント非表示
Options[^]: growright,gauge,nopercent,integer

Target[opengate]:`/usr/home/user/bin/input.sh`
Title[opengate]: Opengate user counter

PageTop[opengate]: <h1>Opengate user counter</h1>
<p>Opengate12 を利用している人数を表示しています。</p>

# 値の上限
MaxBytes[opengate]: 200
# 各グラフにおいて、グラフの上限を値の最大値でなく値の上限にする
#Unscaled[opengate]: ymwd

# グラフのY軸につくタイトル
YLegend[opengate]: Opengate User
# 値の単位
ShortLegend[opengate]: 人
# 値のタイトル LegendI: 1番目 LegendO: 2番目
LegendI[opengate]: IPv6 Users
LegendO[opengate]: Total Users

WorkDirに指定したディレクトリを作成する。同ディレクトリに、MRTGが各種HTMLファイルとグラフィックイメージを作成する。

Target[opengate]には、MRTGにデータを渡すためのプログラムを設置する。以下に詳細を説明する。

back top
H.2.1 Opengateサーバで監視する場合

以下にOpengateを導入したゲートウェイにおいて利用状況を監視する場合のシェルスクリプトを記す。

#!/bin/sh

#######################################
##
## show opengate status for MRTG
##
## 1 line : IPv6 Users
## 2 line : Total Users
## 3 line : uptime
## 4 line : comment for data
##
#######################################

LANG=C
COLUMNS=256

export LANG
export COLUMNS

### IPv6 prefix
prefix="2001:db8:5:6:7:"

###opengateprocessname
process="opengatesrv.cgi"

###tmp file name
tmp_all="/tmp/og_count_all.tmp"
tmp_6="/tmp/og_count_6.tmp"

######################################################
ps ax | grep $process > $tmp_all
COUNT = `wc-l $tmp_all | awk '{print $1}'`
grep $prefix $tmp_all > $tmp_6
COUNT6=`wc -l $tmp_6 | awk '{print $1}'`
UPTIME=`uptime | awk '{print $3$4}' | sed -e "s/,//g"`

rm $tmp_all
rm $tmp_6

echo "$COUNT6"
echo "$COUNT"
echo "$UPTIME"
echo "Opengate User Counter"

さらに、このシェルスクリプトを単独で実行し、以下のようなデータが取得できていることを確認する。

5
48
10days
Opengate User Counter
back top
H.2.2 外部サーバで監視する場合

以下に外部サーバにおいて利用状況を監視する場合のシェルスクリプトを示す。

#!/bin/sh

#######################################
##
## input data for MRTG
##
## 1 line : IPv6 Users
## 2 line : Total Users
## 3 line : uptime
## 4 line : comment for data
##
#######################################

# tmp file name
file="/tmp/opengate.tmp"

# URL of output.sh at opengate
url="http://opengate.saga-u.ac.jp/cgi-bin/output.sh"

fetch -o $file $url &> /dev/null

more $file

さらに、監視するOpengateサーバにおいて、CGIが実行可能なディレクトリに次のようなシェルスクリプトを用意する。これを、上記の シェルスクリプトの"url"に指定する。

#!/bin/sh

#######################################
##
## show opengate status for MRTG
##
## 1 line : IPv6 Users
## 2 line : Total Users
## 3 line : uptime
## 4 line : comment for data
##
#######################################

LANG=C
COLUMNS=256

export LANG
export COLUMNS

### IPv6 prefix
prefix="2001:db8:5:6:7:"

###opengate process name
process="opengatesrv.cgi"

###tmp file name
tmp_all="/tmp/og_count_all.tmp"
tmp_6="/tmp/og_count_6.tmp"

######################################################

ps ax | grep $process > $tmp_all
COUNT =`wc-l $tmp_all | awk '{print $1}'`
grep $prefix $tmp_all > $tmp_6
COUNT6=`wc -l $tmp_6 | awk '{print $1}'`
UPTIME=`uptime | awk '{print $3$4}' | sed -e "s/,//g"`
rm $tmp_all
rm $tmp_6

echo "Content-type: text/plain; charset=iso-8859-1"
echo

echo "$COUNT6"
echo "$COUNT"
echo "$UPTIME"
echo "Opengate User Counter"

Opengateサーバに、以上のシェルスクリプトを用意した後に、監視用の外部サーバにおいて、 input.shを単独で実行した際に、以下のようなデータが取得できていることを確認する。

5
48
10days
Opengate User Counter
back top

H.3 MRTGの起動確認

以上の設定が完了した後に、mrtgを実行することが可能か確認する。

# /usr/local/bin/mrtg /usr/local/etc/mrtg/opengate.cfg

以上を実行すると、1回目と2回目は様々なWARNINGが出力される。

mrtgを複数回実行し後に、WorkDirに指定したディレクトリに以下のファイルが生成されていれば成功である。

> ls -l
-rw-r--r-- 1 root wheel 538 12 14 04:40 mrtg-l.png
-rw-r--r-- 1 root wheel 414 12 14 04:40 mrtg-m.png
-rw-r--r-- 1 root wheel 1759 12 14 04:40 mrtg-r.png
-rw-r--r-- 1 root wheel 2941 12 20 15:15 opengate-day.png
-rw-r--r-- 1 root wheel 2146 12 20 14:35 opengate-month.png
-rw-r--r-- 1 root wheel 2867 12 20 14:55 opengate-week.png
-rw-r--r-- 1 root wheel 1897 12 20 05:00 opengate-year.png
-rw-r--r-- 1 root wheel 5961 12 20 15:15 opengate.html
-rw-r--r-- 1 root wheel 48786 12 20 15:15 opengate.log
-rw-r--r-- 1 root wheel 48784 12 20 15:10 opengate.old
back top

H.4 crontabへの登録

以上の設定が完了したのちに、mrtgをcrontabによって定期的に実行する。

/etc/crontabに次の行を追加する。

*/5 * * * * root /usr/local/bin/mrtg /usr/local/etc/mrtg/opengate.cfg

外部サーバにおいて、複数のOpengateを管理する場合は、設定ファイルを新たに作成する過程から行なう。

back top

I. rulechkのインストール(Optional)

このインストールは任意である。Opengateのプロセスが異常終了したとき、極めて稀にではあるが、ファイアウォールルールが消されずに 残ることがある。そのような状況に対応するスクリプトを、tools/rulechkに用意した。OpengateVer.1.3.1以降の フォーマットにのみ対応する。このツールは、psコマンドから得られるOpengateプロセス一覧と、ファイアウォールから得られる許可 ルール一覧を比較して、余分なルールを削除するスクリプトである。コンソールから実行するか、もしくは上記と同様にcron実行する。

back top