08
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
>>
<<
--
calendar_bottom
RSS | ATOM | ADMIN

badulog

日々の覚書と雑記
ENTRY TOP
スポンサーサイト

一定期間更新がないため広告を表示しています

スポンサードリンク | - | - | - | - |
ENTRY BOTTOM ENTRY TOP
[SIP] sendonlyのINVITEって
http://itpro.nikkeibp.co.jp/article/COLUMN/20060930/249500/

保留のためかな.
もっと言うと,保留音を流す(送る)ため.
端末自身が保留音を流すときには,inactiveにするらしい.

 もう一つのINVITEメソッドを使った保留は,通常の通話を始めるためのINVITEリクエストとちょっと違っている。具体的には,ボディ部分に格納する音声のデータ形式のパラメータとして,「a=sendonly(センドオンリー)」あるいは「a=inactive(インアクティブ)」という値を追加する。

 これで,保留元から保留先に対して保留音を音声データとして流す(sendonly)か,保留音を流さず保留先の端末がローカルで保留音を作り出すか(inactive)を指示する。
baduizm | おしごと | - | - | - |
ENTRY BOTTOM ENTRY TOP
[SIP] 100rel, PRACK
要は暫定応答の送達確認がPRACKであり,
それをサポートする/必須とすることを示すためのパラメータが100relである.

■目的
SIPの応答には最終(200)と暫定(1xx)とがある.
最終応答は,リクエストの結果を運ぶもので,ACKを返すことにより信頼性を確保している.
暫定応答は,リクエストの処理進捗情報を提供するもので送りっぱなし.
→暫定応答にも信頼性を持たせる.

■方法
暫定応答に対してはPRACKを送る.(100tryingは対象外)
暫定応答はPRACKを期待している場合,PRACKを受けるまでは再送される.
PRACKを受けると再送は止める.

■PRACK
PRACKはACKに似ているが重要な違いがある
・PRACKはBYEと同様にnormalなSIPメッセージであり,
信頼性はhopbyhopに保障される
→★意味がわからない.
例えばBYEだと発端末-サーバ-着端末で発切の場合,
発端末からサーバにBYEなげて200受ける,サーバから着端末でNGったとしても
発端末側は関係ない.(end-endでなくhop-by-hop)
と言っているのかな?
・PRACKはそれ自体の応答を持つ

■サーバ側の動をちょっと詳細に
最初のINVITEのSupportedヘッダに100relがあったら,
UASとしては1xxを信頼性を持って送信できる.(つまりPRACKを期待できる)

最初のINVITEのRequireヘッダに100relがあったら,
UASとしては1xxを信頼性を持って送信しないといけない.(つまりPRACKを期待しないといけない)
UASがそうしたくないなら,Unsupportedヘッダに100relを設定して420(BadExtension)で拒否しないといけない.

baduizm | 用語 | - | - | - |
ENTRY BOTTOM ENTRY TOP
[SIP]ダイアログとトランザクション
■ ダイアログ ( earlyダイアログ、confirmedダイアログ)
・UA間で保持するピアピアの関係
・ダイアログを生成するのは、RFC3261によるとINVITEのみ。
・ダイアログを確立するのは、ダイアログを生成するリクエストに対する応答を返却したとき。
・ダイアログのステートは2種類あって
 (1) earlyダイアログ: 暫定応答で確立したダイアログ
 (2) confirmedダイアログ:最終応答で確立したダイアログ
・一つのダイアログの間はCall-IDは同じ
・Call-ID, To-tag, From-tag の組で一意に識別される

■ トランザクション
・リクエスト〜レスポンス
・Cseqはトランザクションを識別する。
・トランザクションごとにインクリされる。

------------------------------------------------------
(追記ここから)
上記のような、時系列での分け方以外に
ステートフルプロキシを噛んだときを考えると
ua --- proxy --- ua

・ダイアログはua間の関係性
・トランザクションは,ua-proxy, proxy-uaで別モノ

(追記ここまで)
baduizm | 用語 | - | - | - |
ENTRY BOTTOM ENTRY TOP
[SIP] B2BUAとかプロキシとか
RFC3261にいろいろ書いてそう.

■B2BUA(Back-to-Back User Agent)
・論理的なエンティティであり、概念的なもの。
・UASとしてリクエストを受ける機能を保持するとともに、UACとしてレスポンスを返す機能を保持。
・プロキシとは違って、ダイアログの状態を維持するもの。
・confirmedダイアログで送られたリクエストのすべてに関与する必要がある.
・UACとUASが結合されたものなので、その動作に関する明示的な定義は必要とされない


■ ステートフルプロキシ / Stateful Proxy
・論理的なエンティティであり、概念的なもの。
・別名トランザクションステートフルプロキシ。コールステートフルプロキシ(後述)とは異なる。
・リクエストの処理中にクライアントとサーバー間の、トランザクション状態を維持する。
・自ら暫定応答を出せるのもこっち。ステートレスプロキシは出せない。
・rfc3261の「16.2 Stateful Proxy」に詳細あり


