個人的なブログ Just a personal blog.

2018 年 1 月 14 日

FreePBX関連 いくつかの疑問と解決

Filed under: server — atushi @ 4:26 PM

つまりQアンドAなのだけれど自分の疑問を自分で解決したという羅列

Q1 Windows版のAgePhone(無料版)で転送できないんですけど何故でしょう?*2押してもプッシュ音が相手に届くだけで転送モードにならないんです。
agephoneのページには転送に丸印ついてるのに…

A1 FreePBXの該当内線の設定でDTMF信号がRFC2833になってるとプッシュ音がするだけで転送モードにはならない。自動にしておくと動作する。
sip登録時に自分はこうゆう信号送りますねっという情報も送ってくるがそれを無視してRFC2833決め打ちにすると駄目。

Q2 KX-UT136のプリプロビジョニングが動作しません。マニュアルどおりに一行だけ書いてみたのに…

A2 プリプロビジョニングもプロビジョニングと同じフォーマットで書かないと動作しない。一行目に# Panasonic SIP Phone Standard Format File # と書いて最終行は改行のみで。

Q3 KX-UT136で代理応答って出来ないの?

A3 出来ます。FreePBXでコールグループとピックアップグループ設定しておけば*8で拾えます。ワンタッチキーとして登録しておくと便利

Q4 KX-UT136でダイレクトピックアップは?

A4 出来ます。NUM_PLAN_PICKUP_DIRECT=”**”としとけばOK

Q5 raspberry版のfreePBXイメージってTFTP使える?

A5 たしか初めから入ってたような..なければaptで入れればOK プリプロビジョニングに使えます。

Q6 KX-UT136で保留ボタン押したら転送できないんだけど…

A6 HOLD_TRANSFER_OPERATION=”Y”にしとけばOK

Q7 raspberry版のfreePBXイメージでパーク保留出来ません。パークプロ買わないと駄目?

A7 出来ます。ちゃんと設定してみましょう。

Q8 KX-UT136でパーク保留?

A8 CALLPARK_METHOD=”2″ NUM_PLAN_PARKING=”70″ としとけば使えます。

Q9 KX-UT136でマニュアルにあるパーク保留というソフトキー出てこないんだけど…

A9 CALLPARK_KEY_ENABLE=”Y”で表示されます。

Q10 KX-UT136って保留中のパークボタン光らないの?

A10 光ります。X_PANASONIC_IPTEL_CALLPARK にしとけばOK

Q11 プリプロビジョニング用にDHCPでTFTPサーバを指定する方法は?

A11 自分の環境ではDHCPサーバーはCentOS6上で動いているISC dhcpd。
/etc/dhcp/dhcpd.conf に
option tftp-server-name “192.168.250.5”;
を追加する コーテーション必須。
windows server でも別手順で可能らしい(未検証)。

2017 年 1 月 28 日

raspbx インストール記録

Filed under: server — atushi @ 8:07 PM

Raspbxの書き込みと起動
今回のイメージは2017年1月28日段階で最新のraspbx-22-09-2016.imgを使っている。と書いたそばからraspbx-28-01-2017が出たようだ
以下はraspbx-22-09-2016をメインに変更点などがあったらraspbx-28-01-2017についても記載する。

ダウンロードページ

Downloads

ダウンロードしたイメージファイルをmicroSDカードに書き込む。
Win32DiskImagerを使用

