4 拠点間をヤマハのルータのVPN機能で常時接続する・・・NVR500のVPN設定準備その2

3 拠点間をヤマハのルータのVPN機能で常時接続する・・・NVR500のVPN設定準備その1

前回は、「3 拠点間を VPN で常時接続する NVR500 の VPN 設定準備その1」で IPV6 アドレスを取得する方法を書きました。

今回は、それに続いて IPV6 関連の設定について書きます。

 

フレッツ光ネクストの乗換や新規申し込みは ↓↓↓ こちらからどうぞ。


NTTフレッツ光

ヤマハのルーターの IPV6 ルーティング設定

VPN を作成する上では、直接必要はないと思いますが、設定をします。 NVR500 はルータとして機能するので、LAN1、LAN2、および PPPoE などで接続したプロバイダと VPN トンネルを対象としてそれらを相互に IPV6 のルーティングをするかと言う設定です。設定内容は下記の1行です。

ipv6 routing on

マニュアルによると、デフォルトは on になっていますので、設定はしなくても良いかもしれませんが、明示的にしておきます。気分の問題でしょうか。

IPV6 RIP6

つづいいては RIP6 の設定です。

ipv6 rip use off

rip は、ルーティング情報を隣接する機器に流すかどうかと言う設定です。(ルーティング情報をやり取りするプロトコルは他にもあります。)これもデフォルトはoffなのですが明示的にoffにします。試行錯誤しているときに間違えて on にしたところ、対向の IPV6 アドレスへの通信がその上に構築された VPN に向いてしまい VPN がおかしくなりました。気を付けてください。

【送料無料】YAMAHA ブロードバンドVoIPルーター NVR500

価格:39,353円
(2018/5/29 13:40時点)
感想(5件)

IPV6 フィルター設定

セキュリティの設定です。LAN2 が対外的な IPV6 の窓口として動作するので、LAN2 を生で通る IPV6 に対してフィルターをかけます。「生」で通ると書いたのは、LAN2 上は、「生」で通る以外に、 PPPoE でカプセル化されたデータや、 VPN トンネルを通るデータがあるからです。生で通してあえなければならないのは、疎通確認でicmp6、DNS サーバ取得用に DHCPV6 クライアント、 VPN の対向との通信です。この3つ以外は遮断します。まず、フィルターの定義をして、それを LAN2 に適用します。

ipv6 filter 1010 pass * * icmp6 * *
ipv6 filter 1011 pass * * udp * 546
ipv6 filter 1012 pass * * udp * 547
ipv6 filter 1013 pass 2400:xxxx:yyyy:zzzz::/64 * * * *
ipv6 filter 1014 pass * 2400:xxxx:yyyy:zzzz::/64 * * *
ipv6 filter 2000 reject * * * * *

1行目: icmp6 をすべてのアドレスから/すべてのアドレスへの通信を許可します。

2-3行目: DHCPV6 をすべてのアドレスから/すべてのアドレスへ許可します。

4行目:対向のアドレスからの通信を許可します。2400、x、y、z は実際に取得したアドレスで、ここではプレフィックスで指定します。2400:xxxx:yyyy:zzzz は、実際の対向のアドレスに書き換えてください。自拠点のアドレスではないです。プレフィックス表記にする理由もちゃんとありまして、対向の機器が壊れて交換した場合、下位の 64bit が変わってしまうからです。「いや、変わるとしても厳密にフィルターをかけるべき」と考えている方は、フルアドレス 128bit で書いてください。

5行目:対向のアドレスへの通信を許可します。

6行目:全ての通信を遮断します。

セキュリティなので、各拠点や組織のセキュリティポリシーに合わせたフィルター設計にしてください。ここでは最低限の設定を紹介しています。

IPV6 フィルター適用

フィルターの設定でけでは、何もセキュリティは働きません。フィルターをインターフェースや PPPoE などに適用して初めて機能します。 IPV6 は、LAN2 に割り当てたアドレスなので、LAN2 にフィルターも適用します。

ipv6 lan2 secure filter in 1010 1011 1012 1013 2000
ipv6 lan2 secure filter out 1010 1011 1012 1014 2000

