Index

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

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

やったこと

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

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

キャプチャをしているとこんな動きをしてた

  1. DHCPで配布されてる情報
    1. アドレス
    2. ルーティング情報
    3. SIPサーバアドレス
    4. ベンダー情報
    5. 認証情報
    6. リースタイム
  2. 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にする予定。(マイナンバーで追加番号を取得済み)

使用したソフトウェアバージョン

OSCentOS 5.10
AsteriskAsterisk 1.8.26.1
dahdi Linuxdahdi-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


添付ファイル: filesip.conf.sample 193件 [詳細] fileextensions.conf.sample 172件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-02-15 (木) 13:34:42 (97d)