■ ステートレスプロキシ / Stateless Proxy
・論理的なエンティティであり、概念的なもの。
・リクエストの処理中にクライアントとサーバー間の、トランザクション状態を維持しない
・受信したリクエストをすべてダウンストリームへ転送し、受信した応答はすべてアップストリームへ転送する。
・つまり何もしない土管。
・同じくrfc3261の16章に詳細あり


■コールステートフル
ini-INVITEからBYEまでのダイアログのステートを維持するプロキシをコールステートフルだという。
上記のステートフルプロキシは、トランザクションに関してステートフル。
コースステートフルとは、ダイアログに関してステートフル。
コールステートフルならステートフルだが,逆は必ずしも真じゃない。


(追記)
B2BUA (Back-to-Back User Agent)

B2BUAは、Back-to-back User Agentの略。
SIPプロキシと同じく、UACからUASの間の中間エンティティの一つだが、
SIPプロトコルを終端する点がSIPプロキシと異なる。
B2BUAはRFCのプロキシサーバに関する動作規定の適用外になる。

B2BUAは、論理的にUASとUACの機能を含む。下図にB2BUAの概念図を示す。
B2BUAという名称は、2つのUAを背中合わせに持つことに由来する。
B2BUAはUACにはUASに見え、UASにはUACに見える。

B2BUAの具体的な例としては、呼処理サーバの一部や、
ネットワークの境界等におかれるSBC(Session Border Controller)がある。

B2BUA の概念が登場した背景としては、SIPプロトコルのP2Pの思想と、3GPP等の電話会社との間での思想の違いを埋めるための折衷的案としての意味合いがあると想像される。P2P(Peer-to-Peer)でのセッション開始のために作られたSIPプロトコルでは、プロキシなどの中間エンティティが、 End-End間でのネゴシエーションに介入することに対しては禁止的であるが、3GPPでの利用を考えるとこれでは実用に耐えなかったのだろう。



+-----------------------------------+
| B2BUA(Back-to-back User Agent) |
|+-------+ +-------+|
||logical| +-----------+ |logical||
UAC-|| UAS |--| Interwork |--| UAC ||-Proxy-UAS
|| | +-----------+ | ||
|+-------+ +-------+|
+-----------------------------------+

ref)
http://sipandvoip.blogspot.com/search/label/SIP%E7%94%A8%E8%AA%9E%E9%9B%86
baduizm | 用語 | - | - | - |
ENTRY BOTTOM ENTRY TOP
[linux] X環境のキーバインド変更
man xmodmap もしくは、ここ

一時的に変更するだけなら、コマンド "xmodmap" を使用する。
X の起動時に反映させるためには、"~/.xmodmaprc" というファイルに設定を書く。
ファイルの名前は何でもよい。コメント行は"!"で始める。

で、my設定は
remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L


で、あとは~/.xsession や ~/.xinitrc の中に
xmodmap $HOME/.Xmodmap

としておけば毎回有効に。

# 自分の.xinitrcとか.xsessionに設定見付からず。。どこに設定したっけ。。


(追記)
見付けた。
[root@localhost xinit]# grep modmap /etc/X11/xinit/xinitrc
usermodmap=$HOME/.Xmodmap
sysmodmap=/etc/X11/Xmodmap
# xkb and xmodmap don't play nice together
if [ -f "$sysmodmap" ]; then
xmodmap "$sysmodmap"
if [ -f "$usermodmap" ]; then
xmodmap "$usermodmap"

baduizm | linux | - | - | - |
ENTRY BOTTOM ENTRY TOP
makewhatisとかmanとか
makewhatisはwhatisデータベースを作る。
whatisデータベースを更新できるようにcronに設定されていたりする。
$ cat /etc/cron.daily/00-makewhatis.cron
#!/bin/bash
(略)
makewhatis -u -w
(略)


-u はデータベースを新しいページの情報で更新する。
-w はmanpath を `man --path` で得られる値にする。
manpathというのはmakewhatisの引数で(↑だと省略されている)
manページのありかだったりする。

man --pathでmanコマンドが引っ張ってくる値は/etc/man.configから
持ってきたりするのだろうが、これはまた別の話。

で、whatisデータベースの引き方は2通りある。
(1) whatis : コマンド名指定で検索
# whatis signal
signal (2) - ANSI C signal handling
signal (7) - list of available signals


(2) apropos: キーワード指定で検索
# apropos signal
QMovie [qmovie] (3qt) - Incremental loading of animations or images, signalling as it progresses
QSignal [qsignal] (3qt) - Can be used to send signals for classes that don't inherit QObject
・・・(略)

man -kに似てる。





baduizm | linux | - | - | - |
ENTRY BOTTOM ENTRY TOP
[linux] pamの設定の書き方

pamのコンフィグの書き方。
基本的に上から順番に実行されるようで、抑えておくべきはタイプとコントロールフラグ。

■ タイプ
そのエントリが、どのタイミングで利用されるか。
「auth」、「account」、「password」、「session」の4種類あり。