1行目:外から入ってくるパケットに対するフィルター適用です。前述のフィルター設定で指定したフィルター番号を羅列します。マニュアルにははっきりと書かれてはいませんが、記述した順番にフィルターが働き、最後に2000番のフィルターが働きます。1010~1013 のフィルターで通らなければ、2000番のフィルターですべて遮断されることになります。

2行目:今度は外に出ていくパケットに対するフィルターです。1行目との違いは、1013番が1014番に変わっています。フィルター設定で書いたとおり対向からのパケットか、対向へのパケットかで使い分けています。

今回の設定は、ここまでです。設定内容の確認は、管理用WEBで[トップ] > [詳細設定と情報] > [本製品の全設定(config)のレポート作成]で確認できます。

#
# IPv6 configuration
#

ipv6 routing on

省略
#
# LAN configuration
#

ip lan1 address 192.168.2.1/24
ipv6 lan1 address ra-prefix@lan2::1/64
ip lan2 address dhcp
ipv6 lan2 address auto
ipv6 lan2 address dhcp
ipv6 lan2 secure filter in 1010 1011 1012 1013 2000
ipv6 lan2 secure filter out 1010 1011 1012 1014 2000
ipv6 lan2 dhcp service client ir=on
ngn type lan2 ntt

省略
#
# IPv6 filter configuration
#

ipv6 filter 1010 pass * * icmp6 * *
ipv6 filter 1011 pass * * udp * 546
ipv6 filter 1012 pass * * udp * 547
ipv6 filter 1013 pass 2400:xxxx:yyyy:zzzz::/64 * * * *
ipv6 filter 1014 pass * 2400:xxxx:yyyy:zzzz::/64 * * *
ipv6 filter 2000 reject * * * * *

ここまでで、IPV6 関連の設定は終わりです。次回は、とうとう VPN を設定といきたいところですが、拠点それぞれの LAN のセグメントの話を書きます。

 

フレッツ光ネクストの乗換や新規申し込みは ↓↓↓ こちらからどうぞ。


NTTフレッツ光

【送料無料】YAMAHA ブロードバンドVoIPルーター NVR500

価格:39,353円
(2018/5/29 13:40時点)
感想(5件)

5 拠点間をヤマハのルータのVPN機能で常時接続する・・・拠点のIPV4設定

 

 

3 拠点間をヤマハのルータのVPN機能で常時接続する・・・NVR500のVPN設定準備その1

2 拠点間をヤマハのルータのVPN機能で常時接続する・・・必要なモノは

前回は、「2 拠点間を VPN で常時接続する 必要なモノ」を書きました。

今回は、具体的に VPN をどう構築するかを順を追って書きますが、その中でまずは NGN IPV6 に接続して自拠点の IPV6 アドレスをどう知るかを書きます。

拠点間の VPN を構築( VPN を張るなんて言ったりします)するには、どこと接続するのかを設定する必要がります。相手の住所を知る必要があると言うことです。

 

フレッツ光ネクストの乗換や新規申し込みは ↓↓↓ こちらからどうぞ。


NTTフレッツ光

フレッツ光ネクストの IPV6 アドレスの割り当てについて

NGN網での住所は IPV6 になっていまして、そのアドレスは自分で決めるわけでも、NTTに申請するわけでもありません。 IPV6 の RA(Router Advertisement)と言う仕組みを使って割り当てられます。割り当てられると言っても、 IPV6 のアドレス長 128bit がすべて割り当てられるのではなく、上位 64bit が割り当てられ、残り64bit は、MACアドレス(48bit)をベースに組み立てられます。ん? なんか足りない。

128bit-64bit-48bit=16bit

16bit 足りないのですが、そこは RFC でどう足りない16bit を作成するのか定義されています。ここでは詳細説明は割愛します。

とにかく、NGN網からは、RA と言う仕組みで IPV6 アドレスが接続時に動的に配布/設定されると言うことを覚えてください。

IPV6 を使いたいと言うのは、フレッツ光ネクストのオプション契約(無料)でしますが、実際のアドレスは動的に配布されます。

DNSサーバの割り当て

