SSLサイト安全性評価の上げ方

2016/12/20 技術系 投稿者:

ssl_01-https_key

あなたのSSLサイトは安全ですか?

正しいサーバー証明書を利用していたとしても、Webサーバーのアップグレードが正しく行われていなかったり、利用する暗号化の設定が古かったりすると、脆弱性を突かれてしまいせっかくのSSLの目的(通信の暗号化)が果たせなくなります。
設定時に問題はなくても、後から脆弱性が見つかるということがありますので、機密性・安全性を確保するために運営しているSSLサイトの定期的な安全性のチェックは必須です。

しかし、SSLサイトが正しく機能するための要素は複数あり、一般的なサイト管理者には理解しにくい要素も少なくありません。

そこで便利なのが、SSLサイトの安全性評価を簡単に行えるこちらの Qualys SSL LABS SSL Server Test です。Qualys SSL LABS SSL Server Test は誰でも無料で利用できます。

 Qualys SSL LABS SSL Server Test https://www.ssllabs.com/ssltest/

ssl_02

評価項目は、グラフ表示の「Certificate(証明書)」「Protocol Support(サポートされているプロトコル)」「Key Exchange(鍵交換)」「Cipher Strength(暗号強度)」で、100点満点で表示されます。

詳細評価項目について

評価に追加情報がある場合は more_info のリンクがあります。詳細評価は以下に分類されています。

詳細評価項目

評価に追加情報がある場合は more_info のリンクがあります。詳細評価は以下に分類されています。

  • Authentication(証明書評価)

    証明書そのものの評価です。証明書の設定は含まれません。
    著名なCAの証明書を利用していれば100%になるはずです。

    • Server Key and Certificate #1 証明書と秘密鍵
    • Additional Certificates (if supplied) 中間証明書
    • Certification Paths 証明書のパス
  • Configuration(各種設定)

    Configuration(各種設定)はサーバーのバージョン、セキュリティパッチ、暗号化手法などです。
    ここで問題がある場合は、セキュリティ情報などを確認して修正する必要があります。

    • Protocols プロトコル
    • Cipher Suites 暗号アルゴリズムリスト
    • Handshake Simulation 接続確認
    • Protocol Details セキュリティと関係の深いプロトコル詳細
    • Miscellaneous その他

判定結果は、各項目別の結果の他にA+ ~ Fまでの8段階レベルでも表示されるのですが、今回はこちらの判定結果のレベルを代表的なセキュリティ設定を行うことで上げる方法についてご紹介したいと思います。
(なお、今回紹介する内容の設定を行うことでサイトの安全性が完全に守られるわけではございませんのでご注意ください)

SSLプロトコルについて

初めにSSLとひと言で言っても様々なバージョンがありますので、そちらについて紹介します。

SSLプロトコルの種類

略称 正式名称 開発元
SSL Secure Socket Layer ネットスケープコミュニケーション
TLS Transport Layer Security IETF

SSLプロトコル 各バージョンごとの概要

バージョン 安全性 概要
SSL1.0 × 最初のSSLとして設計したが、設計レビューの時点でプロトコルの脆弱性が発見されたため破棄されている。
SSL2.0 × SSL1.0の問題を修正して設計後、1994年にSSL2.0として発表。その後、いくつか脆弱性が発見されてSSL3.0が登場するが、未使用でもSSL2.0が有効な状態の場合に提示する最弱のアルゴリズムを使用させるダウングレード攻撃などを受ける可能性があるので、明示的に無効にする必要がある。
SSL3.0 × SSL2.0の問題を修正して機能追加も行い1995年にSSL3.0として発表。ただ、古くなってきている。CVE-2014-3566で脆弱性が発生したため明示的に無効にする必要がある。
TLS1.0 SSL3.0とTLS1.0の両者間には正確な互換性はないがほぼ同じ。CVE-2011-3389(BEAST)による一部脆弱性を含む。
TLS1.1 TLS 1.0からの変更点は、新しく発見された攻撃手法に対する耐性の強化が中心である。
TLS1.2 ハッシュのアルゴリズムにSHA-256が追加されたほか、ブロック暗号について、従来のCBCモードだけではなく、GCM、CCMといった認証付き暗号が利用可能となった。

上記の通り、SSLv1 / SSLv2 / SSLv3 は脆弱性があるので、 現時点で使用できるものはTLSv1以上となります。

