2017年6月28日水曜日

Asterisk入門 -- その3


ソフトフォン・クライアント -- zoiper のインストールと設定






今回は、Asterisk に接続するためのクライアントの設定をしてみます。





使うのは、定評のある zoiper です。使用感や安定性、品質に不満が少ない、非常に優れたソフトフォンアプリです。





ほかには、CSipSimple(コーデックに無料で opus が使える)、Acrobits(有料)、AGEphone などがオススメのクライアントです。





内線端末としてだけでなく、ブラステルも使うなら zoiper 一択でしょう。


Fusion も、050 Plus も zoiper で決まりかな。



現在は Grandstream Wave というソフトフォンアプリを使用しており、zoiper は止めました。





内線端末向けの設定と、ブラステル向けの設定の仕方を記述していますのでご参考まで。





Google playで「zoiper」を検索すると、次のような画面になります。










いま現在は、LITE(無料)、PRO(有料)、BETA(β版・無料)があります。


LITE を使います。


PRO 版はコーデックに G729 と opus が追加されているようですが、それ以外の機能面は殆ど LITE も同じです。


β版はテスター登録して使えますが、使い勝手も画面も好みに合いません。










インストール画面になりますので、「インストール」をクリックします。










インストールが終わったら、「開く」をクリックします。










初期画面ですが、「do not show again」にを入れて、「Cancel」をクリックします。










まだ、なにもレジストされていない状態です。右上の「Config」をクリックします。










設定画面になりました。「Accounts」から順に設定をしていきます。










「Add account」をクリックします。










「Yes」をクリックします。また、「Accountt setup」が出ますが、今度は、










右の「Manual Configration」をクリックします。次に、「SIP」または「IAX」の設定の画面になりますから、










「SIP」をクリックします。










上から順に設定していきますので、まず、「Account name」をクリックしてこのアカウントに付ける名前を入力します。名前は任意名です。英字でも漢字でも番号でも何でも構いません。設定したあとの、実際に使うときの画面に表示される表示名になります。










入力が終わったら、「OK」をクリックします。










次に、接続先のホスト(IPアドレス)とポートを「:」で区切って入力します。


例えば、「IPアドレス 19.168.xxx.yyy」「ポート 5060」


の場合は、


  192.168.xxx.yyy:5060


ブラステルの場合は、


  softphone.spc.brastel.ne.jp:5060


と、入力して「OK」をクリックします。





ポート番号は、一般的な SIP 標準の 5060 で結構です。





ネットでは、5061とか、標準とは別にした方がいい、という人もいるようですが、サーバーの負荷的なことをいっているのだとすると、意味がありません。



そんなレベルでサーバーの処理能力を越えるようなことはありません。




何千、何万の呼を処理するわけではありません。





また、IP電話サービス事業者は殆ど 5060 です。問題があるという報告はありません。




あなたが、ルーターのポートに穴を開けるつもりなら、もっとかけ離れた番号の方がむしろいいでしょうけど、そもそもポート開け自体は「強く」オススメしません。セキュリティ上の問題を抱えてしまうからです。





前の画面に戻ったら、次に「Username」をクリックし、ユーザー名を入力します。ユーザー名は sip.conf に定義したユーザ名、例えば内線の場合は「201」などと入力します。


ブラステルの場合は、ブラステルカードの裏側のスクラッチを削ったところに書いてある「ユーザー名 (8桁の数字)」を記述します。










「OK」をクリックして、前の画面に戻ります。「Password」をクリックしてパスワードを入力します。内線の場合、sip.conf に記述のパスワードです。




ブラステルの場合は、ブラステルカードの裏側のスクラッチを削ったところに書いてある「パスワード(8桁の文字列)」を入力します。

パスワードはあとで、ブラステルの「マイアカウント」からログインして変更することもできます。












入力したら「OK」をクリックして前の画面に戻ります。次に「Ringtone」をクリックして、着信時に鳴らす音を選びます。好みの音を選んでください。選ぶと、その音が短く鳴りますから、どんな音かはわかります。










右下の「OK」をクリックして、着信音を確定して元の画面に戻ります。










次に、「Audio Codec Settings」をクリックして、コーデックの選択と、優先順序を決めます。


この例のように「ulaw, iLBC30, Speexs,gsm」をを入れ、この順序でいいと思います。


順序の入れ替えは左の3本線の部分を押しながら上下にスライドすれば、順序の入れ替えができます。


選び終えたら、「Save」をクリックして確定・保存します。










「Enable on start」にが入っているのを確認します。


次に、「Network Settings」をクリックします。










「Registration expirey time」は、1800 60sのままです に変更します「Use RPORT for signalling」はを外します。Androidの「戻る」ボタンで画面を戻します。


次に「Features」をクリックして「DTMF style」を確認します。デフォルトは RFC-2833 です。これは、sip.conf の設定と合わせてください。


ブラステルの場合は「inband」を選択した方がよいみたいです。










画面を戻したら、左下の「Save」をクリックして確定・保存をします。













例では、表示名部分を塗りつぶしてありますが、「緑色のレ点」の右に設定時の表示名が表示されます。また、「レ点」が緑色は、接続状態を示しています。


ここまでの設定が正しければ、緑色のはずです。これが、緑色になっていなければ、設定が間違っています。


最初から、再チェックしてみてください。












次に、ほかの部分の設定を続けます。Config の最初の画面に戻り、「Account」の次に「Audio」を設定します。初期値は下記のようになっていると思います。










この中で、エコーキャンセル、自動ゲインコントロールはを外します。




スピーカーゲインは+5〜8くらいがいいでしょう。スマホによって差があります。実際に聞いたときの音量で、スマホのボリュームボタン最大ではまだ音量が小さいときは、ここを上げて見てください。




Androidの「戻る」ボタンで画面を戻します。


次に、「Connectivity」の設定をします。












「Stay awake」はプロトコルが tcp のときに有効な設定ですから、外します。


これを外しておくことは大事です。スリープで切断されたりすることがあります。


は、zoiper の help ページによれば、するように、とのこと。



消費電力が増える、とありますが、そもそも zoiper の消費電力は少ないので気にする必要はありません。




続いて「Listening Port」を開いて、設定を見直します。










初期値はすべてが入っていると思います。これらはすべて外します。


ここも大事なポイントです。


一番上の、Local SIP Port の中の、Port が 5060 であることを確認します。


5060 以外だったら、5060 に設定し直します。


ここも大事なポイントです。




知らないうちに切断、なんてときは、大事なポイントが大抵の場合、間違っています。




Android の「戻る」ボタンで戻り、左下の「Save」で、確定・保存してください。




忘れると、設定が反映されません。





最後の設定です。


「Advanced」を設定します。










「Send Google Analytics」はグーグルの解析に協力する方は、協力しない方はを外します。ダイヤラーを、Android のネイティブダイヤラーと統合するときは、「Dialer integration」にを入れますが、zoiper のまま使う場合は外します。


お好みでどうぞ。





「Supported networks」は特に触る必要はないでしょう。