つづいいては DNS のお話です。自分の IPV6 アドレスはわかったとして、今度は相手のアドレスをどう知るかと言うことです。 Internet の世界であれば、ネームサービスとか DNS(Domain Name Service)とか名前解決とか言うものです。これは、NGN網の中でも同じです。今回の VPN 設定例では名前解決を必要としないのですが、NGN網の疎通確認としてDNSを使うことにします。

NGN網内の DNSサーバは、RAでも受け取る仕組みがあるのですが、 NVR500 では実装されていないと思います。たぶん。それで、DHCP で DNS サーバを受け取るこのにします。

【送料無料】YAMAHA ブロードバンドVoIPルーター NVR500

価格:39,353円
(2018/5/29 13:40時点)
感想(5件)

実際の設定はこのようにします。

ipv6 lan2 address auto
ipv6 lan2 address dhcp
ipv6 lan2 dhcp service client ir=on
ngn type lan2 ntt

ここで横道にそれますが、lan2 と言う単語が例に出ていますが、これが悪者です YAMAHAさん!。

機器のポートには WAN と表記されているのに、機器内部のファームウェアとしては lan2 なんです。最初 lan2 は、機器の LANポート4つあるうちの2番目か3番目のポートかと勘違いしました。この業界はよくインド人ではないですが、0から番号を振ることがあるので、2は3番目を指すこともあります。それで3番目かなとも思いました。しかし、結局は、WAN ポートのことじゃないですか。紛らわしい!

本筋に戻って3行について解説します。

1行目:WANポートの IPV6 のアドレスを RA で設定するというものです。auto と書いてありますが、良きにはからえと言う意味ではありません。マニュアルを見ると「RA で取得したプレフィックスとインタフェースのMAC アドレスからIPv6 アドレスを生成することを示すキーワード」と書かれてます。ログで IPV6 アドレスがRAで設定されていることを確認できます。下のログを見てください。このログは、debug ログですので、デフォルトの設定では確認できません。

[IPv6] prefix 2400:xxxx:yyyy:zzzz::/64 (vlife: 2592000, plife: 604800) is assigned from LAN2 (RA)

管理用WEBで[トップ] > [詳細設定と情報] > [本製品のログ(Syslog)のレポート作成]と辿ってSyslogの設定をデバッグモードも出力するようにすると確認できます。2400:xxxx:yyyy:zzzz::/64はプレフィックス部分だけを示しています。x、y、zは実際には16進の値です。LAN2の実際のアドレス128bitは、先に説明したとおりMACアドレスをベースに64bitが負荷されて生成されます。実際のアドレスは、管理用WEBで[トップ] > [詳細設定と情報] > [システム情報のレポート作成]で見ることができます。表示するとこんな感じです。x~z、a~dは、16進の値が入ります。

【 IPv6情報 】
# show ipv6 address
  :
割愛
  :
LAN2 scope-id 2 [up]
 Received:    864 packets 121219 octets
 Transmitted: 6423 packets 896009 octets

 グローバル     2422:xxxx:yyyy:zzzz:aaaa:bbbb:cccc:dddd/64 (lifetime: 604628/2591828)

2行目:ipv6 lan2 address dhcp は、マニュアルによればdhcpは「DHCPv6 で取得したプレフィックスとインタフェースのMAC アドレスからIPv6 アドレスを生成することを示すキーワード」と記述されていますが、ここでは IPV6 アドレスを取得する目的では使っていません。DNSサーバを知るために設定しています。実際のDNSサーバの情報は、ssh等で NVR500 に入り、show status ipv6 dhcpコマンドで確認できます。

# show status ipv6 dhcp

DHCPv6 status

  LAN2 [client]
    state: established
    server:
      DNS server[1]: 2404:1a8:7f01:b::3
      DNS server[2]: 2404:1a8:7f01:a::3
      Domain name[1]: flets-east.jp
      Domain name[2]: iptvf.jp
      SNTP server[1]: 2404:1a8:1102::b
      SNTP server[2]: 2404:1a8:1102::a

IPV6 アドレスは、 DHCPV6 サーバから取得しないと言う話は、次の3行目になります。

3行目:ipv6 lan2 dhcp service client ir=on  これは、 DHCPV6 クライアントとして動作するときに、自アドレスの割り当て要求をしないというものです。1行目で、RAでアドレスを取得することになっているので、2行目の DHCPV6 ではアドレスを要求したくないわけです。それで、アドレス以外の情報をもらいたいという設定になります。ir=off(デフォルト)にするとアドレスも要求するようになります。