暗号化スイートについて

サーバーでの設定で重要なのが、上記で説明したSSLプロトコルと暗号化スイートの指定になりますので、続いて暗号化スイートについての説明も行います。

暗号化スイーツの指定は、SSLCipherSuite の項目で行われ、下記のような形式で記述します。

SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

暗号方式の詳細

  • !は暗号スイートを使わせない
  • +は暗号スイートの追加

重要なのは、脆弱性が発見された下記の暗号化スイートを利用出来なくする設定を行うことです。

内容 設定 備考
40bitの暗号方式を削除 !EXP 米国輸出規制緩和により使用可能となった暗号化方式。非常に弱い
56bit, 60bitの暗号方式を削除 !Low 同じく非常に弱い
通信を暗号化しない方式を削除 !eNULL
通信の認証をしない方式を削除 !aNULL
匿名暗号方式を削除 !ADH 匿名なので削除
DSS(DSA)を削除 !DSS RSAと違って、「通信の暗号化」はカバーしてるが、「ユーザ認証」を行っていないため、暗号強度が低い
メッセージ認証符号にMD5を使用するものを削除 !MD5 MD5は選択プレフィックス衝突攻撃に対し脆弱性が存在します
PSKを削除 !PSK 基本的には使用しない
SRPを削除 !SRP 基本的には使用しない
暗号方式にRC4を使用するもの削除 !RC4 RC4は解読が容易になるようなアルゴリズムが存在するため危殆化しています
3DES暗号方式を追加 +3DES RC4を削除するとWinXP + IEで接続出来なくなるため追加

サーバーでの設定方法

①opensslのバージョンアップ

まず初めにopensslのバージョンを上げましょう。CentOSであればyumコマンドで簡単にバージョンを上げることが可能です。

# yum update openssl

②「SSLProtocol」と「SSLCipherSuite」の設定

続いて前述した「SSLProtocol」と「SSLCipherSuite」の設定を行います。ssl.conf内で下記の記述を行います。

SSLProtocol +TLSv1 +TLSv1.1 +TLSv1.2
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!EXP:!LOW:!aNULL:!eNULL:!ADH:!DSS:!MD5:!PSK:!SRP:!RC4:!3DES

上記の設定を行ったら、WEBサーバーをリスタートします。

最後に、Qualys SSL LABS SSL Server Test で実際にレベルが変わったか確認してみましょう。

まとめ

いかがでしたでしょうか?

冒頭でも記載しましたが、正しい設定を行っていないとせっかくの証明書を生かすことが出来ません。

話は少しそれますがGoogleが2014年にウェブマスター向けの公式ブログで、「HTTPS をランキング シグナルに使用します」というタイトルの記事を投稿したのをご存じでしょうか?

https://webmaster-ja.googleblog.com/2014/08/https-as-ranking-signal.html

これは、SSL化されたWebサイトをSEOの評価として優遇します(=HTTPSであることが、SEO上のプラスになります)というものです。
あくまで要素の1つとしているようで、今のところSEO的な影響度としてはそこまで大きくないようですが、常時SSL化も推奨され始めた今日、SEO目的での利用も増えることでSSLサイトは今後も増えていくものと思われます。

正しい設定でサイトの安全性を確保していきましょう。

カレンダー

    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
   1234
567891011
12131415161718
19202122232425
26272829   
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
1234567
891011121314
15161718192021
22232425262728
       
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
     12
3456789
10111213141516
17181920212223
24252627282930
31      
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
     12
3456789
10111213141516
17181920212223
242526272829 
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
    123
45678910
11121314151617
18192021222324
25262728   
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
   1234
567891011
12131415161718
19202122232425
262728    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
U・Iターン転職しませんか?
ブログ
Nedia What's up!
 HOME  ブログ

Googleの無料Webフォント「Noto Fonts」を試す

2016/12/13 サイト制作, 技術系 投稿者:

img_notofonts02

今まで何度かWebフォントについて紹介してきましたが、最近Googleの「Noto Fonts」なるものが良いらしいとのことですので、早速試してみたいと思います。
世界中の言語が用意されているフォントファミリーですが、今回はもちろん日本語を試してみます。

Webフォントのメリット・デメリットについては以前の記事で紹介しましたので省略します。

「Noto Fonts」とは?

