16
回編集
差分
ページの作成:「Ubuntuでひかり電話を直収するのに試したことメモ。 == DHCP == Ubuntu 16.04 Serverのisc-dhcp-clientにはclassless-static-routeのサポートが...」
Ubuntuでひかり電話を直収するのに試したことメモ。
== DHCP ==
Ubuntu 16.04 Serverのisc-dhcp-clientにはclassless-static-routeのサポートが入っている。
また、dhclient.confで新たなオプションを定義できるので、再コンパイルせずに使う。
* /etc/network/interface
<nowiki>
auto eth0
iface eth0 inet dhcp</nowiki>
* /etc/dhcp/dhclient.conf
<nowiki># デフォルトの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));
}</nowiki>
うまくいくと、dhclient.eth0.leases に設定が入っているのが確認できる。
== Asterisk ==
Ubuntu 16.04のAsteriskは壊れているて面倒そうなので使わない。 https://bugs.launchpad.net/ubuntu/+source/asterisk/+bug/1314058
install_prereqはX関連のアレコレが入るので使わない。
<nowiki>$ 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</nowiki>
* /etc/default/asteriskのALTCONFを/usr/local/etc/asterisk/asterisk.confに変えたり…
* ログが /usr/local/var/lib/log に出力されるので、適当に移動したり…
== ntt.conf ==
* /etc/dhcp/dhclient-exit-hooks.d/sip-configuration
<nowiki>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</nowiki>
* /etc/asterisk/ntt.conf.up
<nowiki>register => NUMBER@DOMAIN@SERVER/NUMBER
[ntt]
type=peer
host=SERVER
context=fromntt
nat=never
fromdomain=DOMAIN</nowiki>
* /etc/asterisk/ntt.conf.down
<nowiki>; empty</nowiki>
* sip.conf
<nowiki>(略)
#include <ntt.conf></nowiki>
== DHCP ==
Ubuntu 16.04 Serverのisc-dhcp-clientにはclassless-static-routeのサポートが入っている。
また、dhclient.confで新たなオプションを定義できるので、再コンパイルせずに使う。
* /etc/network/interface
<nowiki>
auto eth0
iface eth0 inet dhcp</nowiki>
* /etc/dhcp/dhclient.conf
<nowiki># デフォルトの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));
}</nowiki>
うまくいくと、dhclient.eth0.leases に設定が入っているのが確認できる。
== Asterisk ==
Ubuntu 16.04のAsteriskは壊れているて面倒そうなので使わない。 https://bugs.launchpad.net/ubuntu/+source/asterisk/+bug/1314058
install_prereqはX関連のアレコレが入るので使わない。
<nowiki>$ 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</nowiki>
* /etc/default/asteriskのALTCONFを/usr/local/etc/asterisk/asterisk.confに変えたり…
* ログが /usr/local/var/lib/log に出力されるので、適当に移動したり…
== ntt.conf ==
* /etc/dhcp/dhclient-exit-hooks.d/sip-configuration
<nowiki>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</nowiki>
* /etc/asterisk/ntt.conf.up
<nowiki>register => NUMBER@DOMAIN@SERVER/NUMBER
[ntt]
type=peer
host=SERVER
context=fromntt
nat=never
fromdomain=DOMAIN</nowiki>
* /etc/asterisk/ntt.conf.down
<nowiki>; empty</nowiki>
* sip.conf
<nowiki>(略)
#include <ntt.conf></nowiki>