4行目:マニュアルには、この設定で「NTT 東日本またはNTT 西日本が提供するNGN 網を使用する」とあります。また、色々なサイトでひかり電話の契約がある/なしで、この設定もある/なしにするようなことが書かれていますが、正直この設定の有無で何が違うのかわかりません。今回の例では、拠点Aではひかり電話契約あり、拠点Bではひかり電話契約なしですが、両拠点ともこの設定がありでうまく行っています。

【送料無料】YAMAHA ブロードバンドVoIPルーター NVR500

価格:39,353円
(2018/5/29 13:40時点)
感想(5件)

ここまでで、NGN網から IPV6 アドレスとDNSサーバ情報を取得設定は終わりです。本日は、ここまです。

 

フレッツ光ネクストの乗換や新規申し込みは ↓↓↓ こちらからどうぞ。



NTTフレッツ光

次回は、 VPN を設定といきたいところですが、 VPN を設定する前にさらに設定すべき項目について書いていきます。

 

4 拠点間をヤマハのルータのVPN機能で常時接続する・・・NVR500のVPN設定準備その2

WordPressのPHPバージョンアップでハマった

このサイトも WordPress で作成しているのですが、なんせ始めたばかり。IT 歴はそれこそ四半世紀を超えているのですが、WordPress はまだまだ歯も生えてないかな。




Apache 、PHP 、WordPress でハマった

CentOS6.3 に WordPress4.9.5 を入れたのですが、元々PHP5.3.3 が既に入っていたのです。それで、PHP7.2.5 に上げようとして、yum で上げました。全然問題なく、php -v で見ると7.2.5に上がってます。よし、これで完了と思いきや、なにやら WordPress の動きがおかしい。

  • 外観 → カスタマイズ→サイト基本情報でサイトアイコンを登録しようとしたところ、推奨サイズの 512×512 のファイルのアップロード、メディアライブラリまでは登録できるのですが、サイトアイコンとして選択してもその先に進まず。
  • 同じく、推奨サイズの 512×512 以外のメディアライブラリに登録して選択をすると、画像切り抜きの画面に変わるのですが、「画像を切り抜く際にエラーが発生しました」とエラー出る。

こんな事象に遭遇したのです。しばらく解決策がわからず見て見ぬふりをしてしまったのですが、環境をもう一度確かめようと思い、まず PHP のバージョンや php-gd が認識されているか確認するため phpinfo 関数が入った “phpinfo.php” をドキュメントルートに入れて見てみました。中身は簡単、たった3行です。1行でもいいけど。

<?php
  phpinfo();
?>

“phpinfo.php” については、↓↓↓ この記事を参照してください。

WordPress ApacheとPHPの連携確認

200×200 高速大容量レンタルサーバ10G
mixhost

そしたらなんと、PHP7.2.5 のはずが、PHP5.3.3 じゃないですか。おまけに php-gd も認識されていない。これが原因かと言うことで、再度、シェル上で php -v を打ってみても7.2.5。う~ん、なんだろう。

答えは、Apache 側の設定でした。PHP5.3.3 は削除しているんですが、Apache のモジュールとしては残っていて、設定もそのままだったんです。

 #LoadModule php5_module modules/libphp5.so
 LoadModule php7_module modules/libphp7.so

/etc/httpd/conf/httpd.conf の中の php5 の行をコメントアウトして、php7 を追加。httpd を再起動して phpinfo.php で確認したところ、PHP7.2.5 が表示され、php-gd も無事認識されました。そして、2つの不具合も解消したわけです。

や~ハマった1週間。





2 拠点間をヤマハのルータのVPN機能で常時接続する・・・必要なモノは

1 拠点間をヤマハのルータのVPN機能で常時接続する

前回は、「1 拠点間を VPN で常時接続する」の最初の記事を書きました。

今回は、具体的に VPN をどう構築するかを順を追って書いて行きます。

1 必要な契約  フレッツ光ネクストまたは ひかり電話

フレッツ光ネクストまたはひかり電話