GoogleとAdobeによって共同開発されたフォントで、改変や再配布も出来るApache Licenseでの提供とのことです。もちろん商用利用も可能です。
Noto Fontsという名前の由来は「no more tofu(もう豆腐はいらないよ)」から来ているらしく、Webサイト上で指定したフォントが表示できない場合に四角の記号のようなものが表示されることがあり、それを「tofu(豆腐)」と呼んでいることからだそうです。面白いですね。

早速使ってみよう

HTMLの記述でGoogleのサーバーから直接ブラウザーへフォントデータをダウンロードする方法と、Webサーバーへフォントデータをアップロードしてサーバー内で完結させる方法の2パターンがありますが、今回はいつも通り後者の方法で試してみます。

公式サイトからフォントデータをダウンロード

まずはNoto Fonts公式サイトに行ってみます。
前述の通り今回はフォントデータをダウンロードします。
色々な言語のものがありますが、日本語は「Noto Sans CJK JP」、115.5MBのデータサイズで、ダウンロードして展開すると141MBありました。漢字が多いのでそこそこのデータサイズになっています。(フォントの太さによって7ファイルありますのでその影響もあります。)

フォントデータをアップロードし、CSSへフォントの指定

フォントデータは「common/fonts/」へ配置し、CSSでフォントの指定を行います。7つの太さのうち、「Regular」を指定してみました。
HTMLは特に指定はありません。今回の文章は上で記述している『「Noto Fonts」とは?』の部分のテキストをそのまま使用します。

CSS

@font-face {
	font-family: "Noto Sans Japanese";
	src: url("../fonts/NotoSansCJKjp-Regular.otf");
}

body {
	font-family: 'Noto Sans Japanese', sans-serif;
	font-size: 20px;
}

使ってみて良かった点、悪かった点

img_notofonts03

良かった点

  • 使い勝手が良い
  • エイリアスがかかっていて見た目がキレイ
  • 個人的に游ゴシック体よりも好み

悪かった点

  • フォントデータサイズが大きいのでは?と感じる
  • 特にスマホでのパケット量やダウンロード(表示)までの時間がかかる
  • 明朝体が無い

まとめ

最近はWebフォントもかなり使いやすくなって、デバイス間での表示に差異が無くなることは大変喜ばしいことです。
しかし、スマホ表示において、「0.1秒でも早く!」が求められている昨今、見た目のためにデータ転送量や時間を使うのはいかがなものかと個人的には感じましたし、実際2回目以降キャッシュが効いてしまえば表示スピードも気になりませんが、初回表示にはワンテンポ遅れるような状態になります。

また、スマホ表示でのフォントの大きな問題として「Android端末では明朝体が使えない」ことがあげられます。
こちらを解決する手段としてWebフォントには期待したいところです。
(とは言いますが、Android端末が明朝体に対応すれば良いだけの話だと思います。)

と、Webフォントについて、今回を含め何度か試してはみたのですが、私個人としてはあまりしっくり来ないというか積極的に使っていこうという気になっていません。
「游ゴシック体」「游明朝体」のような、Webフォントよりも手軽な(と言うか従来通りの使い方の)共通フォントも出ていますので、正直なところ「Webフォントを使っていこうぜ!」な流れにはならないのではないかなと思いますが、いかがでしょうか?

カレンダー

    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
   1234
567891011
12131415161718
19202122232425
26272829   
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
1234567
891011121314
15161718192021
22232425262728
       
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
     12
3456789
10111213141516
17181920212223
24252627282930
31      
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
     12
3456789
10111213141516
17181920212223
242526272829 
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
    123
45678910
11121314151617
18192021222324
25262728   
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
   1234
567891011
12131415161718
19202122232425
262728    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
U・Iターン転職しませんか?
ブログ
Nedia What's up!
 HOME  ブログ

iOS 10のPPTP接続問題

2016/12/06 技術系 投稿者:

千本木です。

Appleから iOS 10やmacOS SierraにアップグレードするとPPTP接続が使えなくなるというアナウンスが今年7月に行われました。

Apple – iOS 10 および macOS Sierra にアップグレードする前に PPTP VPN の削除に備える

このアナウンス後、程なくしてiOS 10とmacOS Sierraがリリースされましたが、確かにPPTP接続は使えなくなってしまいました。

