「利用者:Pin ptr」の版間の差分
提供: VoIP-Info.jp
19行目: | 19行目: | ||
* /etc/dhcp/dhclient.conf | * /etc/dhcp/dhclient.conf | ||
− | <nowiki># | + | <nowiki># 既存の dhclient.conf に追加する |
option ip-sip-servers code 120 = { boolean, array of ip-address }; | option ip-sip-servers code 120 = { boolean, array of ip-address }; | ||
63行目: | 63行目: | ||
dhclientが起動するスクリプトからasteriskの設定を作る。 | dhclientが起動するスクリプトからasteriskの設定を作る。 | ||
− | $ | + | * /etc/dhcp/dhclient-exit-hooks.d/sip-configuration |
+ | <nowiki>if [ "eth0" = "$interface" ]; then | ||
+ | case $reason in | ||
+ | BOUND|RENEW|REBIND|REBOOT) | ||
+ | domain=$(echo "$new_ntt_domain" | sed -e 's/[.]$//') | ||
+ | number="$new_ntt_number" | ||
+ | is_ip=$(echo "$new_ip_sip_servers" | awk '{ print $1; }') | ||
+ | server=$(echo "$new_ip_sip_servers" | awk '{ print $2; }') | ||
− | + | if [ -n "$domain" ] && [ -n "$number" ] && [ "$is_ip" = 'true' ] && [ -n "$server" ]; then | |
− | + | cat /etc/asterisk/ntt.conf.up | \ | |
− | + | sed \ | |
− | + | -e "s/DOMAIN/$domain/g" \ | |
− | + | -e "s/NUMBER/$number/g" \ | |
− | + | -e "s/SERVER/$server/g" \ | |
− | + | > /usr/local/etc/asterisk/ntt.conf | |
+ | service asterisk reload | ||
+ | fi | ||
+ | ;; | ||
− | + | EXPIRE|FAIL|RELEASE|STOP) | |
− | + | cp /etc/asterisk/ntt.conf.down /usr/local/etc/asterisk/ntt.conf | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
service asterisk reload | service asterisk reload | ||
− | + | ;; | |
− | + | esac | |
− | + | fi</nowiki> | |
− | |||
− | |||
− | |||
− | |||
− | |||
* /etc/asterisk/ntt.conf.up | * /etc/asterisk/ntt.conf.up | ||
98行目: | 97行目: | ||
host=SERVER | host=SERVER | ||
context=fromntt | context=fromntt | ||
− | |||
fromdomain=DOMAIN</nowiki> | fromdomain=DOMAIN</nowiki> | ||
105行目: | 103行目: | ||
* sip.conf | * sip.conf | ||
− | <nowiki>(略) | + | <nowiki>[general] |
− | #include <ntt.conf></nowiki> | + | (略) |
+ | #include <ntt.conf> | ||
+ | |||
+ | [201] | ||
+ | (略)</nowiki> | ||
+ | |||
+ | === 結果 === | ||
+ | |||
+ | <nowiki>eri*CLI> sip show registry | ||
+ | Host dnsmgr Username Refresh State Reg.Time | ||
+ | xxx.xxx.xxx.x:5060 N 0xxxxxxxxx@n 3585 Registered Tue, 04 Apr 2017 04:55:15 | ||
+ | 1 SIP registrations.</nowiki> |
2017年4月4日 (火) 05:21時点における版
直収
Ubuntuでひかり電話を直収するのに試したことメモ。
接続
壁| -- |VDSLモデム| -- |Raspberry Pi3| -- |KX-UT123N|
DHCP
Ubuntu 16.04 Serverのisc-dhcp-clientにはclassless-static-routeのサポートが入っている。 また、dhclient.confで新たなオプションを定義できるので、再コンパイルせずに使う。
- /etc/network/interface
auto eth0 iface eth0 inet dhcp
- /etc/dhcp/dhclient.conf
# 既存の dhclient.conf に追加する option ip-sip-servers code 120 = { boolean, array of ip-address }; option vendor-class.ntt code 210 = string; option space ntt code width 1 length width 1 hash size 3; option ntt.mac code 201 = string; option ntt.number code 202 = text; option ntt.domain code 204 = domain-list; option ntt.firmware code 210 = domain-list; option vendor.ntt code 210 = encapsulate ntt; interface "eth0" { also request ip-sip-servers, vivso; send vendor-class.ntt = concat(06, suffix(hardware, 6)); }
うまくいくと、dhclient.eth0.leases に設定が入っているのが確認できる。
Asterisk
Ubuntu 16.04のAsteriskは壊れていて面倒そうなので使わない。 https://bugs.launchpad.net/ubuntu/+source/asterisk/+bug/1314058
install_prereqはX関連のアレコレが入るので使わない。
$ sudo apt install build-essential libncurses-dev uuid-dev libjansson-dev libxml2-dev libsqlite3-dev libssl-dev $ tar xvf asterisk-13.14.0.tar.gz $ cd asterisk-13.14.0 $ ./configure --with-pjproject-bundled --prefix=/usr/local $ make menuconfig # CORE-SOUNDS-JA-GSM $ make $ sudo make isntall $ sudo make config $ sudo make samples $ sudo make install-logrotate
- /etc/default/asteriskのALTCONFを/usr/local/etc/asterisk/asterisk.confに変えたり…
- ログが /usr/local/var/lib/log に出力されるので、適当に移動したり…
ntt.conf
dhclientが起動するスクリプトからasteriskの設定を作る。
- /etc/dhcp/dhclient-exit-hooks.d/sip-configuration
if [ "eth0" = "$interface" ]; then case $reason in BOUND|RENEW|REBIND|REBOOT) domain=$(echo "$new_ntt_domain" | sed -e 's/[.]$//') number="$new_ntt_number" is_ip=$(echo "$new_ip_sip_servers" | awk '{ print $1; }') server=$(echo "$new_ip_sip_servers" | awk '{ print $2; }') if [ -n "$domain" ] && [ -n "$number" ] && [ "$is_ip" = 'true' ] && [ -n "$server" ]; then cat /etc/asterisk/ntt.conf.up | \ sed \ -e "s/DOMAIN/$domain/g" \ -e "s/NUMBER/$number/g" \ -e "s/SERVER/$server/g" \ > /usr/local/etc/asterisk/ntt.conf service asterisk reload fi ;; EXPIRE|FAIL|RELEASE|STOP) cp /etc/asterisk/ntt.conf.down /usr/local/etc/asterisk/ntt.conf service asterisk reload ;; esac fi
- /etc/asterisk/ntt.conf.up
register => NUMBER@DOMAIN@SERVER/NUMBER [ntt] type=peer host=SERVER context=fromntt fromdomain=DOMAIN
- /etc/asterisk/ntt.conf.down
; empty
- sip.conf
[general] (略) #include <ntt.conf> [201] (略)
結果
eri*CLI> sip show registry Host dnsmgr Username Refresh State Reg.Time xxx.xxx.xxx.x:5060 N 0xxxxxxxxx@n 3585 Registered Tue, 04 Apr 2017 04:55:15 1 SIP registrations.