NTT(正確に言うとNTT東日本です)のフレッツ光ネクスト系の契約です。フレッツ光ネクストだけ契約するというのはたぶん無いと思います。下記の2パターンだと思います。

A  ひかり電話 + フレッツ光ネクスト

フレッツ光ネクスト+ Internet プロバイダー

ひかり電話を契約すると、フレッツ光ネクストはもれなく付いてきます。

Internet をフレッツ光ネクスト経由で接続する(している)場合は、 IPV6 オプション契約(無料)も必要です。最近の契約であれば、漏れなくこのオプションは付いているようです。

ひかり電話自体も IPV6 の技術を使っているので、このオプションは初めから付いているようです。

フレッツ光ネクストの乗換や新規申し込みは ↓↓↓ こちらからどうぞ。


NTTフレッツ光

今回構築した例では、拠点AがAパターン、拠点Bパターンの契約をしています。Bの方は、NTT東日本と直接契約したのではなく、OCN光を契約しました。OCN光も結局回線は、NTT のNGN網を使っているので、問題なく使えます。その他プロバイダとフレッツ光ネクストがセットになった光コラボレーションモデルでも大丈夫だと思います。

ケーブルTVの Internet や、モバイル WiFi などは使えません。

2 必要なモノ   ヤマハのルータ

ネットワーク概念図には色々とモノが描かれていますが、 VPN に的を絞って必要なモノを洗い出すと、 VPN を実現するためのルーターです。今回の例では、YAMAHAの  NVR500  を使いました。YAMAHAのルータは、半プロ向きというか、素人にはちょっと難しい面もありますが、機能がとにかくてんこ盛りなんです。てんこ盛りと言っても機種によって微妙に機能のある/なしがあるので選定には検討が必要です。

現在(2018/5)販売されている代表的なルータの特徴を書きます。

RTX830
◎ VPN/IPSEC 対20拠点
◎ VPN/IPIP 対20拠点
×アナログ電話接続
×ファイルサーバ
×WiFi親機

ヤマハ RTX830 ギガアクセスVPNルーター

価格:53,244円
(2018/5/29 13:36時点)
感想(0件)

NVR700W
◎ VPN/IPSEC 対20拠点
◎ VPN/IPIP 対20拠点
◎アナログ電話接続
×ファイルサーバ
◎WiFi親機

YAMAHA/ヤマハ LTEアクセスVoIPルーター NVR700W

価格:103,800円
(2018/5/29 13:37時点)
感想(0件)

<ahref=”https://network.yamaha.com/products/routers/nvr510/index” target=”_blank” rel=”noopener”>NVR510
× VPN/IPSEC
〇 VPN/IPIP 対4拠点
◎アナログ電話接続
×ファイルサーバ
×WiFi親機

【送料無料】 ヤマハ ギガアクセスVoIPルーター NVR510

価格:39,880円
(2018/5/29 13:38時点)
感想(0件)

RTX810
〇 VPN/IPSEC 対6拠点
〇 VPN/IPIP 対6拠点
×アナログ電話接続
×ファイルサーバ
×WiFi親機

ヤマハ RTX810 Giga対応 VPNルーター

価格:45,700円
(2018/5/29 13:39時点)
感想(5件)

NVR500
× VPN/IPSEC
〇 VPN/IPIP 対4拠点
◎アナログ電話接続
〇ファイルサーバ SMB V1.0
×WiFi親機

【送料無料】YAMAHA ブロードバンドVoIPルーター NVR500

価格:39,353円
(2018/5/29 13:31時点)
感想(5件)

VPN に主眼を置くなら、IPSEC か IPIP かどちらを選ぶかと言うことになります。IPSEC は、通信の暗号化を行いますが、IPIP は暗号化無しです。この違いが値段にも反映されているのかなと憶測する次第です。この記事の例では、一番安い  NVR500  を例に構築しています。

〇と◎の違いは、キャパシティの違いだったり、ファイルサーバに関して言えば SMB V1.0 しかサポートしていないとか、FAT32 しかサポートしていないので、◎ではなく〇にしています。

どこに重きを置くかによって選択する機種は違ってきます。V暗号化VPNに重きを置くなら RTX830。無線LANも必要と言うなら NVR700W になります。