今回はこのPPTP接続のお話です。

AppleがPPTP接続をサポート対象外とした経緯

VPN接続は非常に便利な機能ですが、そもそも新バージョンのOSからAppleがPPTP接続をサポート対象外としてしまったのはなぜでしょうか。

それはPPTP接続で使用されている認証プロトコルMS-CHAPv2にセキュリティ上の脆弱性があり、これをAppleが問題視したようです。

YAMAHA – MS-CHAPv2の認証情報漏えいの問題に関する注意喚起について

iOS 10からのテザリングもできない

  • macOS Sierraを搭載したMacBook等からPPTP接続ができない
  • iOS 10を搭載したiPhone自体からPPTP接続ができない

上記についてはAppleのアナウンス段階から予想できたことだったのですが、意外なことに、iOS 10を搭載したiPhoneを使ってテザリングしたPCでもPPTP接続ができなくなってしまいました。

私の周辺でもiPhoneを使ってテザリングを行い、PPTP接続されている方が結構いらっしゃいましたが、OSをアップグレードした段階で接続できなくなったという話をよく耳にしました。

解決方法を考える

では、解決方法はないかを考えてみたいと思います。

AppleではPPTPに代わってL2TP/IPSec等のVPN接続方法を推奨しています。

どうにか設定で解決できないものかと色々設定してみましたが、結局PPTPではダメで、Appleの推奨する別のVPN接続方法に切り替える必要があるようです。

VPN対応ルータ自体を変更する

PPTP接続環境を構築している場合、ほとんどの場合がPPTP接続対応のルータを使用していると思いますので、これを交換してしまう方法です。

ちなみに当社ではYAMAHA製品を扱うことが多いのですが、L2TP/IPSecへの対応状況は以下の通りです。

L2TP/IPSecに非対応の製品

  • NVR500
  • NVR510

L2TP/IPSecに対応可能な製品

  • NVR700W
  • RTX810
  • RTX1210
  • RTX3500
  • RTX5000

別途OpenVPNなどでVPNサーバを立てる

サーバが立てられる環境であれば、OpenVPN等を使ってVPNサーバを立ててしまえば解決できますが、少し敷居が高いかもしれません。

またFortiGateなどのセキュリティアプライアンス製品が社内にある場合には、VPN機能をサポートしていて使える場合があります。

まとめ

ちなみにテザリングができないとお悩みの方は、あまり現実的ではないかもしれませんが、いっそのことAndroidやモバイルルータを使ってテザリングすれば解決ができます。

弊社ではL2TP/IPSec等への移行のサポートも行っておりますので、上記の問題でお困りの方は是非ご相談ください。

カレンダー

    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
   1234
567891011
12131415161718
19202122232425
26272829   
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
1234567
891011121314
15161718192021
22232425262728
       
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
     12
3456789
10111213141516
17181920212223
24252627282930
31      
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
     12
3456789
10111213141516
17181920212223
242526272829 
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
    123
45678910
11121314151617
18192021222324
25262728   
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
   1234
567891011
12131415161718
19202122232425
262728    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
U・Iターン転職しませんか?
ブログ
Nedia What's up!
 HOME  ブログ

YAMAHAルータの実機・検証 第19回 Luaスクリプト機能を利用しよう 4

2016/12/02 YAMAHA, 技術系 投稿者:

前回に続き今回もLuaスクリプト機能の利用を紹介します。これまでルータの状態を定期的にメールで通知したり、ネットワーク内にある特定のパソコンをpingで応答監視する設定を紹介しました。今回はルータに異常が発生した時に管理者へメールで通知するLuaスクリプトを紹介します。ルータの停止・故障は社内ネットワークに多大な影響を与えます。ルータの過負荷や設置場所の環境による熱暴走など事前に異常を感知することで障害を防いだり被害を最小限にとどめることが可能になります。

ネットワーク構成

今回のネットワーク構成は下記になります。
rtx1200-monitoring-1ルータの設定はパソコンからインターネットの閲覧やメールが利用できるようになっています。

ルータ設定内容

今回利用するRTX1200の設定内容です。

