コンテンツへスキップ

TP-LINK TL-ER6020でのNAT構成

PPoE2セッション構成とし、NAT可能なWANポートを2つへと構成変更を行いました。
今までのネットワーク構成は、以下のようにNAT可能なPPoE接続は1セッションであったので、Synology の外部サーバー公開とRaspberry Piの外部サーバ公開は、外部向け公開ポートを分けて、アクセス/処理の振り分けを行っておりました。

ダブルWAN構成(PPoEの2セッション構成)

TP-Link の TL-ER6020は複数WANポートをサポートしているので、このような構成でのNATも簡単に設定出来ます。今回利用しておりませんが、WAN1とWAN2両方で、WEBリクエストの着信を待ち、公開サーバーへフォワードすることも可能です。

以下が、ER6020のVirtual Server(NAT)設定となります。

  • Synology ポート80(http) WAN2を利用
  • Synology ポート443(https) WAN2を利用
  • Synology ポート53(DNS) WAN2を利用
  • Raspberry Pi ポート80(http) WAN1を利用
  • Raspberry Pi ポート443(https) WAN1を利用

TP-Link VPNルーター PPTP L2TPVPN TL-ER6020

2019年09月12日  めざましじゃんけん 結果

フジテレビ めざましテレビ めざましじゃんけん の結果を保証したり、全ての結果が記載を保証するものではありません。

2019年09月12日のめざましじゃんけんの結果をベストエフォートで公開します。


じゃんけん結果システムイメージ

Goo(グー) Choki(チョキ) Pa(パー)

めざましテレビ|めざましじゃんけんーフジテレビ

めざましじゃんけん結果
回次結果対戦相手
9月12日
(木曜日)
【4戦目】07時58分大貫勇輔さん
【3戦目】07時35分荒木絵里香選手
【2戦目】06時58分林蓮音さん、中村浩大さん
【1戦目】05時58分まちかどじゃんけん

Raspberry Pi 3B+ 高温対策

プログラムのコンパイルなど4コアすべてを使った高負荷処理でなくても、結構高めの動作温度が気になっておりました。80°C近くになっている時間もありました。

夏も終盤ですが、8月末にRaspberry Pi 3B+にファンを導入しました。小さな基盤なので、ファンも小さかったです。

想像以上の効果でした、導入前が日次平均60°C付近が、導入後50°C付近と10°C以上の効果がありました。

以下が、平均温度の推移です。

Raspberry Pi 3B+の温度制御

Raspberry Pi 3B+には、2段階の温度制御が実装されています。

  • temp_soft_limit
  • temp_limit

temp_soft_limit

Raspberry Pi 3B +のみに導入されています。60°C以上になると、CPUスピードコントロールが実施されます。CPUクロックスピード調整システムが作動し、温度調整が設定されます。この温度では、クロック速度は1400MHzから1200MHzに低下する。デフォルト値は60°Cとなっております。

temp_limit

/boot/config.txtにtemp_limit=75と記載します。
この場合、70°Cからスロットリングが始まり、CPUクロックが標準の1.2GHzから段階的に600MHzまで低速化、75°C以下を保てるようになります。
スロットル時の最低CPUクロックも同様にarm_freq_min=400などと、さらに低く設定できます。

設定省略時(デフォルト)は、85℃となります。80°Cからスロットルを絞り、85°Cを越えないように制御します。

Raspberry Pi 3B+にデュアルファンをインストール

Raspberry Pi 3B+ デュアルファン Raspberry Pi Cooling Dual Fanを取り付けた際の写真を載せておきます。

綺麗に梱包されておりました。ファンを設置するシールもしっかりとした商品が同梱されています。

少し見ずらいですが、赤と黒のケーブルを接続し、ファンをボードに設置します。

Raspberry Pi デュアルファン

2019年09月11日  めざましじゃんけん 結果

フジテレビ めざましテレビ めざましじゃんけん の結果を保証したり、全ての結果が記載を保証するものではありません。

2019年09月11日のめざましじゃんけんの結果をベストエフォートで公開します。


じゃんけん結果システムイメージ

Goo(グー) Choki(チョキ) Pa(パー)

めざましテレビ|めざましじゃんけんーフジテレビ

めざましじゃんけん結果
回次結果対戦相手
9月11日
(水曜日)
【4戦目】07時58分草刈正雄さん
【3戦目】07時35分石井優希 選手
【2戦目】06時58分生じゃんけん!松川菜々花ちゃん
【1戦目】05時58分永瀬廉さん(King & Prince) 北村匠海さん 黒島結菜さん