Android の「戻る」ボタンで戻ります。左上の Dialer で、ダイヤル画面、Contacts で電話帳、Call log で通話履歴が、それぞれ表示されます。Chat は zoiper クライアント同士で有効です。





以上で設定も終わりです。


実際にやってみて、IP 電話の楽しさ、苦労(? 遅延する、とか、音質がどうも、とか、これらが感じられなくなったとか)も一緒に味わって見てください。





では、では。







》Asterisk 入門・終わり



追記:どうも、Android 6.0 以降の Doze で「最適化対象外」としても

   ディープスリープに入ると切れるようです。Android 5 以前の

   バージョンでは、大丈夫みたい。

   仕方ないので、tasker 使って、1時間おきに起動するようにしま

   した。tasker自体も「最適化対象外」にしないと、これもディープ

   スリープしちゃうようで、tasker が寝ちゃってしまう。

   少し、これで様子見。

   最初は、NAT越えの問題かと思いましたが、どうも Doze の影響

   みたいです。寝てると「切れる」ヒトは、これもご参考に。





追記の追記:
zoiperのHelpページでの記載では、次の設定をするように、とあります。



  Open Zoiper -> go to settings -> Connectivity


  Enable Keep Alive WiFi (unless you want to switch to 3g/4g when the wireless turns off).


  Stay awake is on


  Run in background is on





また、アンドロイドの設定で





  Then go to Android Settings -> Apps -> Zoiper -> Data Usage


  Enable background data


  Enable Unrestricted data usage





とするように、ともあります。さらに、







  On Android 6.0 and above, please make sure Zoiper is on the whitelist for battery optimization. Zoiper should popup to allow it to add itself to the whitelist, but this will not work on some devices  (Huawei, Xaomi,..) that come with their own battery optimization settings. Please manually add Zoiper to the battery optimization whitelist on such devices.





For Huawei devices, please see here.





と、電池の最適化をしない設定にするように、とあります。ただし、Huaweiや、Xaomi は、チョッと違う設定の仕方、とありますので、これに従ってください。



Registration expiry time はなるべく短く(60s)設定するように、とあります。



以上の設定どおりであれば、待受けも大丈夫なはずです。レジストが切れることもないでしょう。














2017年6月26日月曜日

再び通話転送、されど転送


ひかり電話を、ボイスワープ・オプション契約なしで転送する






「転送」って以外に難しい。





発信者番号(以下、発番)通知を無視すれば簡単だけど、それでは運用には不便です。


発番が、最終的に転送された電話まで通知されることが望まれます。





ひかり電話の発番表示オプション契約は必須ですが、それ以外のオプションの契約なしに転送を実現したいわけです。





 500円(基本料)+400円(発番表示)+450円(HGW貸借料)= 1,350円/月額





これ自体が、かかり過ぎと思っています。





今現在は、光コラボ回線ですから HGW 貸借料はかかっていませんが、光コラボ回線の優遇期間が来年7月で終了します。



更新期は今年の11月ですから、このときに NTT東のフレッツ光ネクストに戻そうと考えています。




ひかり電話もこの際廃止してしまえ、というわけで、現在、光回線+ひかり電話で約 4,500円/月額が、約 3,000円ほどになります。毎月 1,500円、これが来年7月以降は 1,900円の差になってしまうのです。年間で約 2.4万円の差になります。


これは大きい。