login password *
administrator password *
console character euc
ip route default gateway pp 1
ip filter source-route on
ip filter directed-broadcast on
ip lan1 address 192.168.0.1/24
pp select 1
 pp keepalive interval 30 retry-interval=30 count=12
 pp always-on on
 pppoe use lan2
 pppoe auto connect on
 pppoe auto disconnect off
 pp auth accept pap chap
 pp auth myname (ISPの接続アカウント) (ISPのパスワード)
 ppp lcp mru on 1454
 ppp ipcp ipaddress on
 ppp ipcp msext on
 ip pp mtu 1454
 ip pp secure filter in 1020 1030 2000
 ip pp secure filter out 1010 1011 1012 1013 1014 1015 3000 dynamic 100 101 102 103 104 105 106 107
 ip pp nat descriptor 1
 pp enable 1
ip filter 1010 reject * * udp,tcp 135 *
ip filter 1011 reject * * udp,tcp * 135
ip filter 1012 reject * * udp,tcp netbios_ns-netbios_ssn *
ip filter 1013 reject * * udp,tcp * netbios_ns-netbios_ssn
ip filter 1014 reject * * udp,tcp 445 *
ip filter 1015 reject * * udp,tcp * 445
ip filter 1020 reject 192.168.0.0/24 *
ip filter 1030 pass * 192.168.0.0/24 icmp
ip filter 2000 reject * *
ip filter 3000 pass * *
ip filter dynamic 100 * * ftp
ip filter dynamic 101 * * www
ip filter dynamic 102 * * domain
ip filter dynamic 103 * * smtp
ip filter dynamic 104 * * pop3
ip filter dynamic 105 * * netmeeting
ip filter dynamic 106 * * tcp
ip filter dynamic 107 * * udp
nat descriptor type 1 masquerade
tftp host any
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.0.101-192.168.0.200/24
dns server pp 1
dns private address spoof on

前回と同じインターネットに接続する一般的な設定になります。

ルータ監視スクリプト

今回もヤマハのサイトで公開されているLuaスクリプトを利用させて頂きます。
今回のLuaスクリプトはルータの状態を定期的にチェックし異常を検知した時に管理者にメールで異常を検知したことを通知します。今回、状態をチェックする項目は下記になります。

  • CPU使用率
  • メモリ使用率
  • 筐体内温度
  • PPインターフェース回線使用率(送信負荷、受信負荷)
  • IPマスカレードで使用中のポート数

下記の内容をメモ帳にコピーして「rtx1200-monitoring.lua」のファイル名で保存します。

--[[

  ●ルーターリソース監視スクリプト
  一定の監視間隔毎にルーターの状態を監視し、設定した閾値を超えたら管理者に
  メールを送信して知らせるスクリプトです。
  監視する情報は以下の通りです。
  ・CPU 使用率
  ・メモリ使用率
  ・筐体内温度(RTX1200, RTX3500, RTX5000, RTX1210)
  ・PP 側回線使用率(送信/受信)
  ・IP マスカレード使用ポート数

  各リソースの値が閾値を指定した回数だけ連続して超えた場合に、管理者にメール
  を送信します。その後、値が閾値を指定した回数だけ連続して下回った場合には、
  正常値に戻ったと判断します。設定値 down_mail を true に設定している場合には、
  正常値に戻った際にもメールを送信します。

  <説明>
  ・このファイルを RTFS か外部メモリに保存してください。
  ・本項目の config の設定では schedule at コマンドでルーター起動時に Lua スク
   リプトが実行されるように設定しています。
  ・スクリプトを停止するときは terminate lua コマンドを実行してください。
  ・再度、Lua スクリプトを実行する場合は lua コマンドで実行してください。
  ・★マークの付いた設定値は変更が可能です。

  <ノート>
 ・メールの送信失敗時に出力する SYSLOG レベルを指定可能です。
  SYSLOG のレベルを指定するには、log_level を設定してください。
  debug レベル、notice レベルの SYSLOG を出力するためには、それぞれ以下の設定
  が必要です。
   debug レベル ・・・ syslog debug on
   notice レベル・・・ syslog notice on
 ・本スクリプトファイルを編集する場合、文字コードは必ず Shift-JIS を使用してく
  ださい。

]]


--------------------------##  設定値  ##--------------------------------
-- 監視間隔(1 - 864000 秒)
idle_time = 60			-- ★

-- CPU 負荷率を監視する単位時間("5sec" or "1min" or "5min")
cpu_time = "1min"			-- ★

-- 監視する相手先情報番号(1 - 30)
peer_num = 1		-- ★

-- 使用状況を監視するIP マスカレードの NAT ディスクリプタ番号(1 - 2147483647)
nat_descriptor = 1-- ★

-- 各リソースの閾値(1 - 99)
th_tbl = {				-- ★
	cpu = 80,
	mem = 80,
	tmp = 40,  -- RTX1200, RTX3500, RTX5000, RTX1210
	snd = 80,
	rcv = 80,
	nat = 20
}

-- 連続で閾値を超えたら異常と判断する回数、または正常な状態に復帰したと判断する回数(1, 2 ..)
count = 1				-- ★

-- 正常な状態に復帰した場合にもメールを送るか否か(送る: true / 送らない: false)
down_mail = true		-- ★

-- メールの設定
mail_tbl = {				-- ★
	smtp_address = "(SMTPサーバのアドレス)",
	smtp_port = "587",
	smtp_auth_protocol = "plain",
	smtp_auth_name = "(アカウント名)",
	smtp_auth_password = "(パスワード)",
	from = "(送信元メールアドレス)",
	to = "(送信先メールアドレス)"
}

-- メールの送信に失敗した時に出力する SYSLOG のレベル (info, debug, notice)
log_level = "info"		-- ★

----------------------##  設定値ここまで  ##----------------------------


------------------------------------------------------------
-- 指定した単位時間のCPU使用率を取得するための検索文字列  --
-- を設定する関数                                         --
------------------------------------------------------------
function set_cpu_ptn(key)
	local ptn

	if (key == "5sec") or (key == "1min") or (key == "5min") then
		ptn = "(%d+)%%%(" .. key .. "%)"
		return ptn
	end

	return nil
end

------------------------------------------------------------
-- ルーターのハードウェアリソースの使用状況を取得する関数 --
------------------------------------------------------------
function rt_res_status(t)
	local rtn, str
	local cmd = "show environment"

	rtn, str = rt.command(cmd)
	if (rtn) and (str) then
		for k, v in pairs(t) do
			v.val = str:match(v.ptn)
			if (v.val) then
				v.val = tonumber(v.val)
			end
		end
	else
		str = cmd .. "コマンド実行失敗\r\n\r\n"
	end

	return rtn, str
end

------------------------------------------------------------
-- PP インタフェースの回線負荷率を求める関数              --
------------------------------------------------------------
function pp_load_info(num)
	local rtn, snd, rcv, str, n
	local t = {}
	local cmd = "show status pp " .. tostring(num)
	local ptn = "負荷%:%s+(%d+)%.%d+%%"


	rtn, str = rt.command(cmd)
	if (rtn) and (str) then
		n = 1
		for w in string.gmatch(str, ptn) do
			t[n] = w
			n = n + 1
		end

		if (t[1]) then
			rcv = tonumber(t[1])
		end
		if (t[2]) then
			snd = tonumber(t[2])
		end
	end

	return rtn, rcv, snd, str
end

------------------------------------------------------------
-- IP マスカレード使用ポート数を返す関数                  --
------------------------------------------------------------
function natmsq_use_status(id)
	local rtn, str, num
	local cmd = "show nat descriptor address " .. tostring(id)
	local ptn = "(%d+)個使用中"

	rtn, str = rt.command(cmd)
	if (rtn) and (str) then
		num = str:match(ptn)
		if (num) then
			num = tonumber(num)
		end
	else
		str = cmd .. "コマンド実行失敗\r\n"
	end

	return rtn, num, str
end

------------------------------------------------------------
-- 各状態の数値が閾値を超えた時、または正常に復帰した時に --
-- メッセージを返す関数                                   --
------------------------------------------------------------
function make_msg(t, val, th, down)
	local rtn
	local str = ""

	if (val) then
		rtn = count_proc(t, val, th)
		if (rtn < 0) then
			if (down) then
				str = t.title .. "が閾値以下の値に下がりました。"
			end
		elseif (rtn > 0) then
			str = t.title .. "が閾値を超えました。\r\n"
			str = str .. string.format("  %s: %d%s\r\n  閾値: %d%s\r\n\r\n",
			 		t.title, val, t.unit, th, t.unit)
		end
	end

	return str
end

------------------------------------------------------------
-- 閾値を超えた、または下回った連続回数をカウントする関数 --
------------------------------------------------------------
function count_proc(t, val, th)
	local rtn = 0

	if (val > th) then
		if (not t.flag) then
			t.over = t.over + 1
			if (t.over == count) then
				rtn = 1
				t.flag = true
			end
		else
			if (t.down > 0) then
				t.down = 0
			end
		end
	else
		if (t.flag) then
			t.down = t.down + 1
			if (t.down == count) then
				rtn = -1
				t.flag = false
				t.over = 0
				t.down = 0
			end
		else
			if (t.over > 0) then
				t.over = 0
			end
		end
	end

	return rtn
end

------------------------------------------------------------
-- 現在の日時を取得する関数                               --
------------------------------------------------------------
function time_stamp()
	local t

	t = os.date("*t")
	return string.format("%d/%02d/%02d %02d:%02d:%02d",
		t.year, t.month, t.day, t.hour, t.min, t.sec)
end

------------------------------------------------------------
-- メインルーチン                                         --
------------------------------------------------------------
-- ハードウェアリソース情報テーブル
local res_tbl = {
	cpu = {ptn = "", val = 0, over = 0, down = 0, flag = false, title = "CPU負荷率(" .. cpu_time .. ")", unit = "%"},
	mem = {ptn = "(%d+)%% used", val = 0, over = 0, down = 0, flag = false, title = "メモリ使用率", unit = "%"},
	tmp = {ptn = "筐体内温度%(℃%): (%d+)", val = 0, over = 0, down = 0, flag = false, title = "筐体内温度", unit = "℃"}
}
local pp_tbl = {
	rcv = {over = 0, down = 0, flag = false, title = "PP 受信負荷率", unit = "%"},
	snd = {over = 0, down = 0, flag = false, title = "PP 送信負荷率", unit = "%"}
}
local nat_tbl = {over = 0, down = 0, flag = false, title = "NAT マスカレードテーブル 使用ポート数", unit = "個"}

local rtn, str, nat_use
local rt_name = string.match(_RT_FIRM_REVISION, "(%w+)")

res_tbl.cpu.ptn = set_cpu_ptn(cpu_time)
assert(res_tbl.cpu.ptn)

while (true) do
	mail_tbl.text = ""

	-- cpu, mem (,temp -- RTX1200, RTX3500, RTX5000, RTX1210)
	rtn, str = rt_res_status(res_tbl)
	if (rtn) then
		mail_tbl.text = mail_tbl.text .. make_msg(res_tbl.cpu, res_tbl.cpu.val, th_tbl.cpu, down_mail)
		mail_tbl.text = mail_tbl.text .. make_msg(res_tbl.mem, res_tbl.mem.val, th_tbl.mem, down_mail)
		if ((rt_name == "RTX1200") or (rt_name == "RTX3500") or (rt_name == "RTX5000") or (rt_name == "RTX1210")) then
			mail_tbl.text = mail_tbl.text .. make_msg(res_tbl.tmp, res_tbl.tmp.val, th_tbl.tmp, down_mail)
		end
	end

	-- pp
	rtn, rcv, snd, str = pp_load_info(peer_num)
	if (rtn) then
		mail_tbl.text = mail_tbl.text .. make_msg(pp_tbl.rcv, rcv, th_tbl.rcv, down_mail)
		mail_tbl.text = mail_tbl.text .. make_msg(pp_tbl.snd, snd, th_tbl.snd, down_mail)
	else
		mail_tbl.text = str
	end

	-- nat
	rtn, nat_use, str = natmsq_use_status(nat_descriptor)
	if (rtn) then
		if (nat_use) then
			mail_tbl.text = mail_tbl.text .. make_msg(nat_tbl, nat_use, th_tbl.nat, down_mail)
		end
	else
		mail_tbl.text = str
 	end

	if (mail_tbl.text:len() > 0) then
		mail_tbl.subject = string.format("resource loadwatch (%s)", time_stamp())
		rtn = rt.mail(mail_tbl)
		if (not rtn) then
			rt.syslog(log_level, "failed to send mail. (rtx1200-monitoring.lua)")
		end
	end

	rt.sleep(idle_time)
end

各項目について説明します。

41行目

idle_time = 60

ルータの状態をチェックする間隔を設定します。設定値は秒で設定します。上記は60秒に1回ルータの状態をチェックし数値に異常がないかチェックします。

44行目

cpu_time = "1min"

CPUの使用率をチェックする時間を設定します。設定値は「5sec」「1min」「5min」の中から得選択します。「1min」では1分間に1回CPUの使用率をチェックします。

47行目

peer_num = 1

監視する相手先番号を指定します。ルータ設定の8行目に

pp select 1

と指定しているので「1」を設定します。

50行目

nat_descriptor = 1

IP マスカレードの使用ポート数をチェックするため、IPマスカレードのNATディスクリプタ番号を指定します。ルータ設定の42行目に

nat descriptor type 1 masquerade

と設定しているので「1」を設定します。

53行目から59行目

cpu = 80,
mem = 80,
tmp = 40,
snd = 80,
rcv = 80,
nat = 20

各状態のしきい値を設定します。ここで設定した数値を超えると管理者にメールで異常を通知します。

  • cpu・・・CPU使用率(%)
  • mem・・・メモリ使用率(%)
  • tmp・・・ルータの筐体温度(℃)
  • snd・・・PPインターフェース送信の負荷率(%)
  • rcv・・・PPインターフェース受信の負荷率(%)
  • nat・・・IPマスカレードの使用ポート数(%)

63行目

count = 1

連続でしきい値を超えたら異常と判断する回数を設定します。ここでは1回でもしきい値を超えたら異常と判断したいため「1」を設定します。

66行目

down_mail = true

しきい値が正常な値になった時にメールを通知するかしないかの設定になります。
「true」は正常な状態になった時に復旧メールを通知します。
「false」は正常な状態になった時に復旧メールを通知しません。

70行目から76行目

smtp_address = "(SMTPサーバのアドレス)",
smtp_port = "587",
smtp_auth_protocol = "plain",
smtp_auth_name = "(アカウント名)",
smtp_auth_password = "(パスワード)",
from = "(送信元メールアドレス)",
to = "(送信先メールアドレス)"

メールを送信するための設定になります。
SubmissionポートやSMTP認証が必要な場合は上記設定が必須になります。

ファイルのアップロードから実行まで

ファイルのアップロード

ファイルのアップロードはTFTPコマンドを利用してルータへアップロードしました。

ルータ設定

TFTP接続を一時的に許可します。

tftp host any

パソコンからのアップロードコマンド

cd c:\lua
tftp 192.168.0.1 put rtx1200-monitoring.lua /rtx1200-monitoring.lua/(Administratorパス

ルータのコンソールからファイルがアップロードされていることを確認します。

確認コマンド

show file list /

rtx1200-monitoring-2

Luaスクリプトの実行

今回も時間指定でスクリプトを実行させます。

schedule at 1 14:30:00 * lua /rtx1200-monitoring.lua

これでルータの監視が開始されます。

ルータからのメール

■メモリ使用率、ルータ筐体内温度のしきい値を小さくした時のメール通知内容
rtx1200-monitoring-3
■NATマスカレード使用数がしきい値を超えた時のメール通知内容
rtx1200-monitoring-4
■NATマスカレード使用数がしきい値より下がった時のメール復旧通知内容
rtx1200-monitoring-5
メール通知の内容は設定したしきい値を超えた項目・現在の数値・しきい値が記載されます。値が正常値になった時はしきい値より下がったという内容のメールが届きました。

まとめ

今回のLuaスクリプトを利用することでルータに異常が起きた際はすぐに検知することができます。特に筐体内温度などは実際ルータを直接触らないとわかならいことなので夏や通気性の良くないところへルータを設置している場合には非常に便利なLuaスクリプトになります。

カレンダー

    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
   1234
567891011
12131415161718
19202122232425
26272829   
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
1234567
891011121314
15161718192021
22232425262728
       
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
     12
3456789
10111213141516
17181920212223
24252627282930
31      
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
     12
3456789
10111213141516
17181920212223
242526272829 
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
    123
45678910
11121314151617
18192021222324
25262728   
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
   1234
567891011
12131415161718
19202122232425
262728    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
U・Iターン転職しませんか?
群馬データセンター
群馬の法人ITサポートサービス Wide Net[ワイドネット]
Wide Netのクラウドバックアップ
クラウド型ファイル共有サービスRushDrive
ワイドオフィス
ネディアのSDGsへの取り組み
健康経営優良法人
IT-commons(ITコモンズ)