Yolo3、Tiny-Yolo3での独自学習モデルをPythonに実装

画像検出に向けて、AlexeyAB Darknetを用いて、YOLO3、Tiny-YOLO3で作成した、独自学習モデルをPythonで実装します。

前提条件

YOLO2 Tiny-YOLO2 YOLO3 Tiny-YOLO3 をPythonで実装

学習済みモデル(weightsファイル)とコンフィグファイル(cfgファイル)

「darknet\build\darknet\x64\cfg\obj.data」ファイルのbackupに指定したフォルダに、学習モデル(weightsファイル)が出力されます。

classes = 7
train = train.txt
valid = test.txt
names = cfg/obj.names
backup = backup/

独自学習に用いたコンフィグファイルは、「darknet\build\darknet\x64\cfg\」フォルダ内で作成していると思いますので、独自学習時に用いたcfgファイルとなります。

これらのファイルを、画像検出を実施するRaspberry PiやサーバーのPythonファイルが読み込み可能な場所にコピーします。

Python3での実装

  • net = cv.dnn.readNetFromDarknet(CFG, MODEL)
    • CFG:学習モデル(weightsファイル)
    • MODEL:独自学習時に用いたcfgファイル
  • net.setPreferableTarget
    • net.setPreferableTarget(cv.dnn.DNN_TARGET_CPU)
      Raspberry PiやWindowsなどで動作させる際のTarget指定。
      現時点では、OpenCVのYOLO向けDNNでは、GPUはサポートされておりません。
    • net.setPreferableTarget(cv.dnn.DNN_TARGET_MYRIAD)
      Intel Movidius Neural Compute Stick 2 (NCS2)を利用する際は、TargetにNCS2を指定することが出来ます。Raspberry Pi 3B +で動作確認済みとなります。

参考記事:Movidius Neural Compute Stick 2、OpenVINO™ toolkit for Raspbian* OS導入

Python3 ソースコード

サンプルスクリプトを掲載しておきます。

#!/usr/bin/env python
# coding: utf-8

target_model = "yolov3-tiny-janken_final.weights"
target_config = "yolov3-tiny-janken.cfg"

import cv2 as cv
import numpy as np

MODEL = "./janken_cfg/" + target_model
CFG = "./janken_cfg/" + target_config
SCALE = 0.00392   ##1/255
INP_SHAPE = (416, 416) #input size
MEAN = 0
RGB = True

# Load a network
net = cv.dnn.readNetFromDarknet(CFG, MODEL)
net.setPreferableBackend(cv.dnn.DNN_BACKEND_DEFAULT)
##net.setPreferableTarget(cv.dnn.DNN_TARGET_CPU)
net.setPreferableTarget(cv.dnn.DNN_TARGET_MYRIAD)

confThreshold = 0.8 # Confidence threshold
nmsThreshold = 0.8  # Non-maximum supression threshold

class_names = ['active', 'goo', 'choki', 'pa', 'won', 'lose', 'draw']

def getOutputsNames(net):
    layersNames = net.getLayerNames()
    return [layersNames[i[0] - 1] for i in net.getUnconnectedOutLayers()]

def postprocess(frame, outs):
    frameHeight = frame.shape[0]
    frameWidth = frame.shape[1]

    def drawPred(classId, conf, left, top, right, bottom):
        left = int(left)
        top = int(top)
        right = int(right)
        bottom = int(bottom)
        # Draw a bounding box.
        cv.rectangle(frame, (left, top), (right, bottom), (0, 255, 0))

        label = class_names[classId] + '_%.2f' % conf

        labelSize, baseLine = cv.getTextSize(label, cv.FONT_HERSHEY_SIMPLEX, 0.5, 1)
        top = max(top, labelSize[1])
        cv.rectangle(frame, (left, top - labelSize[1]), (left + labelSize[0], top + baseLine), (255, 255, 255), cv.FILLED)
        cv.putText(frame, label, (left, top), cv.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 0))

    layerNames = net.getLayerNames()
    lastLayerId = net.getLayerId(layerNames[-1])
    lastLayer = net.getLayer(lastLayerId)

    classIds = []
    confidences = []
    boxes = []

    if lastLayer.type == 'Region':
        classIds = []
        confidences = []
        boxes = []
        for out in outs:
            for detection in out:
                scores = detection[5:]
                classId = np.argmax(scores)
                confidence = scores[classId]
                if confidence > confThreshold:
                    center_x = int(detection[0] * frameWidth)
                    center_y = int(detection[1] * frameHeight)
                    width = int(detection[2] * frameWidth)
                    height = int(detection[3] * frameHeight)
                    left = center_x - width / 2
                    top = center_y - height / 2
                    classIds.append(classId)
                    confidences.append(float(confidence))
                    boxes.append([left, top, width, height])
    else:
        print('Unknown output layer type: ' + lastLayer.type)
        exit()

    indices = cv.dnn.NMSBoxes(boxes, confidences, confThreshold, nmsThreshold)
    for i in indices:
        i = i[0]
        box = boxes[i]
        left = box[0]
        top = box[1]
        width = box[2]
        height = box[3]
        drawPred(classIds[i], confidences[i], left, top, left + width, top + height)

