[[Index]]

ひかり電話を追加で契約したので、ひかり電話ルータに電話・FAXをつなぐのではなく、Asteriskで直接接続してみる。(届いたルータがクソ邪魔だった)
やってる人はほとんどいなかったのでメモ

ググってみると、PPPoEをつないで取得する方法があるのだけど、今は使われていないのか、自分の地域(さいたま市)では使えなかった。
仕方なく、パケットをキャプチャして対応。

やったこと
-ONUにSWをはさむ
-ひかり電話ルータのWANをSWに接続
-ONUをSWに接続
-インターネット接続ルータをSWへ接続
-ひかり電話ルータのWANポートをミラーリング
-ミラーしたポートをキャプチャ

こうすると、インターネット接続に影響なく、通信の中身が見えて、設定情報が取れる。
インターネットが切れても良ければ、PC繋いでWiresharkでパケットキャプチャすればOK

キャプチャをしているとこんな動きをしてた
+DHCPで配布されてる情報
++アドレス
++ルーティング情報
++SIPサーバアドレス
++ベンダー情報
++認証情報
++リースタイム
+SIPサーバへRegister

中身はこんな感じ

SIP通信
 REGISTER sip:ntt-east.ne.jp SIP/2.0
 Via: SIP/2.0/UDP 118.177.xx.xxx:5060;branch=z9hG4bK1435901013
 From: <sip:0480000000@ntt-east.ne.jp>;tag=2955143756
 To: <sip:0480000000@ntt-east.ne.jp>
 Call-ID: 688452033@118.177.14.xxx
 CSeq: 1 REGISTER
 Max-Forwards: 70
 Contact: <sip:2345902669@[2408:212:622:8e01:23a:9dff:fecc:af6e]>,<sip:652483661@118.177.14.xxx>
 Expires: 3600
 Allow: INVITE,ACK,BYE,CANCEL,PRACK,UPDATE,MESSAGE
 Supported: path
 Content-Length: 0
 
 SIP/2.0 200 OK
 v: SIP/2.0/UDP 118.177.14.xxx:5060;branch=z9hG4bK1435901013
 f: <sip:0480000000@ntt-east.ne.jp>;tag=2955143756
 t: <sip:0480000000@ntt-east.ne.jp>;tag=3603364741
 i: 688452033@118.177.14.xxx
 CSeq: 1 REGISTER
 m: <sip:652483661@118.177.14.xxx>;q=0;expires=3600,<sip:2345902669@[2408:212:622:8e01:23a:9dff:fecc:af6e]>;q=0;expires=3600
 l: 0
 Date: Sun, 09 Mar 2014 14:39:01 GMT
 Service-Route: <sip:ntt-east.ne.jp;lr>
 Path: <sip:118.177.125.1;lr>
 P-Associated-URI: <sip:0480000000@ntt-east.ne.jp>,<sip:0481111111@ntt-east.ne.jp>

DHCP通信
 Your (client) IP address: 118.177.14.xxx (118.177.14.xxx)
 Next server IP address: 118.177.14.yyy (118.177.14.yyy)
 Relay agent IP address: 118.177.14.yyy (118.177.14.yyy)
 Client MAC address: NecAcces_00:00:00 (00:3a:9d:00:00:00)
 Subnet Mask: 255.255.255.252 (255.255.255.252)
 Router: 118.177.14.yyy (118.177.14.yyy)
 SIP Server Encoding: IPv4 Address (1)
 SIP Server Address: 118.177.125.1 (118.177.125.1)
 Subnet/MaskWidth-Router: 118.177.0.0/16-118.177.14.yyy

わかったこと
-IPは/30をつかう
-デフォルトルート、DNSは配られていない
-SIPサーバのアドレスが配られている
-ルーティング情報は配られている
-v6はつかってない

この情報をもとにasteriskを設定

sip.confのregisterが、RT200NEと同じになるようにする。
SIP内では認証にパスワードは使用されていない。
外線着信時、「outsideline」のextensionsを使う
 register => 0480000000:@ntt-east.ne.jp/0480000000

%%ひかり電話ルータのMACアドレスで認証しているらしい%%

%%それに対応するためにAsterisk側のmacアドレスを変更。%%~
%%ifconfig ethX hw ether 00:3a:9d:00:00:00%%

変更しなくてもregistできた

dhcpを起動
 dhclient ethX

ルーティングを追加
 route add -net 118.177.0.0/16 gw 118.177.14.yyy

sipのregisterを合わせるために/etc/hostsを記入
 118.177.125.1   ntt-east.ne.jp

asteriskを起動
 /etc/init.d/asterisk restart

register状況を確認
 [root@centos-asterisk asterisk]# asterisk -vvvr
 cetos-asterisk*CLI> sip show registry
 Host                                    dnsmgr Username       Refresh State                Reg.Time
 ntt-east.ne.jp:5060                     N      0480000000        3585 Registered           Wed, 12 Mar 2014 00:20:02
 1 SIP registrations.
 centos-1014e*CLI>

Registered出来てしまえばこっちの物!

IS12Sの標準SIPクライアントに901の設定をして、iphone5sに902の設定をして着信、通話が無事できるようになりました。
あとでサブ番号はfaxにする予定。(マイナンバーで追加番号を取得済み)

使用したソフトウェアバージョン
|OS|CentOS 5.10|
|Asterisk|Asterisk 1.8.26.1|
|dahdi Linux|dahdi-linux-complete-2.9.1.1+2.9.1|

インストール方法

buildに必要なパッケージをインストール
 yum install gcc gcc-c++ kernel-devel ncurses-devel openssl-devel libxml2-devel
 ※もしかしたら追加があるかも

sourceファイルのダウンロード
 http://downloads.asterisk.org/pub/telephony/asterisk/
 と
 http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/

ダウンロードしたファイルを展開してビルド
 tar zxf dahdi-linux-complete-2.9.1.1+2.9.1.tar.gz
 cd dahdi-linux-complete-2.9.1.1+2.9.1
 make
 make install
 make config
 
 tar zxf asterisk-1.8.26.1.tar.gz
 cd asterisk-1.8.26.1
 ./configure
 make
 make install

dahdiを起動
 /etc/init.d/dahdi start

asteriskを起動
 /etc/init.d/asterisk start

インターフェイスの設定はこんな感じ
 /etc/sysconfig/network-scripts/ifcfg-ethX
 DEVICE=ethX
 BOOTPROTO=dhcp
 HWADDR=00:0D:48:36:08:92
 ONBOOT=yes

Interfaceが上がったのと同時にルーティングを追加してくれる設定
 /etc/sysconfig/network-scripts/route-ethX
 118.177.125.0/24 via 118.177.14.yyy

国際電話は発進させないようにする設定
 exten => _0.,1,Set(CALLERID(num)=${MYNUMBER})
 exten => _0.,2,Set(CALLERID(name)=${MYNUMBER})
 ; 国際電話判定(010で始まる番号は発信不可)
 exten => _0.,3,GotoIf($[${EXTEN:0:3} = 010]?international)
 ; その他の番号では発信可
 exten => _0.,n,Dial(SIP/${EXTEN}@ntt,120,T)
 ; 拒否
 exten => _0.,n(international),Hangup()

#comment_kcaptcha

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS