rinetd (internet redirection server) のインストール

サーバーにやってきた TCP セッションをそのまま他のサーバーやポートにリダイレクトする必要がでてきた。

xinetd でも出来るみたいだが、うちでは xinetd がうまく動かなかったので rinetd を使ってみることにした。そのときのメモを残す。

FTP のリダイレクトは出来ないので注意 (本当は FTP のリダイレクトやりたかった)。


環境

OS VineLinux 2.6

インストール

配布元:http://www.boutell.com/rinetd/

配布元のページから最新の rinetd.tar.gz を入手し解凍する。

# tar zxvf rinetd.tar.gz

Makefile を VineLinux 用に書き換える。最終行のマニュアルのインストール場所がデフォルトと異なっていた。

CFLAGS=-DLINUX -g

rinetd: rinetd.o match.o
        gcc rinetd.o match.o -o rinetd

install: rinetd
        install -m 700 rinetd /usr/sbin
        install -m 644 rinetd.8 /usr/share/man/man8

make してインストールする。インストールのときだけは root 権限が必要になる。

# make
# make install

設定

/etc 以下に rinetd.conf というファイルを作りそこに設定を書く。以下の例では 25 番ポートへの接続を 192.168.0.100 の 25 番ポートへリダイレクトしている。

-------- /etc/rinetd.conf --------

0.0.0.0 25 192.168.0.100 25
logfile /var/log/rinetdlog

1 行目はリダイレクトの設定をしている。以下の 4 つの情報を書く。

バインドするアドレス  バインドするポート  接続するアドレス  接続するポート

バインドするアドレスを 0.0.0.0 にするとサーバへのすべてのコネクションをリダイレクトする設定になる。

2 行目はログファイルの指定をしている。デフォルトではログをファイルに残さないので、ログが欲しいときにはファイルを指定する必要がある。

allow 206.125.69.*

上記のような形で allow や deny のルールも指定できるらしい。


/etc/rc.d/init.d/rinetd というファイルを作り以下の内容を書き込む (inet のマネなのでどこかおかしいかも)。

-------- /etc/rc.d/init.d/rinted --------

#! /bin/sh
#
# rinet         internet ``redirection server''
#
# chkconfig: 345 50 50
# URL: http://www.boutell.com/rinetd/
# processname: rinetd
# pidfile: /var/run/rinetd.pid
# config: /etc/sysconfig/network
# config: /etc/rinetd.conf

# Source function library.
. /etc/rc.d/init.d/functions

# Get config.
. /etc/sysconfig/network

# Check that networking is up.
if [ ${NETWORKING} = "no" ]
then
        exit 0
fi

[ -f /usr/sbin/rinetd ] || exit 0

RETVAL=0

# See how we were called.
case "$1" in
  start)
        echo -n "Starting RINETD services: "
        daemon rinetd
        RETVAL=$?

        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/rinet
        ;;
stop)
        echo -n "Stopping RINETD services: "
        killproc rinetd
        RETVAL=$?

        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/rinet
        ;;
  status)
        status rinetd
        RETVAL=$?
        ;;
  restart)
        $0 stop
        $0 start
        RETVAL=$?
        ;;
  reload)
        killall -HUP rinetd
        RETVAL=$?
        ;;
  *)
        echo "Usage: rinet {start|stop|status|restart|reload}"
        exit 1
esac

exit $REVAL

起動と終了

起動する場合

/etc/rc.d/init.d/rinetd start

終了する場合

/etc/rc.d/init.d/rinetd stop

自動起動の設定

OS 起動時に自動的に起動するように設定する。

root になって chkconfig で起動の設定をする。

% chkconfig --level 345 rinetd on

Valid XHTML 1.0 Strict Valid XHTML 1.0 Strict

戻る