c = cv.VideoCapture(0)
c.set(cv.CAP_PROP_FRAME_WIDTH, 640) # カメラ画像の横幅を1280に設定
c.set(cv.CAP_PROP_FRAME_HEIGHT, 480) # カメラ画像の縦幅を720に設定
c.read()

r, frame = c.read()

frameHeight = frame.shape[0]
frameWidth = frame.shape[1]
# Create a 4D blob from a frame.
inpWidth = INP_SHAPE[0]
inpHeight = INP_SHAPE[1]
blob = cv.dnn.blobFromImage(frame, SCALE, (inpWidth, inpHeight), MEAN, RGB, crop=False)
   
# Run a model
net.setInput(blob)
outs = net.forward(getOutputsNames(net))
   
##print(outs)
postprocess(frame, outs)
# Put efficiency information.
t, _ = net.getPerfProfile()
label = 'Inference time: %.2f ms' % (t * 1000.0 / cv.getTickFrequency())
cv.putText(frame, label, (0, 15), cv.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0))
#対象ファイルコピー保存
target_filepath = './result.jpg'
cv.imwrite(target_filepath, frame)

2019年09月10日  めざましじゃんけん 結果

フジテレビ めざましテレビ めざましじゃんけん の結果を保証したり、全ての結果が記載を保証するものではありません。

2019年09月10日のめざましじゃんけんの結果をベストエフォートで公開します。


じゃんけん結果システムイメージ

Goo(グー) Choki(チョキ) Pa(パー)

めざましテレビ|めざましじゃんけんーフジテレビ

めざましじゃんけん結果
回次結果対戦相手
9月10日
(火曜日)
【4戦目】07時58分生じゃんけん!藤井流星さん(ジャニーズWEST)
【3戦目】07時35分岩坂名奈選手
【2戦目】06時58分鈴木仁さん
【1戦目】05時58分まちかどじゃんけん

Synology で外部向けDNS構築

固定グローバルIP向けに自前のDNSサーバーをSynologyを用いて構築します。
実際にDNSを利用するには、以下の設定変更が必要です。

正引き:ドメイン管理会社へのDNSサーバー登録
ドメイン総合サービス【VALUE-DOMAIN】でのDNSサーバーの設定
逆引き:IP管理会社(インターネットプロバイダ)へのDNSサーバー登録
GMOインターネットへのIP逆引きの設定変更依頼

Synology へDNSサーバーをインストール

SynologyのパッケージセンターよりDNS Serverをインストールします。

DNSサーバーの設定

正引き(www.miki-ie.comよりIPアドレス)および逆引き(IPアドレスからドメイン名www.miki-ie.com)を設定します。

正引き(www.miki-ie.comよりIPアドレス)設定

教科書どおりに、nsホスト名をAレコードで設定し、CNAMEで他利用したいドメインを設定しております。
実際には、正引きはドメイン総合サービス【VALUE-DOMAIN】のDNSサーバーを用いて運用しております。可用性を考え、すぐにバックアップ回線でのインターネットからのアクセスが可能となるように。更に、固定IPでの運用ですが、SynologyのDDNSの設定は、そのままにしております。デフォルトゲートウェイなど外部IP変更時には、DNSのIPアドレス変更が行われます。

逆引き(IPアドレスからドメイン名www.miki-ie.com)設定

逆引きのゾーン名ですが、利用するIPアドレスを逆から記載し、「.in-addr.arpa.」を加えたゾーン名となります。
IPアドレスが、「202.241.190.15」の場合は、逆から記載し「15.190.241.202」+「.in-addr.arpa.」となります。

202.241.190.15 の場合、

15.190.241.202.in-addr.arpa.

がゾーン名

SynologyのDNSサーバを外部公開(NAT設定)