作成したmicroSDカードを使用してraspberry pi を起動
DHCPサーバのログをみて割り当てられたIPアドレスを確認してsshで接続(またはモニタとキーボードを接続して直接ログイン

初期ログイン
ユーザー名:root
パスワード:raspberry

イメージから書き込んだmicroSDは4G程度しか認識していない
最大容量まで使用する手順
注意 削除したパーティションのスタートセクタと新規で作成するパーティションのスタートセクタを同じにすること。間違えると起動しない<SD書き込みからやりなおし(涙
dfで確認 /dev/root 3645436
fdisk /dev/mmcblk0
pで2つ目のスタートセクタを確認
dで2つめのパーティションを削除して
nで2つ目のパーティションを作り直す。スタートセクタはデフォルトだと違っているのでpで確認したセクタにあわせること 今回は157696  raspbx-28-01-2017でも同じ。エンドセクタはデフォルト(最大)でOK
wで書き込み
reboot後に
resize2fs /dev/mmcblk0p2
dfで確認

Raspberry Piのファームウェア更新
rpi-update

システム更新(apt-get update & apt-get upgradeをやっているカンジ
raspbx-upgrade

タイムゾーンの設定 (システムとPHPのタイムゾーン設定)
configure-timezone
Asia/Tokyoを指定

rootパスワードの変更
passwd root

新規ユーザの追加
adduser XXXXX
注意 フルネーム欄に何か記載しておいたほうがよい

vim入ってないのでインストール。
apt-get install vim

ネットワークアドレスの固定(このやりかたは古いようだ後述
vi /etc/network/interfaces

auto eth0
iface eth0 inet static
address 192.168.xxx.xxx
netmask 255.255.255.0
network 192.168.xxx.0
broadcast 192.168.xxx.255
gateway 192.168.xxx.xxx
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers xxx.xxx.xxx.xxx
dns-search xxxxxx.xxx.xx.xx

正しくは以下のように
/etc/dhcpcd.confに追記する

interface eth0
static ip_address=192.168.xxx.xxx/24
static routers=192.168.xxx.xxx
static domain_name_servers=xxx.xxx.xxx.xxx

host名の変更 初期値raspbx
vi /etc/hostname
vi /etc/hosts

LOGにactionエラーのリトライが並ぶ件(Debian系のバグ)raspbx-28-01-2017でも同じ
vi /etc/rsyslog.conf
最終4行をコメントアウト
#daemon.*;mail.*;\
# news.err;\
# *.=debug;*.=info;\
# *.=notice;*.=warn |/dev/xconsole

SSHでのrootログインを禁止する(いろいろ危ないので
vi /etc/ssh/sshd_config
#PermitRootLogin yes
PermitRootLogin no

日本語環境の設定
dpkg-reconfigure locales で
ja_JP.UTF-8 UTF-8
追加

デフォルトロケールの選択画面が出てきたらen_GB.UTF-8 UTF-8 を選択。日本語がいいならja_JP.UTF-8 UTF-8だがあまりお勧めしない(エラーメッセージをgoogle検索するなどで日本語情報しか取得できなくなるため あとhylaFAX使用時に日付部分が化けるという情報もあり)。

apache2の文字コード変更(日本語表示用)
vi /etc/apache2/envvars
export LANG=C を export LANG=ja_JP.UTF-8 に変更
/etc/init.d/apache2 restart

以下ブラウザ作業

ブラウザでIP直打ち接続

ユーザー名:admin
パスワード:admin

モジュールの更新作業
Admin>Module Admin>Check Online
Upgrade All>Process
途中UCPインストールで止まる。いったん閉じてまたCheck Onlineしてみるとペンディングになっているので手動でインストールする。再度Check Online>Upgrade All>Processを繰り返す。依存関係から入らなかったモジュールが全部入ったら完了。
raspbx-28-01-2017では上記の問題は発生せず。

Webページの日本語表示
setings>advanced seting GUI Behavior>show langeage をtrue に変更
右上の言語アイコンからja_JPを選択
これで日本語になる

以下日本語表示前提

設定>高度な設定>ダイヤルプランと操作可能>国のインジゲーショントーン をjapan に変更
設定>高度な設定>ダイヤルプランと操作可能>呼び出し時間デフォルト:を60に変更
設定>高度な設定>システムセットアップ>デフォルト言語を ja_JP に変更

adminパスワードの変更
アドミン>管理者 ユーザー名 admin パスワードを2回くらい送信するとログイン画面まで戻されてパスワード変更が完了している。

基本設定が終わったら内線を設定していく
一般的にSIPはport5060を使用する デフォルトでOK

内線プラン (今回
個人のスマホは100番台
固定IP電話は200番台
PCは500番台とし
FAX用に303番を使用する
着信グループは600番台

今回はPanasonic KX-UT123を2台用意してみた。
http://sol.panasonic.biz/ipphone/products/ut123n.html

iPhone用にAGEphoneをインストール
PC用にAGEphone for windowsをインストール

アプリケーション>内線>内線追加>新しいChan_SIP内線を追加
ユーザー内線が内線番号になる上記プランで作成していく(FAX以外)
ディスプレイ名は接続時に表示される文字 (日本語も使えるがCall Event Loggingで文字化けするのでいまのとこアルファベットのほうが良いようだ)
アウトバウンドCIDは電話番号(FAX番号からの発信でも電話番号で上書きされるはず?<調査中)
Secret はSIP接続時のパスワード(外部からのNAT接続などを考えているなら充分に強いパスワードを使うべき)

内線の設定は特に難しい部分はない。

ここでボイスメールのタブについて
日本の内線電話ではあまり一般的ではないが海外の内線電話でよく使われる機能としてボイスメールがある。つまりは内線の留守電である。思うに日本では同一フロアの使用が多いのに対して海外ではロウパーティション等での区切られたオフィスが多いことから(映画等ではそんなイメージ)不在、離席確認が視認出来ず、つないでみたらいなかったというシチュエーションが多いのではなかろうか。そういったときに内線の留守電(コール何回で留守電と設定しておく)に「誰それさんから電話ありました。電話番号XXX」と留守録をいれると内線電話のインジケータが赤く光ってメッセージありを伝え(KX-UT123にも機能あり)、なおかつスマホなどにメールとして送信されるという仕組みである。これなら伝達ミスも防げるし事務員がいちいち携帯に連絡する手間も省ける。今回は設定しないが使ってみる価値はあるかもしれない。(備考 KX-UT123のメッセージボタンに登録されている番号はasteriskのデフォルトと異なるのでどちらかを設定する必要あり。今回はKX-UT123側を変更してasteriskに合わせた アドミン>機能コード)

参照ページ
http://panasonic.biz/netsys/sipphone/support/download/

KX-UT123初期パスワード admin adminpass

テスト機で接続してみる。
接続できたら別内線にかけてみる通話が成功したらひとまずOK

ここでテスト機から登録外の内線にかけてみる
英語のアナウンスが聞こえるはず。

日本語音声アナウンスの設定
アドミン>Sound Languages  Japanese (ja) のインストールアイコンをクリック(右上の歯車アイコンが止まるまで待つ)
アドミン>Sound Languages  設定ボタンからGlobal Language を Japanese に変更

テスト機から登録外の内線にかけてみる
今度は日本語のアナウンスが聞こえるはず。

トランクの作成

外部接続設定をトランクと呼ぶようだ

ひかり電話が同一ネットワーク内にない場合
先に光電話BOXに接続して基本設定を終わらせる。まずPCを光電話BOXのLAN口につないでDHCP接続する。取得したIP情報から光電話BOXのIPアドレスを調べてブラウザからアクセスする。光電話BOXが同一サブネット上にいないとそもそも接続できないのでIPアドレスの設定(LAN側)を行う。DHCPサーバ機能はOFFにしてローカルネットワーク内に収納する(もちろんこっちを生かして他を切るのでもいい。要は同一ネットワーク上にDHCPサーバが複数出来るのをさけよってこと)。

今回の環境はNTT西日本のAD-200NE 電話1 FAX1の二回線契約。

光電話BOXに追加内線を設定する 1回線のみならアナログ電話が内線番号1に登録されている FAX番号も持っている場合は内線番号2にもアナログ電話が登録されているはず。

ここで注意点 光電話BOXはSIP接続時の認証がasteriskと異なっているため認証作業が進まず接続出来ない(機種によるようだ)。そこでasteriskにバッチをあてて対応するのだがFreePBXではこの手法が使えない。そこで認証をキャンセルしてMACアドレスで接続許可するように指定する。この手法では同一BOXにトランクを複数接続させることが出来ない(光電話BOX側が同一MACアドレス指定を拒否する)ので、ひとつのトランクで複数回線(電話とFAX)を処理するような場合には着番号での振り分け処理が必要になる。

トランク設定の参考ページSIP
http://www.voip-info.jp/index.php/FreePBX:5:%E3%83%88%E3%83%A9%E3%83%B3%E3%82%AF:%E3%81%B2%E3%81%8B%E3%82%8A%E9%9B%BB%E8%A9%B1(%E3%83%9B%E3%83%BC%E3%83%A0)

光電話ボックス内の内線3番にFreePBXを登録し参考ページのように登録する。着信時は両方とも対応するようにチェックしておく。

DAHDIについて
接続>トランク を見てみるとすでに一つDAHDIのトランクが初めから存在する。これは何だろうと思って調べてみた。DAHDIとはAsteriskの開発元であるDigium社が出しているアナログ回線、ISDN回線を収容するインターフェースカード用のカーネルモジュールのこと。このカードがインストールされていればそれはたしかに一つのトランクである。
raspbx-28-01-2017ではさらにもうひとつトランクがある。Star_Communication これは何だろうか?
リリースによるとAdded Star Communication testing trunk ということでテスト用のトランク。

pjsipをトランクに使うとバッチは必要ないようだ、ただしやはり着信番号は落ちてこないので仕掛けが必要(今回は採用しなかった)、というか電話回線用トランクとFAX回線用トランクにわけて使用できるので着信番号落ちてこなくてもいいような気もする。(確認してみたが同じ光電話BOXにPJSIPで二つの接続を行いトランクを二つ持つのは出来ないようだ。ポートが一つしかない相手に一つのポートで複数のセッションが張れるわけがないということか?。SIPとPJSIPで二つのトランクを作成(これなら成立する)という手もあるが…着信番号での振り分けがやはり現実的。)

トランク設定の参考ページPJSIP
http://www.voip-info.jp/index.php/FreePBX:10:%E3%83%88%E3%83%A9%E3%83%B3%E3%82%AF:%E3%81%B2%E3%81%8B%E3%82%8A%E9%9B%BB%E8%A9%B1(%E3%83%9B%E3%83%BC%E3%83%A0):Chan_PJSIP

pjsipを使う場合の有効化
設定>高度な設定>ダイヤルプランと操作可能>SIP Channel Driver bothに
sipが5060 pjsipが5061 のportを使用する(設定>Asterisk SIP 設定 で変更可能)。

注意 Asterisk SIP 設定で “送信” するとNATアドレスを要求される件
“External IP can not be blank when NAT Mode is set to Static and no default IP address provided on the main page” というメッセージが出る。NATを使用しない場合でもアドレスは要求される 素直にNATアドレスを書き込んでおく(General SIP SettingsタブのほうでDetect Network setings を押すとグローバル側IPを自動的に判別して設定するようだ。)

SIP-NATについて 通常ルーターからNATを使って出て行く場合IPヘッダのアドレスだけがNAT処理されるがSIPではヘッダ下にもIP情報が含まれているためこれではうまくいかない。

参照ページ
https://ja.wikipedia.org/wiki/Session_Initiation_Protocol

そこでSIP-NATはヘッダ下のIP情報を書き換える仕組み。実際に外との接続が必要な場合にのみ処理が行われる(はず)。
外内の判断は 設定>Asterisk SIP 設定>General SIP Settings の NAT設定で指定

トランクの設定が完了し「設定適用」すると光電話BOX側の指定した内線が登録状態「登録済み」になる(アウトバウンド、インバウンド設定無しでも)。ならない場合は見直し。

着信設定

着信をインバウンドと呼ぶ
内線設定で着信グループを設定していないなら作っておくこと 着信グループがないと一台だけしか着信指定できない。
応答がない場合の転送先で通話終了としておくとダッシュボードでエラーとなるので固定の内線を指定しておく。
インバウンドルート設定では上記の細工で着信番号ごとの設定を作成できる。

着信グループについて
FAX混ぜないようにw

接続>インバウンドルート インバウンドルートを追加
説明 hikari-inとかわかりやすいものにしとく
ダイヤルイン番号 このグループで着信させたい番号を市外局番から入れる
宛先をセット 着信グループを指定

これで着信が出来るはず。手持ちの携帯などから電話してみて着信、応答が出来るか確認する。

発信設定
発信をアウトバウンドと呼ぶ

注意 アウトバウンドルートの設定は上記設定が済んでから最後に行うように。もし間違った設定を行うと間違い電話を繰り返し発信し多額の電話料金が発生するなどのイタイ目にあうかもしれない。

接続>アウトバウンドルート アウトバウンドルートを追加
経路名 hikari-out とかわかりやすいものにしとく
ルートCID 光電話BOXに登録した内線番号3
内線を上書き はい
一致したルートのトランクシーケンス 上記設定済みのトランクを指定する。
Dial patternsタブ
とりあえず一致パターン0x. として市外局番から入力された番号を許可しておく。ここの設定でマッチパターンに応じた動作設定が出来る。ゼロエックスドット ドット付け忘れないように(一回失敗したw。

参照ページ
http://wiki.freepbx.org/display/FPG/Outbound+Routes+Configuration+Examples

以上で発信設定も完了。内線側から手持ちの携帯などに電話をかけてみる。

ここまでで一般的な内線システムは出来上がりである。以下の記述はFAXやNATなど拡張した場合の設定

hylaFAXインストール
ssh でログインしてinstall-fax
最後にfax extension(FAX用の内線)を作るか?と聞かれるのでY

ファックス内線の作成手順
ファックス内線番号
ファックス番号 (市外局番から書いておいた)
ファックスに表示される文字列(会社名とかファックス番号とか)
転送メールアドレス (このメールアドレスに画像がPDFで添付されたメールが送られる)
国番号  (日本は81)
地域番号 (たとえば金沢市の場合は市外局番076から頭の長距離識別番号0をとった76となる)
長距離識別番号 (0)
国際電話識別番号 (010等)

完了するとFreePBXへいって設定適用ボタンを押せとかいってくるので従う。

他の内線からFAX内線に接続してみてモデム音がすればOK ところが鳴らないでガチャ切りされる場合
アプリーケーション>内線>FAX用内線 高度な設定でhost欄がlocalhostとなっている場合は自己IPアドレスを打ち込む。
これで鳴るはず。

FAX用内線が用意できたらFAX用のインバウンドルートの設定を行う
接続>インバウンドルート インバウンドルートを追加
説明 fax-inとかわかりやすいものにしとく
ダイヤルイン番号 着信させたいFAX番号を市外局番から入れる
宛先をセット 内線 FAX用内線を指定
相手FAX機によっては着信音(相手側にとって)無しでのキャッチは話中として処理されることがある。
このため擬似的な鳴動時間を4秒ほどとる。
高度な設定 RINGINGシグナル>はい 応答前に一時停止>4

携帯などからFAX番号にかけてみて呼び出し音が1~2回鳴ってからモデム音がすればOK
誰かにFAX送ってもらって受信した結果がメールで届けば完了。

FAXの送信
FAX機を撤去する予定なので送信手段としてWinPrint Hylfaxを導入。
先にsshでログインしてFAX送信用ユーザーを作成しパスワードを設定そのうえで
faxadduser FAX送信用ユーザー名
としておく。(注意 フルネーム欄に何か記載しておいたほうがよい)
続いてPCにWinPrint Hylfax for win7をインストール。
IPアドレスとFAX送信用ユーザー名とパスワード 送信結果を知らせるデフォルトのメールアドレスを入れて設定(プリンタのプロパティからポートの構成を選ぶと設定ページがある)
プリンタとして登録されるので一般的な印刷先プリンタとして選択しFAX番号を入力して送信。

FAX送信リトライの回数について
延々とリトライする12回も!!
WinPrint Hylfax側で変えることが出来る 設定ページでリトライ回数を設定する。
MaxTries: 3
MaxDials: 3

FAXジョブの確認
faxstat -s

FAXジョブの削除(注意FAX送信ユーザーのアカウントで削除すること
su FAX送信ユーザー
faxrm ジョブ番号

外部からのSIP電話の接続を許可する場合のNAT設定

AGEphoneではクライアント側ポート番号を変更できるので以下のように設定してみた。
ルータ側に以下を追加

#
####################################################
#       DNAT for SIP Phones
####################################################
#
$IPTABLES -t nat -A PREROUTING -p udp -d グローバルアドレス -i $PPP –dport 5060 –sport クライアント側ポート番号 -j DNAT –to ローカルアドレス
$IPTABLES -A FORWARD -p udp -d ローカルアドレス –sport クライアント側ポート番号 –dport 5060 -j ACCEPT

アプリケーション>内線 からNAT接続したい内線を編集 高度な設定>NAT Mode yesにする。

DNATを使う場合はfail2ban程度は入れておかないと危険。というわけで配布イメージには、はじめからインストールの準備がされている。
ssh でログインしてインストールしておく。
install-fail2ban
インストール時に/etc/fail2ban/filter.d/asterisk.confは存在するけど上書きするか?みたいなことを聞かれてNにしたら設定がキャンセルされちゃったのでここはYで上書き。

SIPゲストを許可>いいえ にしとけとか言われるので従っておく

2015 年 10 月 8 日

CentOS6 のsasl

Filed under: server,未分類 — atushi @ 9:53 PM

Minimal install でsaslauthdインストール済みだけど

cyrus-sasl-plain

は入ってないので注意(備忘録w

同じ問題で過去に作業したくせに忘れていて時間ロスしてしまった

BXBT2807 CentOS6

Filed under: server — atushi @ 9:37 PM

BXBT2807 CentOS6 の組み合わせで

shutdown -h now で電源が落ちない件

同じく電源ボタンでshutdown動作をせずにいきなり落ちる件

つまりacpi周りの問題2件解決

Bios でERP Support をDisabledにする。

同じくインストールOSをwindows7に(たぶんUEFI機能のOFF

ErPについてBios上でまったく説明がなく 電源周りの省電力設定だと気がつくのに時間がかかった

 

 

2008 年 9 月 20 日

pop3ログインからDDNSに登録するシェルスクリプト

Filed under: server — atushi @ 9:11 PM

作成動機 サポート先にログインする必要が出たとき、そのサポート先のメールサーバをうちで預かっている場合にはmaillogから該当ユーザのpop3の記録からipアドレスを特定してログインを行っている(該当サポート先は固定のグローバルIPアドレスを持っていない)。DDNSを利用してネームサーバにエントリを行ってhogehoge.local で接続できるようにしておけば、作業が楽。

単純なサンプルを作成してみた。

iptouroku.sh

#!/bin/sh
USER=$1
IP_ADDRESS=$(grep “pop3-login: Login: $USER” /var/log/maillog | tail -1 | awk -F : ‘{print $8}’ | sed ‘s/]//g’)
echo -e “update delete $USER.local\n” | /usr/bin/nsupdate
sleep 1
echo -e “update add $USER.local 3600 A $IP_ADDRESS\n” | /usr/bin/nsupdate

引数にユーザ名を与えてやればそのユーザの最終ログインからIPアドレスを取得して該当ドメインにユーザ名.ドメインとして登録する。

例 sh iptouroku.sh hogehoge

あとはこれをcronで適当な間隔で動かすだけ。

追記 日曜日4時にloglotateでメールログが更新されて該当がない場合消えてしまうのでヌル処理追加

USER=$1
IP_ADDRESS=$(grep “pop3-login: Login: $USER” /var/log/maillog | tail -1 | awk -F : ‘{print $8}’ | sed ‘s/]//g’)
if [ -n $IP_ADDRESS ] ; then
echo -e “update delete $USER.local\n” | /usr/bin/nsupdate
sleep 3
echo -e “update add $USER.local 3600 A $IP_ADDRESS\n” | /usr/bin/nsupdate
fi

Powered by WordPress