Last Updated on 2018年6月13日 by かんりにん
[pukiwiki]
#topicpath
#contents
ポート指定で別の外部ホストへサービスを転送できるツール。
受付ホストと転送先ホストをIPアドレスで指定するところがポイント。
URLをそのままに、ホストだけ変更するような場合に有効。
【本家サイト】
http://www.boutell.com/rinetd/
【ダウンロード元】
-ソース
本家サイトから
http://www.boutell.com/rinetd/http/rinetd.tar.gz
-RPM
RHEL4版(ソースは共通なのでRHEL3でもインストール可能)
initスクリプトやlogrotateスクリプト、コンフィグファイルも含まれ
一通りの環境がセットアップできるので、こちらがお奨め。
ftp://sea-mew.jp/rpms/el4/i386/rinetd-0.62-5.RHEL4.i386.rpm
【参考】
Linuxサーバhacks
【検証環境】
テスト環境:192.168.0.12(eth0)、192.168.1.13(eth1)
転送先環境:192.168.100.212
**1)インストール [#hb40db37]
***1-1)ソース版 [#xd640004]
+ダウンロードと展開
# wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
# tar -zxvf rinetd.tar.gz
+Makefileの修正
デフォルトのMakefileではmanページのコピー先が異なるため修正。
# cd rinetd
# cp -p Makefile Makefile.org
# vi Makefile
[変更箇所]
8c8
< install -m 644 rinetd.8 /usr/man/man8 — > install -m 644 rinetd.8 /usr/share/man/man8
+インストール
# make
# make install
インストールされるのは実行ファイルとmanページ。
/usr/sbinにバイナリが、/usr/shareにmanページがコピーされる。
***1-2)RPM版 [#vd2fb2f9]
-インストール
# cd /usr/src/redhat/RPMS/i386/
# wget ftp://sea-mew.jp/rpms/el4/i386/rinetd-0.62-5.RHEL4.i386.rpm
# rpm -ivh rinetd-0.62-5.RHEL4.i386.rpm
Preparing… ########################################### [100%]
1:rinetd ########################################### [100%]
#
-構成ファイル
インストールされるファイルは以下のとおり。
/etc/logrotate.d/rinetd
/etc/rc.d/init.d/rinetd
/etc/rinetd.conf
/usr/sbin/rinetd
/usr/share/doc/rinetd-0.62
/usr/share/doc/rinetd-0.62/CHANGES
/usr/share/doc/rinetd-0.62/README
/usr/share/doc/rinetd-0.62/index.html
/usr/share/man/man8/rinetd.8.gz
**2)セットアップ [#f01951c5]
設定ファイルは/etc/rinetd.confとなるが
ソースではデフォルトでは用意されていない。
以下、RPMでの環境をベースに設定。
-設定
# cd /etc/
# vi rinetd.conf
-[設定内容]
書式は
[宛先IP] [宛先ポート] [転送先IP] [転送先ポート]
0.0.0.0 80 192.168.100.212 80
-ログファイルの設定
デフォルトは/var/log/rinetd.logとなる。
ここをコメントアウト。
logfile /var/log/rinetd.log
-ログ出力形式の設定
デフォルトではタブ区切りの独自のログフォーマットだが
以下の設定を追加すると、apacheのアクセスログと同じ形式のログとなる。
logcommon
**3)動作確認 [#leb03ec0]
***3-1)デーモン起動 [#jaeeb581]
RPMではinitスクリプトが用意されるので
こちらから起動。
# /etc/init.d/rinetd start
rinetd を起動中: [ OK ]
#
同時にログファイルも生成される。
# ll /var/log/rinetd.log
-rw-r–r– 1 root root 0 3月 14 20:52 /var/log/rinetd.log
***3-2)動作確認 [#g220a164]
ためしにIPアドレス指定でブラウザからログインし、転送が実行されることを試す。
-接続元
192.168.0.2(クライアントPC)
↓
-接続先
http://192.168.0.12/
↓
-転送先
http://192.168.100.212/
但しブラウザのアドレスバーのURLは変更されず、かつ転送先のサイトでリンク先へ遷移しても
最初にリクエストしたURLが保持されたままページが遷移される。
今回はIPアドレスでテストしたが、サーバのIP変更などでURLの変更が好ましくない場合に有効。
***3-3)ログ出力形式 [#k4f44bfb]
-デフォルト
–書式
[日時] [リクエスト元] [接続先IP] [ポート] [転送先IP] [転送先ポート] [受信bytes] [転送bytes] [動作結果]
–出力結果
14/Mar/2007:21:05:53 192.168.0.2 192.168.0.12 80 192.168.100.212 80 10060 5769 done-local-closed
14/Mar/2007:21:05:53 192.168.0.2 192.168.0.12 80 192.168.100.212 80 9665 5534 done-local-closed
-common形式(logcommonオプション有効)
apacheのアクセスログと同じ書式。
–出力結果
192.168.0.2 – – [14/Mar/2007:21:08:58 +0900] “GET /rinetd-services/192.168.0.12/80/192.168.100.212/80/done-local-closed HTTP/1.0” 200 34182 – – – 10339
192.168.0.2 – – [14/Mar/2007:21:08:58 +0900] “GET /rinetd-services/192.168.0.12/80/192.168.100.212/80/done-local-closed HTTP/1.0” 200 4387 – – – 7671
**4)そのほかの設定 [#p4d0bace]
***4-1)chkconfig [#u938f002]
chkconfig –addでそのまま自動起動の設定を追加することが可能。
# chkconfig –add rinetd
# chkconfig –level 345 rinetd on
***4-2)logrotate [#f45fe3ce]
RPMではインストールと同時に
/etc/logrotate.dにスクリプトが配置されるので
そのままローテートまで可能。
# cat /etc/logrotate.d/rinetd
/var/log/rinetd.log {
missingok
notifempty
delaycompress
postrotate
/sbin/service rinetd restart 2> /dev/null > /dev/null || true
endscript
}
**5)注意点 [#aa826880]
***サービス起動時のポートの競合 [#le54cf9b]
rinetd.confに追加したIPとポートは、実行時にrinetdデーモンがポートを使用(待機)するため
元のサービスを実行するとポートが競合し、起動できなくなる(当たり前だが)。
apacheで複数のグローバルIPをバーチャルホストで使用している場合は
転送するIPアドレスのバーチャルホスト設定を無効化してからapacheとrinetdをそれぞれ起動すること。
ちなみに以下は今回検証した192.168.0.12で
eth1(192.168.1.13)をapacheで通常通りサービスを提供し
eth0(192.168.0.12)をrinetdで転送した際のlsofの結果。
# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
httpd 3414 root 3u IPv4 2989054 TCP 192.168.1.13:http (LISTEN)
httpd 3417 apache 3u IPv4 2989054 TCP 192.168.1.13:http (LISTEN)
httpd 3418 apache 3u IPv4 2989054 TCP 192.168.1.13:http (LISTEN)
httpd 3419 apache 3u IPv4 2989054 TCP 192.168.1.13:http (LISTEN)
httpd 3420 apache 3u IPv4 2989054 TCP 192.168.1.13:http (LISTEN)
httpd 3421 apache 3u IPv4 2989054 TCP 192.168.1.13:http (LISTEN)
httpd 3422 apache 3u IPv4 2989054 TCP 192.168.1.13:http (LISTEN)
httpd 3423 apache 3u IPv4 2989054 TCP 192.168.1.13:http (LISTEN)
httpd 3424 apache 3u IPv4 2989054 TCP 192.168.1.13:http (LISTEN)
rinetd 3586 root 4u IPv4 2989529 TCP 192.168.0.12:http (LISTEN)
#
[/pukiwiki]