TP-Link TL-ER6020でのVirtual Servers(NAT)設定の例となります。SynologyのIPアドレスのポート53を公開します。

今回出てきた製品や関連サービス

SYNOLOGY シノロジー DiskStation DS218j デュアルコアCPU搭載多機能パーソナルクラウド 2ベイNASキット DS218j[DS218J]



TP-Link VPNルーター PPTP L2TPVPN TL-ER6020

2019年09月09日  めざましじゃんけん 結果

フジテレビ めざましテレビ めざましじゃんけん の結果を保証したり、全ての結果が記載を保証するものではありません。

2019年09月09日のめざましじゃんけんの結果をベストエフォートで公開します。


じゃんけん結果システムイメージ

Goo(グー) Choki(チョキ) Pa(パー)

めざましテレビ|めざましじゃんけんーフジテレビ

めざましじゃんけん結果
回次結果対戦相手
9月09日
(月曜日)
【4戦目】07時58分中井貴一さん、ディーン・フジオカさん、石田ゆり子さん、草刈正雄さん、佐藤浩市さん、三谷幸喜さん
【3戦目】07時35分古賀紗理那選手
【2戦目】06時58分板尾創路さん
【1戦目】05時58分まちかどじゃんけん

固定グローバルIPとv6プラスとNAT可能なPPoEセッションの3セッション環境

関連記事:日曜日(9月8日)投稿記事

IPv6網のNGN(次世代ネットワーク)を利用したIPoE方式である「V6プラス」と従来のPPoE2回線を接続する3セッション構成を実現します。

以前に、V6プラスとPPoE1回線の2セッション構成を記事にしているので、そちらも参照ください。「v6プラス」とNAT(PPoE接続)の同時利用環境の構築方法
今回は、PPoEを2セッションをTP-LINKのTL-ER6020で構築する方法を記載します。

TP-LINK TL-ER6020によるダブルWAN構成(ダブルPPoE構成)

 

構成概要

複数のインターネット接続回線を準備すると、それぞれの回線をActive-Activeで運用するのか、ネットワークトラフィックを分散させ全体のネットワーク性能を向上させるのか、それともActive-Stanbyとし、片方(片系)の障害時に、バックアップ回線を使うのか、様々な運用が考えられます。
今回は、外部(インターネット側)からのアクセスに注目し、構成例を示します。

  • PPoE接続1(WAN1)へのアクセスを、Synologyへ
  • PPoE接続2(WAN2)へのアクセスを、Raspberry Piへ

この構成を実現するTP-LINK TL-ER6020の設定方法を公開します。

TP-LINK TL-ER6020設定

  1. WANポート数を設定します
  2. ルーティングを設定するために、SynologyとRaspberry PiのIPアドレスにTL-ER6020内で利用するIPアドレス名を設定し、IPアドレス名を用いてIPグループの設定を行います
  3. IPグループを用いてルーティングの設定をします

以上で、SynologyとRaspberry Piが異なるネットワークゲートウェイを用いて、サーバー公開可能となります。

WANポート追加

「Network」「WAN」メニューの「WAN Mode」タブでWANポート数を設定出来ます。今回は、WANを2ポートに設定しています。

IPグループ設定

ルーティング設定に向けて、IPグループ設定を行います。IPグループ設定に向けて、IPアドレスに管理名を設定します。
「Performances」「IP Group」メニューの「IP Adress」タブでSynologyとRaspberry PiのIPアドレスにIPアドレスの名前を設定します。

設定したIPアドレスの名前を用いて、IPアドレスのグループを作成します。「Performances」「IP Group」メニューの「IP Group」タブでSynologyとRaspberry Pi向けのIPグループをそれぞれ作成します。

ルーティング設定

「Transmission」「Routing」メニューの「Policy Routing」タブでSynologyとRaspberry Pi向けのルーティングを作成します。
以下の例では、SynologyがWAN2を利用し、Raspberry PiがWAN1を利用する設定となっております。

TL-ER6020のハードウェアバージョンについて V1 V2

ハードにV1とV2があります。V1を販売しているサイトが多いので、購入時に注意が必要です。

V1では、WANポート2ポート固定。V2では、WANポート数も変更出来ます。
WEBで販売されているサイトのほとんどが、写真や説明がV1のサイトが多いです。楽天のTP-LINKが直接運営しているサイトにメールでV2出荷であるか確認を行い、購入しました。
当初V2を切り替えた理由は(実は、V2の前はV1を利用しておりました)、Apple製品のVPNにもオフィシャルファームウェア対応でした。V1時代は、海外の開発コミュニティに公開されているファームを自己責任でインストールし、運用しておりました。
V2は、WANポート数が設定で変更可能、Apple製品のVPNにもオフィシャルファームウェアで対応していたりと、ER6020を購入するならV2一択です。購入時にはご注意を!