(a) auth
認証を許可するかどうか。ログイン等パスワード入力でユーザ認証を行う際など。
(b) account
パスワードの有効期限などauth以外の方法での認証。
authの続きで実行される。
(c) password
パスワード設定、変更などに使うモジュール。
(d) session
認証前、認証後に実行されるモジュール。ログインしたよっていうログ吐くとか。


■ コンロトールフラグ
上から設定なめなめするわけだが、このコントロールフラグによって、
その認証の成否後どのように振舞うかを決める。
「requisite」、「required」、「sufficient」、「optional」の4種類ある。

(a) requisit
成功したら続けて同じタイプのモジュールを実行。
失敗したら即刻、認証を拒否。
(b) required
成功したら続けて同じタイプのモジュールを実行。
失敗しても、同じタイプのモジュールを実行してからユーザに通知。
何故認証に失敗したかを隠蔽できるので、こちらが好ましい。
(c) sufficient
成功したら、それだけで認証OK。それ以降のモジュールは必要なし。
失敗したら、無視して、同じタイプのモジュールを続けて実行。
ただし、実態は失敗後のモジュールは認証拒否するものが並んでいるケースが多いらしい。
(d) optional
「optional」タイプのモジュールで全て許可あるいは拒否された場合にのみ意味を持つもの




baduizm | linux | - | - | - |
ENTRY BOTTOM ENTRY TOP
cpioコマンド
cpioコマンドの使い方

■ -o: コピーアウトモード(アーカイブを作成し、標準出力に出力する)
find . | cpio -oa > /tmp/backup.cpio

入力はファイル名。出力はcpioアーカイブ。
ちなみにaオプションをつけることで、タイムスタンプが再設定され、
cpioコマンド実行時のタイムスタンプになる。

■ -i: コピーインモード(アーカイブからファイルを復元する)
cpio -idm < bbb.cpio

入力はアーカイブ。
-d オプションでディレクトリ展開
-m オプションでタイムスタンプをコピー元の時刻にする。


ということで、aをつけて作成、mをつけて展開することでアーカイブ作成時点のタイムスタンプになるはずだが、そうも行かない。。。
aオプションが思ってるように行かないのだ。。



baduizm | linux | - | - | - |
ENTRY BOTTOM ENTRY TOP
TCPWrapper


■ TCPWrapperとは
その名の通りTCPのラッパ。
目的はセキュリティ強化、アクセス制御、管理、ログ取りとか。
使われ方は2通り
(1) デーモン
tcpdとして常駐。inetdのセキュリティが良くなかったので、
inetd + tcpd という形で使いセキュリティを強化するのがそもそも目的だったよう。
ただ、今はxinetdが普及していて、xinetdはアクセス制限とかが出来るので、
この意味合いは薄れている模様。

(2) ライブラリ
libwrap.soってライブラリ。アクセス制御を提供。まだまだ使われている。
例えばssh。
[xxxx@host xxxxx]$ ldd /usr/sbin/sshd
libwrap.so.0 => /usr/lib/libwrap.so.0 (0x003ae000)
(以下、略)


■ TCPWrapperの設定ファイル
(a) /etc/hosts.allow : 接続を許可するリスト
(b) /etc/hosts.deny : 接続を拒否するリスト
書式はいろんな所に載ってます。

■ TCPWrapperのアクセス制御の流れ
(1) 「/etc/hosts.allow」と一致する接続を許可
(2) 上記1とは一致せず、「/etc/hosts.deny」の記述と一致する接続を拒否
(3)「/etc/hosts.allow」と「/etc/hosts.deny」の記述と一致しないものはすべて許可

何も設定がないと基本は許可らしい。

■ リンク
こことか、ここ



baduizm | linux | - | - | - |
ENTRY BOTTOM ENTRY TOP
locate関連

findよりも早く見付けられるlocate。
なぜならデータベースを持っていて、そのDBを検索するから。
findはコマンドが打たれる度にディスクをなめなめするのだ。

■ DBの実態
環境にもよるが、
[root@localhost /]# file /var/lib/slocate/slocate.db
/var/lib/slocate/slocate.db: data

これのようだ。

■ DB更新
cronに設定されていることが多いよう。
[root@localhost /]# cat /etc/cron.daily/slocate.cron
#!/bin/sh
renice +19 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "nfs,smbfs,ncpfs,proc,devpts" -e "/tmp,/var/tmp,/usr/tmp,/afs,/net"

updatedbコマンドを使ってる。-eは除きたいディレクトリ。

■ locate? slocate?
今のディストリビューションはセキュリティ強化されたslocateらしい。
[root@localhost /]# ls -li /usr/bin/locate
925058 lrwxr-xr-x 1 root slocate 7 7月 4 2005 /usr/bin/locate -> slocate
[root@localhost /]# ls -li /usr/bin/slocate
925059 -rwxr-sr-x 1 root slocate 26368 5月 14 2004 /usr/bin/slocate

うむ。シンボリックリンクだ。



ま、DB更新されていて、ファイルを探したいだけならlocate。
色々やりたいか、AM4:00に電源落ちてるならfindか。


baduizm | linux | - | - | - |
ENTRY BOTTOM