ゲートウェイマシンとして、NICを2枚以上持ち、FreeBSDをインストールすることが可能なものを用意する。
本文書の説明では、下に示す構成のシステムを仮定している。ここで端末接続のネットワークを下流側と呼び、利用するWebサーバー等が存在するネットワークを上流側と呼ぶことにする。
上流側ネット:192.168.0.0/24, 2001:1:2:3/64 ゲートウェイ上流側インターフェース:fxp1, 192.168.0.124, 2001:1:2:3::4 ゲートウェイ下流側インターフェース:fxp0, 192.168.1.1, 2001:5:6:7::1 下流側ネット:192.168.1.0/24, 2001:5:6:7/64 |
Opengateは、IPv4とIPv6の両アドレスを認識して、それぞれに対するファイアウォールを制御するが、IPv4だけを設定したFreeBSDシステムであっても問題なく利用できる。
Opengateのインストール手順を以下に示す。ただし、※は必須項目を示し、それ以外の手順は必要に応じて行なう。
Opengateの情報を下記のページにまとめている。
http://www.cc.saga-u.ac.jp/opengate/ |
FreeBSD4.x以降のどれかをインストールする。FreeBSD6.1以降が望ましい。後にカーネルを再構築する必要があるので、インストールするDistributionsを選択する際に、Developer(Full sources,binaries and doc)もしくはAllを選択しなければならない。
FreeBSDをインストールした後に、ゲートウェイとしての機能を有効にするために、/etc/rc.confに次の設定を記述する。もしくは、FreeBSDをインストールする際に、ゲートウェイとしての機能を有効にするか否かを問われるので、ここでゲートウェイの機能を有効にしても構わない。
gateway_enable="YES" |
ファイアウォール(ipfwおよびip6fw)を利用するためには、FreeBSDのカーネルを再構築する必要がある。FreeBSDインストール時にカーネル等の全てのソースをインストールしていなければならない。
以下のディレクトリにおいて、Opengate用のカーネルオプションを作成する。
# cd /usr/src/sys/i386/conf # cp GENERIC MYKERNEL |
コピーしたカーネルオプションに、次のオプションを追加する。
FreeBSD6.0以前
options IPDIVERT options IPFIREWALL options IPFIREWALL_FORWARD options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=100 options IPV6FIREWALL options IPV6FIREWALL_VERBOSE options IPV6FIREWALL_VERBOSE_LIMIT=100 options IPSEC options IPSEC_ESP options TCP_DROP_SYNFIN |
FreeBSD6.1以降
options IPDIVERT options IPFIREWALL options IPFIREWALL_FORWARD options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=100 options IPSEC device crypto |
これらのオプションを追加した後に、カーネルのコンパイルとインストールを行なう。
# config MYKERNEL # cd ../compile/MYKERNEL # make depend # make # make install |
"make depend"を実行する前に、"make clean"が要求される場合もあるので、注意する。
再構築したカーネルによって、ファイアウォールを有効にするために/etc/rc.confに以下のオプションを記述する。
FreeBSD6.0以前
firewall_enable="YES" firewall_script="/etc/rc.firewall" firewall_type="open" ipv6_firewall_enable="YES" ipv6_firewall_script="/etc/rc.firewall6" ipv6_firewall_type="open" natd_enable="YES" natd_interface="fxp1" |
FreeBSD6.1以降
firewall_enable="YES" firewall_script="/etc/rc.firewall" firewall_type="open" natd_enable="YES" natd_interface="fxp1" |
ここでは、この後のチェックにおいて不可解な問題を起こさないように、ひとまず全ての通信を許可する設定とする。さらにNATが必要である場合は、natdを有効にし、アドレス変換を行うインタフェース(上流側)のIDを指定する。
下流側ネットワークにPCをつなぎ、IPv4におけるゲートウェイ機能を満たしていることを確認する。
まだDHCPは設定されていないので、PCのネットワークはマニュアルで設定しなければならない。
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:5:6:7" ipv6_ifconfig_fxp0="2001: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:5:6:7::/64,gif0" |
下流側ネットワークにPCをつなぎ、IPv6が有効であることを確認する。
WindowsPCにおいてIPv6を有効にするには、"ipv6 install"とコマンドを入れる必要があるかもしれない。
IPv6機能を使う場合には、IPv4とIPv6の両アドレスが登録されたDNSが必要である。IPv6機能を使わない場合には、DNSを設定せずにIPアドレスで制御することも可能である。既存のDNSに追加することでも良い。ここでは、BIND9をサーバマシンにインストールする手順を記す。
インストールにはsysinstallコマンドを用いても良い。portsからインストールするには以下のコマンドを使う。
# cd /usr/ports/dns/bind9/ # make clean # make install clean ; rehash |
インストールが完了すると、/etc/namedb(/var/named/etc/namaedb)以下のディレクトリに各種設定ファイルが生成される。
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 |
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ファイルを置くディレクトリは適当に作成する必要がある。
Opengateで管理するドメインについて設定を行う。各ドメインはnamed.confのzoneディレクティブによって管理される。また、BIND9ではviewというディレクティブが実装されており、この子ディレクティブに zoneとして設定することによって、DNS問い合わせ元のIPアドレスやドメインによって返答するzoneを変更することが可能となる。
view "og" { match-clients { 192.168.1.0/24; }; recursion yes; zone "." { type hint; file "named.root"; }; zone "og.saga-u.ac.jp" { type master; file "og.saga-u.ac.jp"; }; zone "0.0.127.IN-ADDR.ARPA" { type master; file "master/localhost.rev"; }; // RFC 3152 zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.\ 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA" { type master; file "master/localhost-v6.rev"; }; // RFC 1886 -- deprecated zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.\ 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.INT" { type master; file "master/localhost-v6.rev"; }; }; |
以上の設定において、"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 AAAA 2001:5:6:7::1 |
以上、全ての設定が完了した後に、起動確認を行う。
# /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サーバは管理が複雑であるため、この他の資料も参考にし、マニュアルを熟読した上で設定することが望ましい。
Opengateを導入するネットワークでは、利用者端末が頻繁に入れ替わることが予測できる。そこで、様々な利用者端末に対して自動的にIPv4アドレスを割り当てることができるDHCPサーバを導入することが望ましい。
以下にisc-dhcp3のインストール手順を記す。"sysinstall"コマンドを用いても良い。
# cd /usr/ports/net/isc-dhcp3-server # make clean # make install clean ; rehash |
インストール作業が完了すると、/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.55.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を記述する。
IPv6機能を使う場合、IPv6をサポートしたApache2が必要である。また、認証を行うことから SSLをサポートすることが望ましい。Apache2は標準でSSLをサポートしているので、mod_ssl を別途インストールする必要はない。
以下に、portsを利用してインストールする手順を以下に記す。インストールは"sysinstall"コマンドを用いても良い。
# cd /usr/ports/www/apache22 # make clean # make install clean ; rehash |
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 []: |
以下に/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の設定を熟知した上で設定することが望ましい。
その他、/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" |
Opengateのパッケージを適当なディレクトリに展開する。
# tar xzvf opengatexxxx.tar.gz |
パッケージには以下のディレクトリが含まれる。
doc:各種文書 conf:設定ファイル、ファイアウォールスクリプト javahtml:クライアントJava Applet、HTMLファイル opengatesrv:サーバCGIプログラム tools: 付加ツール ezxml: XMLパーサ (copyright Aaron Voisine) |
opengatesrv/Makefileを確認する。もし以下のディレクトリが異なっていれば変更する。
HTMLTOP = /usr/local/www/apache22 DOCDIR = /data CGIDIR = /cgi-bin OPENGATEDIR = /opengate CONFIGPATH = /etc/opengate |
# make clean # make install |
設定ファイル/etc/opengate/opengatesrv.conf.sampleが作成されているので、これを/etc/opengate/opengtesrv.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が設定されたときに実行される。
Opengateの動作のために適切にファイアウォールのルールを記述しなければならない。
(FreeBSD6.0以前の場合)
IPv4はipfwで、IPv6はip6fwで制御する。 ipfwとip6fwのファイアウォールのルール設定のスクリプト例を、"/etc/opengate/rc.firewall4.sample"と"/etc/opengate/rc.firewall6.sample"に用意している。
これらを"/etc/opengate/rc.firewall4"と"/etc/opengate/rc.firewall6"にコピーして、IPアドレス等を修正する。
# cd /etc/opengate # cp rc.firewall4.sample rc.firewall4 # cp rc.firewall6.sample rc.firewall6 # vi rc.firewall4 # vi rc.firewall6 |
/erc/rc.conf内のファイアウォール設定を以下のように変更する。この設定後は、ファイアウォールが原則閉鎖になるので注意する。
firewall_enable="YES" firewall_script="/etc/opengate/rc.firewall4" ipv6_firewall_enable="YES" ipv6_firewall_script="/etc/opengate/rc.firewall6" |
さらに、"/etc/opengatesrv.conf"中の<Ip6fwPath>/sbin/ipfw</Ip6fwPath>を<Ip6fwPath>/sbin/ip6fw</Ip6fwPath>に変更する。
(FreeBSD6.1以降の場合)
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の動作を熟知した上、各種ネットワークに適したファイアウォールを設置することが望ましい。
SYSLOGによるログ記録を有効にするために、/etc/syslog.confに以下の設定を行う。
local1.* /var/log/opengate.log ↑ ここはTABで区切ること。 |
設定と対応したログファイルを作る。このファイルは利用とともに大きくなるので適切なログ更新を設定する。
# touch /var/log/opengate.log |
下流側ネットワークにPCをつないで、上流側のWebサイトをアクセスする。適切に動作しない場合、まずは、doc/progflow.html,doc/protocol.txtを見て、動作の関連を理解するとともに、ログファイル(Opengate, httpd, システムなど)を参照して欲しい。詳細なログを出すには、opengatesrv.conf内の<Debug>を2に設定する。また、関連ソフトウェアが独立で動作するかを確かめて欲しい。また、エラーチェックドキュメントerrcheck.html、質問回答qa.html、Web上のrecentqa.htmlも参考になるだろう。
表示ページの内容を変更するときには、HTMLドキュメントディレクトリ中の該当HTMLファイルを修正する。これらのファイルはCGIを経由してブラウザに送られる。なお、httpkeep.html内のURLには相対パスは使えない。フルパスで指定することが必要である。%%XXX%%のような記述は変数であり、CGIにおいて適切な値に置き換えられる。
このインストールは任意である。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 |
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にデータを渡すためのプログラムを設置する。以下に詳細を説明する。
以下に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:2f8:22:801:" ###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 |
以下に外部サーバにおいて利用状況を監視する場合のシェルスクリプトを示す。
#!/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:2f8:22:801:" ###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 |
以上の設定が完了した後に、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 |
以上の設定が完了したのちに、mrtgをcrontabによって定期的に実行する。
/etc/crontabに次の行を追加する。
*/5 * * * * root /usr/local/bin/mrtg /usr/local/etc/mrtg/opengate.cfg |
外部サーバにおいて、複数のOpengateを管理する場合は、設定ファイルを新たに作成する過程から行なう。
このインストールは任意である。Opengateのプロセスが異常終了したとき、極めて稀にではあるが、ファイアウォールルールが消されずに残ることがある。 そのような状況に対応するスクリプトを、tools/rulechkに用意した。OpengateVer.1.3.1以降のフォーマットにのみ対応する。 このツールは、psコマンドから得られるOpengateプロセス一覧と、ファイアウォールから得られる許可ルール一覧を比較して、 余分なルールを削除するスクリプトである。 コンソールから実行するか、もしくは上記と同様にcron実行する。