#author("2025-04-15T10:11:53+00:00","default:iseki","iseki")
#author("2025-04-15T10:12:07+00:00","default:iseki","iseki")
* sl_relay [#k8b98ddc]
[[English is Here>sl_relay (E)]]~

** 概要 [#uf81341b]
-''sl_relay'' は,大学などのファイアウォールが存在する環境で,プライベートIPアドレスを割り振られたPCから [[Second Life]]に接続するための''Packet Relay Server'' (中継サーバ) です.
- ''sl_relay'' は [[Second Life]]の SIMと Viewer間の通信(UDP, HTTP/HTTPS)を中継します.
- ただ中継するだけではなく,パケットの内部を監視し,別のSIMが指定された場合は,そのSIM用の中継プロセスを新たに起動し,このプロセスを経由するようパケットの内容(アドレスとポート番号)を書き換えます.
- キャッシュサーバ(''[[sl_cache]]'') と連携し,テクスチャデータをキャッシュすることにより,ネットワークの負荷を軽減できます.
- キャッシュサーバ(''[[sl_cache]]'') と連携させる場合は,矛盾が発生しないようにUDPパケットのシーケンス番号も書き換えます.
- 情報サーバ(''[[sl_info]]'') と連携し,特定のUDPパケットを破棄することにより,SIMへのアクセス制限をかけることが可能.この場合,Viewer からはパケロスを起こしているように見えます.

- ''sl_relay'' は ''[[sl_proxy]]'' の一部.
- これらのプログラムは元々は大学内のネットワークなどの環境から,セカンドライフを快適に使用するために作られました.
- 最新版は ''v1.10.0'' ('11 9/29)


*** 機能の概要 [#b28df040]
+適当な Proxy用マシンがあれば,ファイアウォール内でもセカンドライフを実行可能. 
+外向けのポート番号を指定可能.これはファイアウォールに穴を開ける場合に有益です.(通常,外向き透過で返答も透過のファイアウォールの場合は,外側に対して穴を開ける必要はない)
+クライアントに対するアクセス制御が可能.デフォルトの制御ファイルは /usr/local/etc/sl_proxy/hosts_relay.allow
+SSLフルサポート.(クライアント<->プロキシサーバ間はデフォルトではSSL未使用)
+キャッシュサーバ(''[[sl_cache]]'') と連携してテクスチャデータのキャッシュが可能.
+情報サーバ(''[[sl_info]]'') と連携してホワイトリストによるSIMへのアクセス制限を行うことが可能.
+[[OpenSim]]でも使用可能.([[OpenSim]]自体が開発途中のため,現在はまだ暫定機能)
+独自のWEBプロキシ機能を内臓.

*** バグまたは改善が必要な箇所 [#dc53166d]
+IMやチャットで同じメッセージが複数回表示されることがあるという報告を受けています.(原因不明)
+負荷テストが十分ではありません.

** 詳細説明 [#t9f50cf9]
+ [[ファイアウォール越え>./ファイアウォール]] 
+ [[キャッシュサーバとの連携>./sl_cahe連携]] 
+ [[情報サーバとの連携>./sl_info連携]] 
+ [[HTTPS通信>./HTTPS通信]]
+ [[Webプロキシ機能>./Webプロキシ機能]] 
+ [[サーバが2つ以上のネットワークインターフェイスを持つ場合>/sl_proxy/複数のネットワークインターフェイス]] 
+ [[Viewerバージョンの書き換え機能>./Viewerバージョンの書き換え機能]]
+ [[ログとデバッグモード>./ログとデバッグモード]]
+ [[セキュリティ>./セキュリティ]]

** 設定ファイル [#o72aa0e5]
-設定ファイルのデフォルトは ''/usr/local/etc/sl_proxy/sl_relay.conf''.
-''sl_relay'' の ''-f'' オプションを指定すれば他のファイルを指定することも可能.
-設定ファイルは,''sl_relay'' が実効ユーザにスイッチする前に読み込むので,''起動ユーザ''が読める必要がある.
-設定ファイルでは一行に一項目の設定を記述する.空行,#で始まる行は読み込まれない.


*** 設定項目 [#kac9d439]
**** SIMサーバとの通信ポート (ファイアウォールの設定用)~ [#n5bafe14]
ファイアウォールが,内部から外向への通信を完全通過で,かつ,内部からの通信への返答に対しても完全通過の場合は,ファイアウォールへの追加設定は必要はない.
-[[MinUdpExPort>./MinUdpExPort]]
-[[MaxUdpExPort>./MaxUdpExPort]]
-[[MinTcpExPort>./MinTcpExPort]]
-[[MaxTcpExPort>./MaxTcpExPort]]

**** Viewerとの通信ポート (他のサービスと被らなければ,特に変更する必要はない) [#p647e9a9]
-[[MinUdpImPort>./MinUdpImPort]]
-[[MaxUdpImPort>./MaxUdpImPort]]
-[[MinTcpImPort>./MinTcpImPort]]
-[[MaxTcpImPort>./MaxTcpImPort]]

**** 中継プロセスコントローラの制御ポート (他のサービスと被らなければ,特に変更する必要はない) [#s59d209a]
-[[MinControlPort>./MinControlPort]]
-[[MaxControlPort>./MaxControlPort]]

**** HTTPS [#b9a05b5f]
-[[CERT_PEM_File>./CERT_PEM_File]]
-[[SKEY_PEM_File>./SKEY_PEM_File]]
-[[CA_PEM_File>./CA_PEM_File]]

**** アクセス制御 [#m38c0b89]
-[[Hosts_Allow_File>/sl_proxy/Hosts_Allow_File]]
-[[ExternalWebProxy>./ExternalWebProxy]]
-[[Proxy_Allow_File>./Proxy_Allow_File]]

**** その他 [#t1482f10]
-[[Temp_File_Dir>/sl_proxy/Temp_File_Dir]]
-[[MaxIdleTime>/sl_proxy/MaxIdleTime]]


** 起動オプション [#sc218ae6]

 sl_relay  [-s server_name[:port]] [-p port] [-f config_file] [-u user_name] [-i interface_address]
           [-pid pid_file] [-l [log_file]] [-v syslog_level]
           [-cs [cache_server:port]] [-cg] [-cp]
           [-is [info_server:port]] [-wf]
           [-vs [voice_relay_server:port]]
           [-as] [-aca] [-ano]
           [-xp [web_proxy_server:porti]] [-ip [port]] [-ipx [port]] [-mm]
           [-ver version]
           [-d] [-x] [-xt] [-xu] [-xuf]
           [--version] [--help] [-h]
 
 -s   : セカンドライフのログインサーバを指定.デフォルトは login.agni.lindenlab.com:443
 -p   : Viewer との接続口になるポート番号.デフォルトは 8100 (OpenSimと被るので,8000から変更)
 -f   : 設定ファイルの指定.デフォルトは /usr/local/etc/sl_proxy/sl_relay.conf
 -u   : 実効ユーザ.セキュリティ維持のため,rootユーザ以外の権限で動かす場合に指定する.
 -i   : サーバが二つ以上のネットワークインターフェイスを持つ場合に,Viewer側のインターフェイスのIPアドレスを指定する.
 
 -pid : pid ファイル./etc/init.d/sl_relay stop などで止めたい場合に,pidを書き込むファイル.-f から変更.
 -l   : ログファイルを指定する.デフォルトは /var/sl_proxy/sl_relay.log
 -v   : syslog のレベル.デフォルトは LOG_INFO (7)
                                                      
 -cs  : キャッシュサーバの指定.続けてサーバ名を記述し,さらの :の後にポート番号を指定する.
        サーバ名を省略した場合は localhost:8200 になる.
 -cg  : キャッシュサーバでデータの受信のみを行う.
 -cp  : キャッシュサーバでデータの送信(キャッシュへの保存)のみを行う.
                          
 -is  : 情報サーバの指定.サーバ名を省略した場合のデフォルトは localhost:8086
 -wf  : sl_info と連携して,ホワイトリストによる SIMへのアクセス制限を行う.
 
 -vs  : ボイスチャット中継サーバの指定.サーバ名を省略した場合のデフォルトは localhost:8088
                                              
 -as  : Viewer <--> Relay Server間のTCP通信を HTTPS で行う.秘密鍵ファイル,サーバ証明書,認証局証明書が必要
 -aca : Second Life(SIM)サーバの認証を行う.Second Life(SIM) サーバ認証局の自己証明書が必要.
 -ano : サーバと HTTPS(SSL)通信をしない.OpenSIM用.Second Lifeに繋ぐ場合は指定しない.(実験的オプション)
                                              
 -xp  : 外部WEBプロキシプロキシサーバからの接続を許可する.
 -ip  : 内部WEBプロキシプロキシサーバを使用する.ポート番号指定可能
 -ipx : 内部WEBプロキシプロキシサーバを制限モードで使用する.ポート番号指定可能
 -mm  : MusicURL, MediaURL を処理する.もし可能なら WEBプロキシを使用する方がお勧め.
                                             
 -ver : Viewerのバージョン情報を書き換える.これは新しいViewerを直ぐにインストールする事がどうしても出来ない場合にのみ,
        一時的に使用する.これを永続的に使用することは危険であり,絶対に行ってはいけない.
                               
 -d   : デバッグ情報を出力             
 -x   : TCP(HTTP/HTTPS)パケットを作業ディレクトリに保存し,UDPパケットのヘッダ情報を表示する (-xt -xu の同時設定と同等)
 -xt  : TCP(HTTP/HTTPS)パケットを作業ディレクトリに保存する
 -xu  : UDPパケットのヘッダ情報を表示する
 -xuf : UDPパケットをフルダンプする.サーバの動作が遅くなるので注意.
                                           
 --version  : Version 情報を表示する.
 --help, -h : ヘルプを表示する.

** プロセス相関 [#f13647f7]

*** Relationship between Processes [#ece449c6]
#ref(sl_relay.png,,85%)
*** Transfromation of UDP and HTTP/HTTPS Packet [#cfd53c48]
#ref(sl_relay2.png)
#ref(sl_relay2.png,,85%)
#br

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 ページ一覧 検索 最終更新   ヘルプ   最終更新のRSS