TP-Link VPNルーター PPTP L2TPVPN TL-ER6020

固定IPでのサイト運営について

最新技術、マーケティングなど多方面での個人的な学習も目的に、本サイトを運営しております。
今回は固定IPの試行についてです。レンタルサーバなどでは、プラン選択次第で身近に利用できるようになった、固定グローバルIP。IPv4の一般家庭でのインターネットでは、値段的にも遠く、サーバーの公開時などには、DDNS(Dynamic DNS)が利用されています。DDNSは、長期に渡り、良く出来た仕組みだと思います。

少し調べると、固定グローバルIPが月千円前後のコストで利用できるようになっておりました。固定グローバルIPの利用を検討するにあたり、現在のV6プラスとNAT可能なPPoE接続の共存できした、更に、できればPPoEの追加セッションとし、Raspberry PiとSynology共に、ポート80やポート443など標準ポートでのサーバー運営が出来ればと、利用可能なサービスを検討しました。
「v6プラス」とNAT(PPoE接続)の同時利用環境の構築方法
API連携プラットフォーム

  • V6プラスのIPv6網を用いた高速インターネット
  • 通常のPPoE接続(動的IPをプロバイダが付与、サーバー運用・NAT利用可能)
  • 【新規】GMOのグローバル固定IPサービス(PPoE)

コストパフォーマンスに高いサポート力のGMOインターネット

サポートセンターの対応もよく技術力も高かったです。公式なサポート構成出ない旨を添えて、今回の3接続構成も理解いただき、実現可能であろうとの見立てもお聞きで来ました。更に、相談日に開通し、固定のグローバルIPを提供してくださったのは、「GMO」でした。光回線自体は、現時点ドコモ光を利用しております。
GMOのサービスは、料金面サービス内容(高性能なルター無償貸与など)もほかより優れているので、メリットがあるならば、サービスの切替をお勧めします。
IPの逆引き設定も無償対応範囲とのことで、設定を依頼中です。この独自ドメインでの逆引きIPで得られる効果は全く未知なのですが、とりあえず運用してみて、逆引き「あり」と「なし」での差分が見つかればと考えております。なんかあるのかな?

細かな設定が可能なValue Domain(超大手でないので、価格も良心的)

ドメインですが、現時点でも複数のドメインを所有しております。具体的には、4つのドメインを10年以上運営しております。(最大10個程度のドメインを持っていたと思います)
一生ものの住所であり、気に入ったドメインが見つければ、所有と利用をお勧めします。WEB公開よりも、一生涯のメールアドレスを持つことが可能です。
ドメイン取得は、各種自由な管理が可能なValue Domain(バリュードメイン)がおすすめです。

今後のブログコンテンツ公開について

この、www.miki-ie.comよりWEBコンテンツの公開を始め、数ヶ月が立ちました。
おかげさまで、訪問者も週毎に増えておりますので、引き続き以下のサイクルで投稿を続けたいと思います。

  • 記事投稿
    • 水曜日:技術コンテンツ (機械学習ネタなど独自性やニーズが高そうな内容)
    • 日曜日:各種コラム(サイト運営、新規技術、新規システム など)
    • 土曜日:めざましじゃんけんの1週間の結果

月曜日、火曜日、木曜日、金曜日も記事コンテンツがある場合は、各種技術Tipsや新規導入品の紹介などを続けます。当面は、今まで通り毎日何かしらの記事を投稿する予定です。
技術ネタを検索されて訪問されている方が多そうなので。

WAN/LANのポート属性切替可能なTP-LINK ER-6020

最後に、ルーターですが、WANポート数も選択出来て、VPNサーバー機能やDDNSクライアント対応など、コストパフォーマンスの高いおすすめ機種は、TP-LINKのER-6020 V2となります。ハードにV1とV2があります。V1を販売しているサイトが多いので、購入時に注意が必要です、写真や説明がV1のサイトが多いです。楽天のTP-LINKが運営しているサイトにメールでV2出荷であるか確認を行い、購入しました。
V2は、WANポート数が設定で変更可能、Apple製品のVPNにもオフィシャルファームウェアで対応していたりと、絶対V2がおすすめです。

TP-Link VPNルーター PPTP L2TPVPN TL-ER6020