フレッツ光ネクストの乗換や新規申し込みは ↓↓↓ こちらからどうぞ。


NTTフレッツ光

次回は、 NVR500  の設定や動作確認方法について順を追って書いていきます。

3 拠点間をヤマハのルータのVPN機能で常時接続する・・・NVR500のVPN設定準備その1

 

AI ことはじめ(スパムメール判定)

ただいま2018年。ここ数年で世の中 AI ブームが起きています。ブームに乗らないわけにはいかないのでとりあえず乗ってみましょう。

SONY の Neural Network Console に乗っかる?

Python だの Chainer、TensorFlow だの敷居が高そうなものはたくさんあります。そんな中で、ふと目に入ったのがSONY の Neural Network Console(以後 NNConsole と書きます)です。コーディング不要でビジュアルにAIができるみたいなキャッチですっかりそれに傾倒しました。しかも無料とくれば試すしかありません。ただいま2018年ですが、これに乗っかたのは2017年8月からです。

NNConsole に乗っかって何する?

宝くじでも予想させるか、競馬の予想させるか。頭の中は煩悩でいっぱいですが、そこはぐっとこらえてスパムメールを AI で判定させてみみることに決定。たまに Loto だのBIG だのに寄り道しましたが、スパムメール判定に成功しました。そこまでの道のりをご紹介します。

スパムメールの学習はどうやってするのか

AIなんだから、メールをファイルに落として読み込ませりゃ学習してくれるんでしょ? と思ったあなた。それは甘いです。NNConsole が学習データとして受け入れてくれるのは、2つ。

  • CSVファイル
  • 画像ファイル

これだけです。

メールなので、とりあえず画像として学習させるにはちょっと無理があります。CSVで学習させるしかないのです。メールを CSV に変換してそれを学習させるのです。ここまでの話だと、メールがどう CSV に化けるのかわかりませんね。その話は、また次回。

AI メール to CSV

どうでしょうか、AI や 人口知能に興味はわいてきましたでしょうか。



1 拠点間をヤマハのルータのVPN機能で常時接続する

拠点間をヤマハのルータでVPN LAN間接続

今回、東京都内に2か所目の事務所をオープンするにあたり、事務所間を VPN で接続し、データの共用などしたいなと考えました。その際、電話もひかり電話にしようかなとあれこれ調べてみると、ひかり電話の HGW(ホームゲートウェイ)の下にSIPクライアントというか、VoIP クライアントをぶら下げることができることがわかりました。であれば、構想/妄想はふくれあがり、以下の機能を実現しようと考えたわけです。

  1. 2か所の事務所を VPN で接続する
  2. 電話番号を2か所の事務所で共用する
  3. ファイルサーバを2か所の事務所で共用する

これらの構想/妄想を現実にするまでをご紹介します。

まずは、1つ目の「2か所の事務所を VPN で接続する」です。 VPN とは、Virtual Private Network のことで、仮想私的網とでも中国語では書くのでしょうか。物理的に離れた拠点のネットワークを接続して、ネットワークを一体化すると言うものです。

今回キーとなるのは、その接続方法です。 Internet が発達した世の中なので、 Internet さえ接続できたら、2か所のネットワーク接続なんて簡単?にできます。しかし、今回は、 Internet 接続無しで VPN を構築します。正確には、 Internet を通さずにと言ったほうが良いでしょう。まずはネットワーク概念図を見てください。

2か所の事務所をそれぞれ拠点A、拠点Bとして描いています。それぞれの拠点は、フレッツ 光ネクスト系の回線を契約しています。フレッツ 光ネクスト系と’系’と書いたのは、NTT のサービス品目にマンションだの戸建てだの色々とあるからです。ここで使えるのは、”ネクスト”と付いているサービス品目です。NTT のひかり電話であれば、NGN網に接続しているはずです。これらのサービスは、NGN(Next Generation Network)網に接続します。フレッツ光ネクストの”ネクスト”とは、NGN の先頭の Next のことだったんですね。NGN網は、NTT が提供している閉鎖網で直接 Internet には接続していません。このNGN網だけを通して2拠点間を VPN で 接続します。ただし、NTT東日本と NTT西日本では相互に繋がっていないようです。NGN網だけで VPN を構築するメリットは次のとおりです。