発番表示オプションを使用するのに NTT側には新たなコストは発生しません(厳密には課金のためのデータベースへの登録くらいです)。それなのに :-( ...... 


無料でいいはずだし、HGW 貸借料もなんだかな〜〜?? と、考えてしまいます。





さらにボイスワープは 500円、留守電とか、着信通知メールとか、オプション料もばかにならず、ドンドン、月額費用が増えていきます。


使う頻度は少なくても、必要なヒトは、腹立たしくもこのような費用を支払い続けているのではないでしょうか。





ひかり電話A(エース)でも 5オプションで 1,500円/月額です。発番表示・キャッチホン・ボイスワープの 3セットでも 800円/月額、別途かかります。





これらの大半のオプションは、Asterisk で、初期投資の数千円以内で実現できてしまうのです。


ラズパイ3 は本体・ケース・電源アダプター込みで約 7,000円です。SDカードが必要ですが、16GB程度でよいので、1,500円程度の追加で済みます。





Asterisk(無料で手に入ります)をラズパイに構築すれば、たったこれだけでできてしまうのです。





古い PC、使わなくなった PC はありませんか。これに Linux 入れて、Asterisk 構築なら、余計な費用もかけなくて済みます。








ですが、このときに「転送」は中継する電番が転送先に通知され、発番が届かない、という問題にぶち当たったのです。





今回、この問題をクリアできるメドが立ったので、かなり充実した環境が作れることになりました。ひかり電話の各オプションのうち、下記が月額無料で「実現できる」


のです。





 ■ナンバーディスプレイ(ブラステルなどの利用で無料・ひかり電話のオプションが無料ではありません) ■ナンバー・リクエスト ■ボイスワープ ■迷惑電話お断り ■着信お知らせメール ■FAXお知らせメール ■コールセレクト





加えて、FAX 送受信(FAX 機なしに PC から)、留守電、留守電お知らせメールなどもできます。





三者通話も、スマホ内線への転送も、内線同士の通話も、代表番号着信で内線振分などなど、高機能な環境を実現できるのです。





我が家は、ひかり電話は11月にやめる予定ですが、それまでは、このような付加機能の一部を実現してみることにしました。これは、イエデンをブラステルに代えても同じサービス環境を引き継ぐことができます。





電話って、いまやあまり使わなくなったのですが、それでもないと困りますよね。


我が家も今は、家族や親戚、親しい人くらいしかかけることはありませんが、そのうちの半数くらいは、いまや LINE です。





カミさんは友だちと毎日のように長っ話しするので、携帯電話の通話定額10分が必要ですが・・・ :-(





また、レガシーな環境のヒトとは相変わらず電話になります。例えば、我が家の場合、離れて住んでいる姉なんかはガラケーと固定電話ですから、こちらも「電話」になります。





あとは、このようなヒト以外では、勧誘電話か詐欺電話が着信するくらいです。クルマのディーラーとか、いくつかの、使っている様々なサービスの事業者がまれにかけてくることがあるくらいですね。





そんなわけですから、たかが電話になぜそんなに入れ込むの? と、おっしゃるかもしれませんが、されど「電話」なのです。





転送を使ったサービス機能などは、Asterisk 構築の章で追々、紹介していきます。
















2017年6月25日日曜日

Asterisk入門 -- その2


extensions.conf について






前回の「Asterisk入門 -- その1」では sip.conf について記述しました。


今回は、Asterisk の実際の振る舞い(発着信の定義など)について記述したいと思います。





extensions.conf もまた、[general] セクションから始まります。






[general]                   ; 全般的なことを定義します


writeprotect=no        ; CLIによるextenの変更の許可・不許可



                                ; CLIは、Asteriskのコマンドモードインターフェース



[globals]                   ; グローバル(セクション越えて有効な)変数を定義します


MYNUMBER=0312345678    ; 自宅ひかり電話の番号(03-1234-5678)



;


[default]                   ; デフォルトセクション


exten => 200,1,Dial(SIP/201&SIP/202,30) ; ひかり電話着信時、子機の


                               ; 201と202を30秒間、呼び出します


; 「200」は、sip.conf でひかり電話をレジストしたときにひかり電話に与えた


; 内線番号です。これはエクステンション番号といい、その後ろの「1」や「 n」


; はエクステンションの順序をしめす番号です。順に、1, 2, 3, ・・・のように


; 記述する代わりに、2 以降は「n」で表現できます。exten を変更するとき


; など、「n」と書いた方が順序番号の変更が少なくて済みます



exten => 200,n,Hangup ; 通話終了でオンフックします。



;



exten => 201,1,Dial(SIP/201,30) ; 201がダイヤルされたら、201を呼び出します


exten => 201,n,Hangup




;


exten => 202,1,Dial(SIP/202,30)


exten => 202,n,Hangup



;



exten => 99,1,Dial(SIP/201&SIP/202,30) ; 99がダイヤルされたら201と202を


                                ; 呼び出します


exten => 99,n,Hangup



;


; 発信の定義


exten => _0ZX.,1,Set(${CALLERID(num)=${MYNUMBER}) ; 発信番号セット


; 発信番号は、実際には外線発信時はひかり電話の番号で強制的に置き換えられる


; ようです。なりすましの防止のためでしょう。



exten => _0ZX.,n,Dial(SIP/${EXTEN}@hikari-denwa)


exten => _0ZX.,n,Hangup






このときの「_0ZX.」はパターンマッチングといい、「0」から始まる数字で、「Z」は 1〜9 のどの数字でもよく(許可)、「X」は 0〜9 のどの数字でもよいことを表し、かつそのあとの「.」で「X」は何桁でもいいことを表しています。


日本の一般電話番号と携帯電話番号を含む数字を許可しています。


3桁番号(104や117など)は、次のように記述します。





  exten => _1XX,n,Dial(SIP/${EXTEN}@hikari-denwa)





「X」のうしろに「.」はありませんから、3桁の数字のみ許可、という意味です。


「${EXTEN}」はエクステンション番号を示します。


例えば、0412345678 をダイヤルすると、「_0ZX.」にマッチしますから、許可されて、発信ができることになります。このときに「${EXTEN}」は、 0412345678 と記述したことと同じ扱いになるのです。





つまり、ひかり電話の SIP サーバーである、hikari-denwa から0412345678 を呼び出す、という意味になります。





お気づきでしょうけど、パターンマッチングはいろいろ細かく設定すれば、マッチングしない番号ははねられます(無視されます)ので、例えば、00発信(国際通話)を制限したり、許可したりもできるわけです。





extensions.conf は書きれないほど、ある意味複雑です。





これは、ネットなどで、事例を学びながら、あるいは高橋 隆雄氏が書かれた書籍などで理解をしていただきたいと思います。1冊の分厚い本ができるほどの内容があります。





入門編としては、とりあえず使ってみる、レベルの記述に限定しました。




「続き」は、クライアント(子機)になるスマホへのソフトフォンの設定をしてみます。











LINE モバイルのエントリーパッケージ


エントリーパッケージを購入しました






















カミさんのスマホの、今の MVNO の優遇期間が切れて7〜8月に更新期を迎えます。優遇期間が過ぎると、月額料金が 1,100円(税抜)ほど高くなります。





更に1年経つと、これ以外の基本割引もなくなり、更に 1,000円(税抜)高くなり、 3,980円/月額料金となってしまいます。





次の更新期は2年後なので、今をのがすと1年間は 2,980円、1年後には 3,980円に跳ね上がってしまうことになります。





つまり、今月までは 1,880円(税抜)だった訳です。これには通話定額(10分・300回/月のかけホーダイ)が含まれていました。





今、同じ MVNO は、最初の1年は「イチキュッパ」と盛んに CM していますが、2年目以降の高額化は「黙って」います。このあたりはチョッとブラックですねぇ。





ともあれ、丁度、LINE モバイルが 6月19日から通話定額始めて、フリープラン+通話定額で、2,080円/月額料金になります。ずーっとです。ヘンな1年限りの割引とかありませんし、もともと安い料金設定です。





LINE モバイルの LTE の速度は結構安定的に超速です。キャリアおよび、キャリアの子会社がサービスしている MVNO に匹敵する早さを、ず〜〜〜っとキープしているから驚きです。





なんでも日本法人の社長いわく、モバイルは赤字でもいい、質の高いサービスを心がける、と。





これを信じて、のりかえることにして、エントリーパッケージを購入しました。





これは、加入料 3,240円(税込)が、990円(税込)で済む、というものです。





その代わり、いま行われているキャンペーンのうちの「選べる夏のトリプルキャンペーン」対象外になりますが、もともとこのキャンペーンは興味ない内容なので、むしろ加入料が 2,250円ほど安くて済む方がメリットは大きい。





こういうエントリーパッケージは、ほかのいくつかの MVNO でもやっていて、中には ナンと 228円(3,240円に対しての価格)のところもあります。





アマゾンで売っていますので、是非ご活用くださればと思います。

ワタシは買い物がてら駅前のビックカメラで購入しました。


ただし、「格安」の加入料なので、キャンペーンなどの対象外のケースが多いです。





キャンペーン内容と照らしてパッケージ利用の可否を判断いただければ、と思います。





ワタシが加入している MVNO は、1GB・1,200円(通話SIM)/月額料金で、LINE モバイルに今、のりかえなくても同じ料金なので、11月までこのままでいくツモリです。➡ 結局、カミさんの分と一緒にのりかえました。

ワタシの方は、いつ解約しても解約料はかからないのですが、11月に固定ネットをのりかえようと思っていて(こちらは11月が更新期)その時点でモバイル割がなくなって +200円の 1,400円になりますから、LINE モバイルにすると 1,200円に戻ります。



と、いうわけでした。













Asterisk入門 -- その1


Asterisk を使うには・・・






よく使う、sip.conf ファイルと、extentions.conf を理解する必要があります。


sip.conf は基本的なことがらを定義するファイルで、内線番号の定義や、収容する回線の定義、レジスト定義などを行います。





例えば、ひかり電話を収容して(レジストして接続することを「収容」といいます)、その属性などを定義します。また、内線の定義もここで行います。



Raspberry Pi 3へAsteriskを構築する -- その1 に記載したものを例にして説明しましょう。







sip.conf ファイルの事例:





[general]              ; 全般的な定義をするセクションです。先頭に記載します
context=default     ; このセクションはデフォルトで扱うことを示します


                           ; デフォルト以外で扱うコンテキストを次行以降に記載します
bindport=5062      ; sipのポートを指定します。通常は5060で、この場合は記述省略可
bindaddr=0.0.0.0  ; sipのIPアドレスで 0.0.0.0 はすべてのアドレスを許可の意味


language=ja         ; 言語は日本語を使用する指定です
dsiallow=all          ; コーデックをすべて不許可にします


allow=ulaw           ; コーデックとして、μLaw(G.711.μ)を使用(許可)します
allow=alaw           ; コーデックとして、aLaw(G.711.a)を使用します
allow=gsm           ; コーデックとして、GSMを使用します

localnet=192.168.xxx.0/255.255.255.0 ; ローカルネットワークのアドレスとマスク

  
※ コーデックの記載順序が優先度を表します。ulaw,alaw,gsm のように記述


   しても構いません。


  ※ コーデックは、一般には上の3つを指定しておけば、問題ありません。


   sipのセッション確立時にお互いのコーデックを何にするかを決めています。


   ほかにも例えば、opus なんていま最強といわれるコーデックもありますが、


   残念ながら、まだメジャーではありませんので、相手合ってのことで、

   実際的に使われず、結局、μLaw、aLaw、GSMあたりに落ち着きます。

   GSMは2G携帯電話のコーデックとして有名です。

   μLawは、ひかり電話が使っています。

   「μ」とは記述せずに、「u」で代替しています(1バイト表現のためです)




[201]                  ; 内線201の定義を行うセクションです(内線番号は任意です)
type=friend         ; 発着信できる設定です。peerが発信専用、userが着信専用です
defaultuser=201  ; ユーザー名を201にします
secret=パスワード(任意); 内線201のパスワードを設定します


host=dynamic      ; ホストを特定しない場合に、こう指定します
canreinvite=no     ; noはRTP(音声)をAsteriskが中継します。yesは中継しません





  ※ パスワードは、乗っ取りなどの防止のため、できる限り長い(16文字以上


   くらい)、大小文字、記号、数字を含む文字列を推奨します。





ほかにもいくつか用意されたコンテキスト(各行の定義をこのように呼びます)がありますが、詳しくは、ネットで調べるか(http://www.st-asterisk.com/http://www.st-asterisk.com/ など)、できれば「高橋 隆雄の Asterisk 徹底活用ガイド」Kindle 版で約 3,000円、をオススメします。




この本は大きな図書館には置いてあるかもしれません(?)。私の近隣では船橋市に1冊だけあり、居住する市の図書館が取り寄せてくれましたけど。





高橋 隆雄氏は、日本における Asterisk の神様のような方です。





ひかり電話を収容するには、光ルーターの「電話設定→内線設定→内線番号・編集」で指定した内容を次のように記述します。


これは、FUSION や、ブラステル、050Plus などの収容でも同様ですが、050Plus はチョット特殊で、コンテキストも TLS を指定する必要があります。





register => 光ルーターの内線番号:パスワード:ユーザID@hikari-denwa/200





のように記述します。これを [general] セクションの中に記述します(最初の内線コンテキストのセクション、事例では [201] セクションとの間)に記載します。





「=>」は Asterisk 特有の記述の仕方で、上例では、「レジストは以下を行います」の意味になります。



また、ひかり電話のコンテキストは次のように記述します。



[hikari-denwa]

type=friend

context=default

secret=パスワード

bindport=5062

username=ユーザID

fromuser=3

host=192.168.xxx.yyy               ; ひかり電話を設定した光ルーターのアドレス

fromdomain=192.168.xxx.yyy   ; (同上)

insecure=port,invite                ; port: どのポートも受け入れる、invite: 着信時認証不要

dtmfmode=inband                  ; inband: 音声チャネルでプッシュトーンを流す

disallow=all

allow=ulaw

allow=alaw

allow=gsm





「hikari-denwa」は任意のSIPサーバー名になります。この名前は、extensions.conf で


発信時の sip サーバーの指定に使います。


その後の番号「200」は、エクステンション番号といい、extensions.conf の中で紐付きます。記載しない場合は、特殊なエクステンション番号「s」と結び付きます。
















2017年6月24日土曜日

Raspberry Pi 3へAsteriskを構築する -- その1


Raspberry Pi 3 に Asterisk (Free-PBX)をインストールしてみる




開発環境に必要(と思われる)ものをインストールします。

xxxx部分は必須で、あとは不明ながら入れると安心なものです。



 # apt-get update

 # apt-get install g++  libncurses5-dev  uuid-dev  libxml2-dev subversion sqlite3 libsqlite3-dev libssl-dev ncompress autoconf automake  libjansson-dev libopus-dev

 # apt-get install bison libnewt-dev  doxygen

 # apt-get install bluetooth libbluetooth-dev

 # apt-get install chkconfig



chkconfig は最新版ubuntuでは sysv-rc-confに代わっていますが、Raspbianでは使えます。Raspbian Jessie PIXEL 構築時にインストール済みにしています。



ディレクトリを移動して、安定版の asterisk-14-current.tar.gz をダウンロードし解凍します。



 # cd /usr/src

 # wget

 # tar zxvf asterisk-14-current.tar.gz



解凍された asterisk のディレクトリを確認します。



 # ls

 # cd asterisk-14.0.2  ➡  そのディレクトリに移動します。



作成作業に入ります。



 # ./configure

 # make menuselect



メニュー画面が現れますので、「add-ons」→「chan_mobile」を選びます。

他にも、音声ファイルを選んで「save & exit」で終了します。



 # make ← 約20分くらいかかります。

 # make install



サンプルファイルをインストールして、自動起動を設定します。



 # make samples

 # make config

 # chkconfig asterisk -list

    asterisk 0:off 1:0ff 2:on 3:on 4:on 5:on 6:off



のように結果表示されます。



試しに sip.conf と extensions.conf をleafpadで編集して、基本動作できることを確認します。まず、バックアップをコピーして取っておきます。



 # exit

 # cp /etc/asterisk/sip.conf  /etc/asterisk/sip.conf.bak

 # cp /etc/asterisk/extensions.conf  /etc/asterisk/extensions.conf.bak

 # leafpad /etc/asterisk/sip.conf



sip.conf はバックアップを取りましたから中身をすべて消して、とりあえず以下のようにして Asterisk の動作確認をします。



[general]

context=default

bindport=5062

bindaddr=0.0.0.0

language=ja

dsiallow=all

allow=ulaw

allow=alaw

allow=gsm

localnet=192.168.xx.0/255.255.255.0



[201]

type=friend

defaultuser=201

secret=パスワード(任意)

host=dynamic

canreinvite=no



以下 [202] [203] も同様に編集



extensions.conf も、最低限の動作確認の設定をしてみます。



[default]

exten => 201,1,Dial(SIP/201,30,r)

exten => 201,n,Hangup



exten => 202,1,Dial(SIP/202,30,r)

exten => 202,n,Hangup



exten => 203,1,Answer()

exten => 203,n,Playback(hello-world)



これにより、内線201と202を相互に呼び出しができます。

スマホ2台にソフトフォンをインストールして、それぞれ 201、202 をクライアントにし、お互いにダイヤルしてみて内線同士が通話できることを確認します。

203 を呼び出すと、喋った内容をオウム返しに再現してくれます。



ここまでの作業は簡単でしょ?



これでフリーなPBXをインストールできたわけです。

引き続き、ひかり電話や、FUSION、ブラステルなどを収容して、内線設定も家族で使えるように、とか、留守電も設定して、とか、FAXも入れちゃえ、なんてことをやってみたいと思います。



その2 に続きます。






2017年6月22日木曜日

Asteriskとは・・・

Asterisk は世界的に広く使用されているフリー PBX のソフトウェアです。



国内でもファンが沢山いて、事例がネットに多く掲載されています。

この事例は結構ありますので参考になさってください。



できることは、それこそ工夫次第ということですが、主な使い方は次のようなものです。



・ひかり電話やIP電話を収容して、スマホ子機を内線として使えるようにする。

・内線に転送する。

・内線を一斉呼び出しする。

・留守電機能を使えるようにする。

・FAX 機能を使えるようにする。

・時報サービス(ホテルなどの目覚ましサービスが代表的)ができる。

・外線転送できる。



などなど。



かわったところでは、かけホーダイの携帯電話を収容して、これを子機間で共有使用する、なんてこともできるのです。

そうすると、一家に1台かけホーダイの携帯電話があれば、家族皆んながかけホーダイをできるのです。





Asterisk には大きく二つの重要な設定ファイルがあり、sip.conf とextensions.conf です。

前者は、SIP にかかわること、レジストする IP 電話、子機などの定義を記述します。

後者は、実際にどういう風に呼び出したり、サービスを構成するか(ダイヤルプランといいます)を記述します。



これらのほかに、留守電では、Voicemail の設定や、それをメール通知するためのメーラーの設定ファイル、FAX 機能を使うためにソフトウェアモデムを構成して、実際に FAX の送受信を行うためのソフトウェアなどをアドオンして使うなどの使い方になっています。



結構遊べますし、実用面でもすこぶる安定的に使えますので、IT 技術者ならば、一度は是非に経験してみてはいかがでしょうか。PC(LINUX)さえあれば、そこにインストールして使うことができます。



私の構築した Asterisk サーバーは近いうちに掲載してみたいと思います。

乞うご期待! と、いうところです。






Ubuntu のLxde(軽量GUI)による軽量化

Lxde 化の前に、Unity デスクトップ環境で一通りインストールと設定を行います。


Lxde での設定等は結構面倒なことがあって、却って時間がかかるので、Unity 上でできることは先にやっておいた方がいいでしょう。Lxde 化は最終段階で行います。


【Macでの作業】 LiveUSB 作成

  ubuntu ダウンロード公式サイト https://www.ubuntulinux.jp/download/ja-remix

  から ubuntu-ja-16.04-desktop-amd64.iso をダウンロード。
  unetbootin.app を起動して .iso を LiveUSB として作成します。


【インストール先 PC(Dynabook ss RX1)での作業】


1. esc + 電源ボタン。次に F1 キーを押して BIOS を起動しブート順序を USB->HDD

 とします。

  USB1 に LiveUSB を差し込んで電源を押すと unetbootin の画面になるので

 「Install Ubuntu」を選択。

2.「ようこそ」画面で「日本語」を選択して続ます。

3.「ubuntuのインストール中にアップデートをダウンロードする」をチェックオフし、

 「グラフィックス、WiFi 機器、Flash、MP3 やその他のメディアに必要なサード・

 パーティーソフトウェアをインストールする」にチェックオンして続けます。

4.「インストールの種類」画面で、「ディスクを削除して Ubuntu をインストール」を

 選択し、「インストール」します。

5. エリア画面はデフォルトのまま続けます。

6.「キーボードレイアウト」はデフォルト(日本語)のまま続けます。

7. ユーザ名「abcdefgh」、パスワード「12345678」を入力して続けます。

8. パッケージのインストールが始まります。

 14分程(HDD だと 20分)でインストール完了し、再起動を促されます。

9.「今すぐ再起動」し、電源が落ちたときに USB を外します。

 ※ 外すタイミング(誤ると中途半端にブートが中断したり、再リブートしたりします)




【起動後のセッティング】


1. ソフトウェアのアップデート

 Dash で「so」と入力して、「ソフトウェアの更新(Aに ◯マーク。Apple Storeの

 ようなマーク)」を検索し、起動します。
 起動後、更新するかどうかを問われるので「更新」します。

 ※「ソフトウェアセンター(Ubuntu Software)」からの更新ではうまくいきません。


  アップデートは大体うまくいくはずですが、万一うまくいかない場合、appstream

  にバグがあるので下記を実行します。
  この場合 appstreamcli が起動していないかをシステムモニターで確認して、起動し

  ていれば終了します。

    cd /tmp && mkdir asfix
    cd asfix
    wget https://launchpad.net/ubuntu/+archive/primary/+files/appstream_0.9.4-1ubuntu1_amd64.deb
    wget https://launchpad.net/ubuntu/+archive/primary/+files/libappstream3_0.9.4-1ubuntu1_amd64.deb
    sudo dpkg -i *.deb



  その後、改めて Dash から「ソフトウェアの更新」を実行します。

  更新が完了したら再起動し、「Ubuntu Software」を開いて、「更新」タグで更新

  を確認します。


2. 不安定な Ubuntu Softare に換えて、安定した Ubuntu Software Center にします。

 「Ubuntu Software」で「ubuntu」と検索し、「Ubuntu Software Center」を

 インストールします。


3. 余分なソフトウェア(ゲームなど)を削除します。

 「Ubuntu Software Center」で、「インストール済み」から不必要なソフトウェア

 を削除します。
 「Ubuntu Software」からの削除は実際には削除されているが、インストール済み

 リストには残ったままとなるので、「Ubuntu Software」では削除しません。


4. ファイヤーウォール 

 Ubuntu Software Center から gufw をインストールします。
 起動して、Status をオンにします。

















 ルールを追加する -> ルールをクリック -> 「+」で入力欄に「smb」と入力し、
 「追加」を押して、「閉じる」を押します。 






5. メニューの追加

 ① 類似の desktop を流用して編集します。

   例:gnome-control-center を作る場合、類似の desktop をコピーします。

    $ sudo cp /usr/share/applications/{credentials-preferences.desktop,gnome-control-center.desktop}

 ② これを編集します。

    $ gksu gedit /usr/share/applications/gnome-control-center.desktop

     [Desktop Entry]
     Name=gnome-control-center
     Comment=gnome-control-center
     Exec=env XDG_CURRENT_DESKTOP=GNOME gnome-control-center
     Icon=credentials-preferences
 ←後で置き換えるので、とりあえずこのまま。
     Type=Application
     StartupNotify=true
     Categories=GNOME;Settings;DesktopSettings;

 ③ 保存して終了します。

 ④ メニューに現れているのを確認します。

 ⑤ menulibre を起動して、編集を完成させます。

   このアプリケーションのアイコンは適当なものを探して置き換えます。
   メニュー上のカテゴリーの位置づけを決めます(上下させる)。


6. ssh のインストール

   # apt-get install openssl-server

 設定ファイルの編集

   # leafpad /etc/ssh/sshd_config

 28行目「PermitRootLogin yes」➡「PermitRootLogin no」にしてroot権限での

 ログイン不可とします。
 ファイヤウォールでローカスホストからのアクセスを許可設定します。

   # ufw allow proto tcp from 192.168.xxx.0/24 to any port 22

 Macからログインしてみます。

   $ ssh abcdefgh@192.168.xxx.yyy ; xxx.yyy は PC のIPアドレス。


7. rootのパスワードを設定します。

   # passwd root

 まだ、未設定の場合は、新規に設定するパスワードをたずねてくるので、「........」(任意)
 を設定、再入力確認に同じパスワードを設定します。


8.「設定」を開きます。

 すべての設定アイテムを適切な内容に設定する。
 言語サポートを開いた場合、日本語環境に不足があると自動的にアップデートされます。
 設定変更は、「テキスト入力」、「画面の明るさとロック」、「外観」、「言語サポート」、
 「ディスプレイ」、「プリンター」の接続設定と印刷確認など。


9. ファイラーのフォルダ名を英語表記にします。

 ターミナルから

   $ env LANGUAGE=C LC_MESSAGES=C xdg-user-dirs-gtk-update


 実行するとダイアログが表示されるので「Update Names」ボタンをクリックします。
 一旦ログアウトし、再ログインすると再びダイアログが表されるので、
 「次回から表示しない」をチェックし、「古い名前のままにする」をクリックします。


10. ゲストセッションを無効にする。

  以下のコマンドを実行し、再起動するとゲストセッションが無効化されます。

   $ sudo sh -c ‘printf “[SeatDefaults]¥nallow-guest=false¥n” > /usr/share/lightdm/lightdm.conf.d/50-no-guest.conf’


11. updatedb の無効化

  updatedb は毎日1回、すべてのファイル、フォルダをチェックして DB に名前を書き込む
  ようになっています。
  これは著しく HDD をアクセスするので、負荷が上がり、HDD の寿命にも影響するので、
  無効化します。

   $ sudo chmod 644 /etc/cron.daily/mlocate


12. Gimpのインストールとスキャナーの動作確認

  Ubuntu Software Center で Gimp を検索し、インストールします。
  同じく、xsane もインストールして、Gimp からスキャンニングできることを確認。
  ファイヤウォールで、スキャナーポートがブロックされていることがありますので、
  これを許可設定します。


13. ブラウザとして、Chrome をインストール、起動確認し、Dock に登録します

 (省略可能)

  Firefox で「Chrome」を検索、Google のサイトからダウンロード、インストール

  します。
  ログインすれば、同期されます。


14. Thunderbird を Dash で起動確認し、Dock に登録します。

  メールアカウントを登録します。


15. Libreoffice の最新化

  ターミナルから

    $ sudo add-apt-repository ppa:libreoffice/ppa
    $ sudo apt-get update
    $ sudo apt-get dist-upgrade


  アップデートの結果、不要になったファイルを削除。

    $ sudo apt-get autoremove


  ※ ここでポイントは、apt-get updateの後にapt-get dist-upgradeを行うことです。 
    upgradeは全く削除されることなく、dist-upgradeは必要あらばファイルを削除する
    可能性があるわけです。

    今回、LibreOfficeの5.1..xから5.2.xへのアップグレードには、いくつかのファイル
    が削除される必要もあるので、dist-upgradeを利用することとなります。


16. 「設定->言語サポート」で Libreoffice 更新後の日本語環境を最新化します。


17. Google Drive を使えるようにします。


 ① gnome-control-center をインストールします。

   $ sudo apt-get install gnome-control-center

 ② これをターミナルから起動

  ( $ XDG_CURRENT_DESKTOP=GNOME gnome-cpntrol-center)。

 ③ 「オンラインアカウント」を開いて、「オンラインアカウントの追加」をクリック。

 ④ リストの中から「Google」を選択。

 ⑤ Google へのログインと、許可。

   これでファイラーから使えるようになっているはずです。


18. Dropbox を使えるようにする。

  Dropbox のサイトから ubuntu 用のアプリをダウンロード、ダブルクリックで
  Software Center が開き、インストールできるようになります。
  「インストール」ボタンをクリックしてインストーラーをインストールします。
  Dash からアプリケーション Dropbox を起動すると、インストールが始まります。
  画面の指示に従い、インストールします。
  下記のやり方でもできますが、ファイル名などが変更されない場合が
  あるので、Dropbox のダウンロードサイトで確認します。

   $ cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -

   新規作成した.dropbox-distフォルダから Dropbox デーモンを実行する。

   $ ~/.dropbox-dist/dropboxd

  /home/ユーザー名 に Dropbox フォルダが作成されているはずです。


19. LXDE と Lubuntu デスクトップ

  軽量デスクトップ環境の一つである、LXDE と Lubuntu をインストールします。

   $ sudo apt-get install lxde
   $ sudo apt-get install lubuntu-desktop


  再起動して Lubuntu にログイン、その後、再々起動して ubuntu から Lubuntu を
  削除します。

   $ sudo apt-get remove lubuntu-desktop
   $ sudo apt autoremove

  再び、再起動し、LXDE を選択してログインします。
  ログアウトができないときは

   $ sudo apt-get install lxsession-logout
  を実行します。


20. メニューエディターをインストールします。

  Synaptic パッケージマネージャで menulibre をインストールし、
  起動してメニューを編集します。
  使わないソフトウェアをメニューに非表示にしたり、カテゴリーを変更したりします。
  menulibre は非常に便利ですが、若干、動作がヘンなところあります。
  例えば、突然「システムツール」が消える、「Debian」の中のアプリケーション群
  が消える等々・・・
  「システムツール」が消えても、中のアプリケーションは「設定」の最後にそっくり
  移っていますからご安心を。
  壊れたメニューの復活は、

   ~/.config/menus/ 配下のファイル

  をすべて削除すると復活します(lxde-applications.menuが復旧)。
  メニューを開いて復活を確認します。

  なお、メニューのカテゴリーは

   ~/.config/menus/lxde-applications.menu

  アプリケーションは

   /usr/share/applications に、「〜.desktop」
  というファイルで属性や実行パスを含んでいます。

  

21. pdf エディター


 ① 文字、レイアウト、の追加・削除などの編集用です。

   Libreofiice Draw で pdf ファイルを読み込み編集できます。
   pdf でエキスポートすれば編集済みとして保存されます。
   Mac でも Libreoffice Draw でできますので互換があります。
  (私の場合、Mac では skim を多用してきましたが、これからは Draw にします)

   ※ skim は Mac ではビューワーとして位置づけることにしました。

 ② 複数ページの順序変更やサイズ、向きの変更、これも Draw でできます。

   pdf shuffler を使ってもできますが。


22. Mac と共通のアプリケーション

  atom: テキストエディター(Mac 版に比べて少々動作が重い)

   $ sudo add-apt-repository ppa:webupd8team/atom
   $ sudo apt-get update
   $ sudo apt-get install atom


  atom を起動して、「設定」を開き「+install」で検索し、「japanese-menu」と、

  「auto-encoding」を組み込みます。


  テキストエディターは同じアプリケーションである必要性はありません。


以上で、一通り、LXDE が快適に使える環境となったはずです。
Mac とほぼ同じように使えます。
onenote の編集やWebページのキャプチャーはブラウザからログインして使います。

起動時間とシャットダウン時間

 HDD  50s    10s

(WindowsVista HDDの場合: 起動 2分 以上、シャットダウン 30s。

HDDアクセスがおさまるまで 5分以上かかる状態)

 SSD  15s程度  5s以下

動作はlxdeはすごくキビキビしてて、まったくストレスがない。


23.自動起動のチェックと変更

  端末から以下のコマンドを実行します。

   $ sudo sysv-rc-conf

  次のような画面になります。












この中で [X] がサービスレベルに応じた自動実行対象を示します。

  空欄は自動実行対象外を示しています。

  変更は当該箇所にカーソル移動して、 space キーで [X] [ ]を切り替えます。



※※ より便利にするために


1. シャットダウンに妙に時間がかかるケースで、10程度で終了するには?

   $ sudo sed -i 's/#DefaultTimeoutStopSec=90s/DefaultTimeoutStopSec=10s/g' /etc/systemd/system.conf

  元に戻すには?

   $ sudo sed -i 's/DefaultTimeoutStopSec=10s/#DefaultTimeoutStopSec=90s/g' /etc/systemd/system.conf


 この設定を行った後にsystemdがアップデートされた場合、ソフトウェアの更新を実行

 すると、変更されている '/etc/systemd/system.conf' を最新バージョンの設定ファイ

 ルで置き換えますか? というダイアログが表示されるので「置き換える」ボタンを

 クリックしてアップデートした後、再び上記の設定を実行します。


2. ファイル・ディレクトリ共有

  以下を端末から実行

   $ sudo su             suモードに入る
   # mkdir /home/share      共有するディレクトリを作成
   # chmod 777 /home/share   フルアクセス属性を設定
   # gedit /etc/samba/smb.conf  sambaの設定ファイルをエディターで開く

  25行目:以下2行を追加

     unix charset=UTF-8
     dos charset=CP932


  30行目:必要に応じて変更

     workgroup=WORKGROUP

  51行目:コメントを解除してアクセス許可IP(群)を追記

     interfaces=127.0.0.0/8 192.168.xxx.0/24

  58行目:コメント解除して追記

     bind interfaces only=yes
     map to guest=Bad User


  最終行に追記

     [Share]          任意の共有名称を指定
      path= /home/share   共有フォルダへのパスを指定
      writable= yes      書き込み可
      guest ok= yes       ゲストユーザ許可
      guest only= yes      すべてゲストとして扱う
      create mode= 0777    ファイル作成をフルアクセス属性とする
      directory mode= 0777  フォルダ作成をフルアクセス属性とする
      share modes= yes     複数のユーザが同一ファイルアクセス時に警告

  保存して、geditを終了。

   # systemctl restart smbd    sambaの再起動
   # exit             suモードから抜ける
   $



以上です。





   


OpenVPNのインストールと設定

Raspberry Pi 3にOpenVPNサーバーを構築しました。





外で、ひかり電話を使うために、Asterisk で内線設定したスマホ子機をイントラネットにつなぐ必要があったためです。



ポートに穴を開けずに安全につなぐには、VPNが一番です。



最初は、光ルーターの VPN を使っていましたが、すぐに切れて使い物になりません。

常時接続にするにはスマホの root化が必要でしたが、これは抵抗がありました。



OpenVPN なら常時接続できる、ということでこれを構築したわけです。



最終的には、認証用のファイルを dd-wrt化したルーターに転用し、現在はこのルーター上で OpenVPN は動作していますので、Raspberyy Pi 3 上の OpenVPN サーバーは未起動状態にしてあります。







dd-wrt ルーターがなければ、Raspberry Pi 3 でもかまいませんが、我が家の場合、Raspberry Pi 3 には Asteriskが構築されていて、これは単独で動作するようにしたかったので、OpenVPN は dd-wrt ルーターに移しました。





もう1台、Raspberry Pi を用意してこれに構築しても結構です。





なぜ分けたかというと、セキュリティ上、万一いずれかのサーバーに侵入を許してしまっても、ほかのサーバーへの波及を防止するためです。



1.インストール



 # apt-get update

 # apt-get install openvpn easy-rsa libssl-dev openssl



2.証明書作成用ディレクトリの作成



 # make-cadir /etc/openvpn/easy-rsa

 # cd /etc/openvpn/easy-rsa



3.証明書作成用の環境変数の書き換え



このディレクトリ内に var というファイルがありますので、この中の下記部分を

書き換えます。



 EXPORT KEY_COUNTRY=”JP”        # 国:適当に

 EXPORT KEY_PROVINCE=”Chiba”     # 都道府県:適当に

 EXPORT KEY_CITY=”K-Cty”        # 市町村:適当に

 EXPORT KEY_ORG=”Home”          # 組織:適当に

 EXPORT KEY_EMAIL=”abcd@gmail.com”     # メールアドレス:適当に

 EXPORT KEY_OU=”PersonalUnit”      # 組織単位:適当に

 export KEY_NAME=”abcd” ← 任意



変更したファイルの読み込み。



 # source ./var   ➡ 次の ./clean-all の実行を促される。

 # ./clean-all



サーバーの秘密鍵、証明書の作成。



 # ./build-ca

 # ./build-key-server server ➡ サーバ名を入力(任意)



途中で、入力待ちが何ヶ所かありますが、すべて空欄のまま、または [y/n] はy を入力

して「enter(return)」



次に、Diffie Hellmanパラメーターを生成します。



 # ./build-dh ➡ 4〜5分かかります。



クライアント、サーバーに共通の秘密鍵を生成。



 # cd ./keys

 # openvpn --genkey --secret ta.key



ハイフンは2つ続けて記述 「- - g e n k e y」「- - s e c r e t」

クライアント鍵の作成。

一つ上のディレクトリに戻る。



 # cd ..

 # ./build-key-pass client ➡ クライアント名を入力(任意)



途中、以下のPEMパスワードの入力を促されるので、パスワード(任意)

「abcdefgh」を入力



 Enter PEM pass phrase:abcdefgh



確認のため、再入力



 Verifying – Enter PEM pass phrase:abcdefgh



これ以外は、すべて空欄のまま、または [y/n] はy を入力して「enter(return)」



作成したファイルを openvpn ディレクトリにコピー



 # cp ./keys/ca.* client.* ta.key dh2048.pem server.* /etc/openvpn



同じく、ca.* , client.* , ta.key を端末にインストールするために、共用ディレクトリ

にもコピー。



 # cp ./etc/openvpn/ca.* client.* ta.key /home/share



コピー先の /home/share のファイル群の権限属性を変えます。



 # chmod 777 /home/share/*



Mac を通じて、端末側にコピーします。



次に、/etc/openvpn/server.conf を以下の内容で編集します。



 port 443 ➡ 接続ポート番号(通常は 1194 ですが、443 がいいと思います)

 proto udp ➡ プロトコルはudp(tcpでも可)

 dev tun ➡ tun を定義

 ca ca.crt ➡ 証明書の指定(ディレクトリは同じ /etc/openvpn にあれば省略可)

 cert server.crt ➡ サーバ証明書

 key server.key ➡ サーバの鍵

 dh dh2048.pem ➡ 暗号の指定

 server 10.8.0.0 255.255.255.0 ➡ サーバの仮想ip とネットマスクを指定

 ifconfig-pool-persist ipp.txt ➡ クライアントに払い出したip のリストを入れておく器

 push "route 192.168.xxx.0 255.255.255.0" ➡ イントラネットのアドレスとネットマスク

 push "redirect-gateway def1 bypass-dhcp" ➡ トラフィックをすべて VPN 経由にする指定

 push "dhcp-option DNS 192.168.xxx.yyy" ➡ DNS サーバを指定(ローカル)

 push "dhcp-option DNS 8.8.8.8" ➡ DNSサーバを指定(グローバル)

 tls-server ➡ TLS認証するサーバとして有効化

 tls-auth ta.key 0 ➡ TLS認証の鍵と方向(0: サーバ、 1: クライアント)

 cipher AES-256-CBC ➡ 暗号化の種類

 user nobody ➡ 接続断時のユーザ属性を特権にしない

 group nogroup ➡ 同じく、ユーザグループ属性も特権にしない

 ;client-to-client ➡ クライアント間の通信をOK にするなら、コメントオフにする

 duplicate-cn ➡ 同じクライアント証明、鍵などを使用して複数のクライアント接続を許可

 persist-key ➡

 persist-tun ➡

 log openvpn.log ➡ ログファイル名

 log-append openvpn.log ➡ ログは追記方式

 status openvpn-status.log ➡ ステータスファイル名

 verb 3 ➡

 keepalive 10 120 ➡ キープアライブの間隔と時間





4.サーバーのりスタート



server.conf の保存後、openvpn を再起動します。



 # service openvpn restart





5.ファイヤウォールとフォワーディング



/etc/sysctl.conf の以下の行のコメントアウトを外します。



 ;net.ipv4.ip_forward = 1  net.ip4.ip_forward = 1



設定の反映のため、リスタートします。



 # sysctl -p



次に、仮想ネットワークから実ネットワークへのマスカレードを設定します。



 # iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE



設定内容を保存します。



 # iptables-save > /etc/iptables/my_tables



次に、IPv6を処理しない設定をします。



 $ gksu gedit /etc/default/ufw



7行目の 「IPv6=yes」 を 「IPv6=no」に変更します。



下記の設定を ufw で行います。



 # ufw default deny

 # ufw allow in from 192.168.xxx.0/24 to 192.168.xxx.vvv ← xxx.vvvはOpenVPNサーバーのアドレス

 # ufw allow out from 192.168.xxx.vvv to 192.168.xxx.0/24

 # ufw allow in from any to 192.168.xxx.vvv port 443 proto udp ➡ dd-wrtでOpenVPNの場合、不要

 # ufw allow in on tun0 from 10.8.0.0/24 to 10.8.0.0/24 port 

  5060:5070,10500:10550 proto udp

 # ufw allow out on tun0 from 10.8.0.0/24 to 10.8.0.0/24 port

  5060:5070,10500:10550 proto udp

 # ufw allow in on tun0 from 10.8.0.0/24 to 192.168.xxx.vvv port

  5060:5070,10500:10550 proto udp

 # ufw allow out on tun0 from 192.168.xxx.vvv to 10.8.0.0/24 port

  5060:5070,10500:10550 proto udp

 # allow out from 192.168.xxx.vvv to any



ポート 5060~5070,10500~10550 は SIP/RTP を通すためです。

SIP サーバーがなければ設定不要です。



ufw のステータスで、設定を確認します。



 # ufw status numbered



ufw の設定結果は /etc/ufw/user.rules に格納されています。





6.HGW(ホームゲートウェイ)の設定



外部からの443/udp宛のパケットをOpenVPNサーバーに向けるため、

静的マスカレードの設定。



 宛先アドレス     : 192.168.xxx.vvv

 対象アドレス     : 自分のWAN側アドレス

 対象プロトコル  : udp

 宛先ポート   :443

 対象ポート   :443



次に、内部とのパケットを openvpn をゲートウェイとして行うため、

静的IPルーティングの設定



 宛先アドレス     : 10.8.0.0/24

 ゲートウェイ     : 192.168.xxx.vvv





7.ログローテーションの設定



以下のファイルを新規に編集。



 $ gksu gedit /logrotate.d/openvpn

  /var/log/openvpn {

  missingok

  notifempty

  sharedscripts

  postrotate

  /etc/init.d/openvpn restart 2 >&1 > /dev/null ll true

  endscript

  }



保存します。





8.クライアントの設定(以下は「OpenVPN クライアント」の場合、「OpenVpn for Android」は別のやり方)



sambaで共有したディレクトリに以下のファイルをコピーして、ファイル属性を解除しておく。



 # cd /etc/openvpn/

 # cp ca.* client* ta.key /home/share

 # chmod 777 /home/share/*



これらのファイルを編集。

geditで新規に以下のファイルを作成。



 tls-client

 key-redirection 1

 remote 12345678.dip.jp ← DDNSサービスに登録時のユーザー名

 cipher AES-256-CBC

 port 443

 proto udp

 <ca>

  ➡ ca.crtの BEGIN CERTIFICATE 〜〜 END CERTIFICATEをコピペ

 </ca>

 <cert>

  ➡ client.crtの BEGIN CERTIFICATE 〜〜 END CERTIFICATEをコピペ

 </cert>

 <key>

  ➡ client.keyの BEGIN CERTIFICATE 〜〜 END CERTIFICATEをコピペ

 </key>

 <tls-auth>

  ➡ ta.keyの BEGIN OpenVPN Static key V1 〜〜 END OpenVPN Static key V1をコピペ

 </tls-auth>



編集したら、client.ovpn というファイル名で保存。





9.端末の設定



Macからsambaで接続して、「client.ovpn」を取り出し、Google Drive にコピペ。

端末で Google Drive を開き、このファイルをダウンロードします。



Google Drive 上のこのファイルはコピペ後にセキュリティ上、念のために削除しておきます。



端末で OpenVPN クライアントを起動し、このファイルをインポートします。



WiFi を切断してモバイル LTE にして、パスワード:abcdefgh を設定し、connect でサーバーとの接続を確認してOK。





10.Androidでの接続時



  xx:xx GDG:SIOCGIFADDR(lo) failed



というエラーがでるが、これはlo がMACアドレスを持たないことからエラーになっています。

Androidのバグっぽい。



実際は無視してかまいません。