フレッツ光ネクストは高速である

拠点から NGN網に接続するのは光ケーブルによる 1Gbpsの回線です。また、NGN網は、世界に誇る? NTT さんが構築している Next Generation Network=次世代ネットワークと言うことで、内部は相当高速&高効率&高信頼なのです。具体的には NTT さんに聞いてください。

今回の事例では、FTP での転送速度が 220 Mbps程度出ました。やはり速いです。Internet 経由だと、上りが数 Mbps とか絞られるので、こうはいかないでしょう。

フレッツ光ネクストは閉鎖網であるので安全性が高い

NGN網は、 IPV6 による閉鎖網なんです。 IPV6 ってワールドワイドで統一されていると思ったのですが、NGN網内はNTTのプライベートネットワークのような扱いです。それで Internet にはデータが流れないので、安全性が高いわけです。

 

これらの利点は、先に述べましたが NTT東日本と NTT西日本の間では相互に繋がっていないようですので注意してください。

フレッツ光ネクストの乗換や新規申し込みは ↓↓↓ こちらからどうぞ。



NTTフレッツ光


次回は、具体的に VPN をどう構築するのか、それに必要な契約やモノについて書きます。

2 拠点間をヤマハのルータのVPN機能で常時接続する・・・必要なモノは

 

 

日付/時刻のゼロサプレス

対象:csh、tcsh

Cシェルの日付計算ジ時の0の扱い

dateコマンドで日付や時刻を取得した場合、ゼロ付きというかゼロで先頭を埋めて返ってくるものがあります。man dateを見てください。

       %H     hour (00..23)

       %I     hour (01..12)

       %j     day of year (001..366)

       %k     hour ( 0..23)

       %l     hour ( 1..12)

       %m     month (01..12)

       %M     minute (00..59)

       %S     second (00..60)


抜粋したものを載せました。

時などは、%H の代わりに %k を使うなどすれば良いのですが、分や秒はどうしても0が付く場合があります。0が付いたままシェルの中で計算するとエラーになる場合があります。下記に例を示します。

% @ b = 8 + 1
% echo $b
9

% @ b = 08 + 1
@: 番号が正しい書式になっていません.

例では 8 と 08 で比較していますが、二桁であればうまく動いてしまいます。

そこで、先頭から続く0を考慮する必要があります。やり方としては2つあります。サンプルにあるように @を 使いたい場合と、@ をやめる方法です。

200×200 高速大容量レンタルサーバ10G
mixhost

“日付/時刻のゼロサプレス” の続きを読む

CGIのデバッグ

フォームを作ってみたはいいけど、CGIでどのようなデータが飛んでくるのか最初はよくわからないことがあります。wireshark なんかで、ダンプしてみるのも手ですが、サーバ側でダンプしてみる方法を考えました。専用の CGIを 作成して、本来の CGI と置き換えることによって、クライアントの画面にダンプデータと言うか、クライアントから POST されたデータがそのまま表示されます。


200×200 高速大容量レンタルサーバ10G
mixhost

これ ↓↓↓ がそのコードです。csh で記述しています。

#!/bin/csh -f

echo Content-type: text/html
echo ""


set save = /tmp/CGIdata$$

echo '-------------------------  DATA  ---------------------------------------' > $save
cat >> $save
printf "\n\n\n\n" >> $save


echo '-------------------------   ENV  ---------------------------------------' >> $save
env >> $save
printf "\n\n\n" >> $save


echo '-------------------------   set  ---------------------------------------' >> $save
set >> $save
printf "\n\n\n" >> $save

echo '------------------------------------------------------------------------' >> $save


echo '<TITLE>CGI raw data</TITLE>'
echo "<HTML><BODY>"
echo '<CENTER><H2>CGI raw data</H2></CENTER><PRE>'
cat $save
rm -rf $dave
echo "</PRE></BODY></HTML>"

前半で、クライアントから送られてきたデータと環境変数などをテンポラリファイルに入れています。後半は、HTMLでその中身を送り返しています。ただそれだけなんですが、簡単なCGIのデバッグには有効です。複雑なものは無理ですが。

いかがでしたか。CGI なんてもう古いかもしれませんが、ちょっとしたものに使いたくなるときがありますが、動かずに苦労することがあります。そんな時にお役に立てればと思います。





シェルのデバッグ(sh、bash系)

対象:sh、bash

シェル(sh、bash系)のデバッグは alias を利用する

前回紹介したcsh、tcsh系に続いて、sh、bash系です。

シェルのデバッグ(csh、tcsh系)

私は、csh や tcsh 系を得意としていますが、世の中sh系を得意とする方もいるので、考えてみました。考え方や内容はほぼ一緒です。微妙な違いと言えば、function を一部使っていたり、alias の有効化みたいなおまじないが違います。function を使わずに alias だけでうまく作れるかもしれませんが、思いつきませんでした。あと、せっかくデバッグなので、シェルの行番号を出すように Decho の第一引数に $LINENO を付けています。これを alias の中に入れてしまいたかったのですが、うまくいかずに現状諦めてます。$LINENO は、csh、tcsh には無いので前回のサンプルには組み込んでいません。

200×200 高速大容量レンタルサーバ10G
mixhost

sh、bash の場合のサンプルコード debug.sh

#!/bin/sh

# alias を有効化
shopt -s expand_aliases

# ログファイル名
# debug.log は適当なパスを記述する
export DLOG=debug.log

# デフォルトでは、デバッグログを出力しない設定
alias Decho=':'
alias Dprintf=':'
alias DechoOFF="alias Decho=':'"
alias DprintfOFF="alias Dprintf=':'"
alias DebugOFF="DechoOFF;DprintfOFF"

function DechoF() { echo $* >> $DLOG ;}
function DprintfF() { F=$1;shift;printf "$F" $* >> $DLOG ;}
# デバッグ出力をログファイル($LOG)に出力するなら2行目を有効にする
alias DechoON="alias Decho='echo'"
#alias DechoON="alias Decho='DechoF'"
alias DprintfON="alias Dprintf='printf'"
#alias DprintfON="alias Dprintf='DprintfF'"
alias DebugON="DechoON;DprintfON"


##### 以下は動作確認

# 出力されない
Decho $LINENO 1 2 3
Dprintf "%d %s %s %s\n" $LINENO a b c

# 出力される
# Decho、Dprintf を個別にONにする
DechoON
Decho $LINENO 2 2 3
DprintfON
Dprintf "%d %s %s %s\n" $LINENO b b c

# 出力されない
# Decho、Dprintf を個別にOFFにする
DechoOFF
Decho $LINENO 3 2 3
DprintfOFF
Dprintf "%d %s %s %s\n" $LINENO c b c

# 出力される
# Decho、Dprintf を一括でONにする
DebugON
Decho $LINENO 4 2 3
Dprintf "%d %s %s %s\n" $LINENO d b c

# 出力されない
# Decho、Dprintf を一括でOFFにする
DebugOFF
Decho $LINENO 5 2 3
Dprintf "%d %s %s %s\n" $LINENO e b c

実行結果

% debug.sh
36 2 2 3
38 b b c
50 4 2 3
51 d b c

いかがでしょうか、簡単に出力する/しないも切り替えが可能ですし、ソース行番号も表示されてりと、デバッグが楽になると思います。




シェルのデバッグ(csh、tcsh系)

対象:csh、tcsh

シェル(csh、tcsh系)のデバッグは alias を利用する

シェルにはデバッガーがあるわけではないので、デバッグにはちょっとコツがいります。-x オプションを指定して、実行ラインを標準エラーに出しながら行うことも可能ですが、本来のスクリプトの出力とごっちゃになってわけがわからなくなる場合もあります。簡単なスクリプトなら、それでも大丈夫でしょうが。

私の場合、デバッグプリントと言う古典的な手法を用いますが、echo や printf でただ単に出力させると、デバッグ完了後の本番時には、その echo 文などを削除するかコメントアウトする必要があり、それもまた手間がかかります。

そこで、echo や printf の代わりにデバッグ専用の Decho、Dprintf を別名定義や関数化してスクリプトに埋め込み使っています。まずは、サンプルコードを見てください。

“シェルのデバッグ(csh、tcsh系)” の続きを読む