コンテンツへスキップ

Raspberry PiのApache2にドメイン名指定の仮想ホスト

サブドメインを用いて、Apache2のVirtualHostを設定します。
Raspberry Piで運用している「aaa.com」がApacheのメインサイトに設定されている環境で、「bbb.aaa.com」のサブドメインに新規WEBサーバーバーチャルホストを設定します。WEBリクエストのURLの違いにより、表示する/利用するWEBサーバーの切替が行われます。

前提条件など

VirtualHost向け設定ファイル

テンプレートファイル「000-default.conf」をコピーして、今回作成するVirtualHost設定ファイルの雛形を作成し、設定ファイルを作成します。

コピーして作成したbbb.aaa.com.confファイルを編集。

VirtualHost設定の有効化とApache2への反映

a2ensite コマンドを用いて、作成した設定ファイルをAvailable からEnabelへ。

Apacheを再起動して、VirtualHostは利用可能となります。
sudo service apache2 restart

dnsutilsをRaspberry Piに導入

GMO とくとく BB 固定IPアドレスの逆引き設定などをしていると、ネットワークユーティリティnslookupやdigなどが利用したくなります。
Raspberry Piには、デフォルトで導入されておらず、自分でインストールする必要がありました。

nslookupとdig実行例

Raspberry PiにLet's EncryptのSSL証明書

現時点ですと、EncryptのSSLを発行する際に、通常の方法ですとポート80を証明書を発行したい(SSL証明書を受け取りたい)サーバーで開放する必要がありました。
よって、Raspberry Piでは、自己証明書SSLを利用しておりました。Raspberry Piの自己証明書SSL
ポート80を利用しているSynologyは、Synologyの機能を用いて、Let's Encryptの証明書を導入しております。Synology無料SSL証明書導入(Let’s Encrypt)

最近の便利さには、日々関心しておりますが、今回の驚きも大きかったです。
Apacheの設定まで確認し、必要な証明書を確認し、各種設定含め自動実行出来ます。

cerbotおよびpython-cerbot-apacheの導入

python-cerbot-apacheをインストール祭に、次のパケケージもインストールされます。python3-augeas python3-certbot-apache

cerbot --apacheを実行し、SSL証明書発行およびapacheのSSL設定

cerbot --apacheを実行し、SSL証明書を設定したいドメインを選択し、SSL証明書の発行およびApacheのSSL関係設定を実施します。
実際には、対象ドメインの選択のみで、全て自動で設定されます。

cerbot renewで証明書更新をテスト

証明書の有効期限が1ヶ月未満になると、証明書の再取得が行われます。
コマンド実行をテストし、次のステップで、cronの定期実行ジョブとして、コマンドラインを登録します。

cronの定期実行ジョブ登録

以下の例では、毎週日曜日の深夜1時にcertbot renewが実行されるように登録しています。

 

 

固定グローバルIPの逆引き設定 GMOトクトクBB固定IPアドレス向け

グローバル固定IP向け Synology DNS サーバー構築

せっかくの固定グローバルIPアドレス、逆引き設定無料も後押しして、利用を開始した、GMOとくとくBB固定IPアドレスサービス。
設定完了しましたの以下メールを受けて、SynologyでDNS設定を行いましたが、逆引き出来ません。

実際には、以下、メールが届きました。
逆引きゾーン設定には、「SUB15.189.241.202.in-addr.arpa」をゾーン名に指定するように記載があり、1IPの逆引き設定は、プロバイダ側で逆引きIPをcnameしているのかなと興味深く見ておりました。

SUBから始まる逆引きZone名

結論から申しますと、PTR設定を見直す必要がありました。
(IPアドレスの最後).SUB--(逆引きZone名)-- のPTRレコードが必要。

固定IPアドレス、aaa.bbb.ccc.xxの逆引きゾーン名SUBxx.ccc.bbb.aaaに対して、xx.SUBxx.ccc.bbb.aaaのPTRが必要。

SUBから始まるIP逆引きゾーンファイル

最終的な、ゾーンファイルです。(Synologyよりエキスポートしました)

SUBから始まるIP逆引きのPTR設定(SynologyのDNS設定画面)

固定IPアドレス逆引きnslookup実行結果




LinuxからValue-domainのDDNS(Dynamic DNS)更新

関連記事:SynologyでValueDomain向けのDDNS設定方法

SynologyでのDDNS更新も良い機能だなと思いましたが、今回はオーソドックスにLinuxホストからValue DomainのDDNS更新方法です。
Raspberry Piで設定を実施しました。
VALUE-DOMAIN(バリュードメイン)

VALUE-DOMAINのIP更新方法

VALUE-DOMAINで本設定を行う際は、VALUE-DOMAINのポータルサイトよりIP更新時に用いるドメインのパスワードを取得する必要があります。
参考URL:https://www.value-domain.com/ddns.php?action=howto

ツールなどからのアクセス先(HTTP GET/POSTリクエスト)

https://dyn.value-domain.com/cgi-bin/dyn.fcg?d=ドメイン名&p=パスワード&h=ホスト名&i=IPアドレス

パラメータ説明
d更新するドメインを指定します。
例:value-domain.com
p更新するドメインのパスワードを指定します。
例: 1234
h更新するドメインのホスト名を指定します。DNSレコード編集画面のホスト名と全く同じ仕様です。
例: *(全ホスト)、www、指定なしはホスト名なし
i更新するドメインのIPアドレスを指定します。指定しない場合は、自動的に接続者のIPアドレスが設定されます。
aaaaレコードが存在し、IPアドレスがIPv6フォーマットの場合、aaaaレコードのホストがアップデートされます。

Raspberry PiからVALUE-DomainのIPアドレス変更

DDNS更新のスクリプトファイル準備

設定ファイルを作成します。ドメイン名と取得したパスワードを記載します。

IPアドレスを更新するスクリプトです。
IPアドレス変更時に、VALUE-DOMAINにIP変更を通知します。

作成したファイルの実行権限を変更します。

定期実行登録(crontab登録)

2分、7分、12分と5分毎にスクリプトを実行し、IPアドレスが変更していないか確認を行うように、crontabにスクリプトを登録します。



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を利用

created by Rinker
¥17,900 (2020/08/08 18:01:59時点 楽天市場調べ-詳細)

固定グローバル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一択です。購入時にはご注意を!

created by Rinker
¥17,900 (2020/08/08 18:01:59時点 楽天市場調べ-詳細)

Webhooksの利用

Webhooksは、WEB APIとなります。
Webhook(Webコールバック、HTTPプッシュAPIなど)はあるアプリケーションから別のアプリケーションに対してリアルタイムな情報提供を実現するための仕組みです。
Web/URLアクセスを行います。
Webhooksは、WEB受信とWEB送信側の機能を実現出来ます。

  1. SynologyやRaspberry PiからのURLアクセスを受け付けるWebhook
  2. WebhookからSynologyやRaspberry PiへアクセスするWebhook

の2つの利用形態があります。

IFTTTは、「if(もし) this(この状態) then(の場合は) that(それをする)」なので、
Synologyなどが、IFTTT処理の実行を開始させたい場合は、SynologyよりWebhookを実行します。(SynologyよりWebhookにURLアクセスします)

IFTTT処理でアクションさせたい処理がSynology側などにある場合は、WebhookよりSynologyへURLアクセスさせます。

トリガー(That)

外部よりWebhookにURLアクセスする必要があります。
その際のアクセスするURLや、アクセスに必要なアクセスキーは、Webhooksの「Documation」画面より入手可能です。
{event}はトリガーごとに設定するので、IFTTTでレシピを作成する際に指定します。

実際にThis部分を指定する画面は以下となります。
Event Nameを設定する部分があり、ここで、設定した文字列がURL部分{event}となります。

例:https://maker.ifttt.com/trigger/test/with/key/XXXXXXXXXXXXXXXXXXXXXX
トリガーアクセス時に変数を加える場合は、GETやPOSTで変数を与えます。

アクション(This)

 

Webhookより外部にURLアクセスを実施します。
その際のアクセスするURLや、自分がSynologyなどに準備したPHPファイルなどのWEBコンテンツとなります。
アクセスURLにWEBアクセス方法GETやPOSTなど、そしてコンテンツタイプおよびBodyに変数を指定します。
日本語を扱う場面も多いと思うので、URLエンコードされたコンテンツの送信をオススメします。

 

前提条件

  • Synologyのサーバの公開設定が終わっている
    • ルーターのNAT / Port Foward / Virtual Serverの設定が出来ており、インタネットからサーバーにアクセスできる

DDNS(Dynamic DNS)ダイナミックDNS/動的DNS

インターネットを利用する際に必要となる、パブリックIPアドレス(インターネットにおける世界で一意なアドレス)。
ドメイン(miki-ie.comなど)は、人にもわかりやすい表札や屋号のようなもの。
DNS(Domain Name Serivce)は、ドメインとIPアドレスの割り当てを行います。

DDNSとは、IPアドレスが頻繁に変わるホストに固定的にドメイン名を割り当て、アドレス変更に即座に追随してDNS情報を更新するシステム。 また、その仕組みを利用して提供される動的なDNSサービス。

企業向けなどには固定IPアドレスが利用され、DNS(Domain Name System)運用においてもIPアドレスとドメイン名を固定的に長期間結びつけた運用となる。
個人宅など、一般のインターネットプロバイダ(ISP)を利用した際は、インターネットプロバイダより、一時的なIPアドレスが割り当てられる。

よって、通常の自宅環境でドメインを運用した際は、利用するIPアドレスに合わせてDNSレコードを変更する必要があります。
www.miki-ie.com(不変に利用を続けたい) ⇔ Public IPアドレス(ISP接続毎に変わる)

独自ドメイン取得

DDNS向けに無料でドメインを貸してくれるWEBサービスもありますが、永続的な無料での利用などが約束されているわけでもなく、WEBサイトなどを運営する際は、独自ドメインを利用するのも悪くないと考えています。

VALUE-DOMAIN(バリュードメイン)

  • 500種類以上の独自ドメインを取り扱い。
  • 自動更新設定、一括ドメイン取得・更新など運用がしやすい
  • ネームサーバー/DNSレコード設定/Whois代行などドメイン運用の基本機能も標準装備
  • 「バリューサーバー」「コアサーバー」「XREA」などのホスティングとの連携が容易



VALUE-DOMAINでのDDNS利用時のIP更新方法

VALUE-DOMAINで本設定を行う際は、VALUE-DOMAINのポータルサイトよりIP更新時に用いるドメインのパスワードを取得する必要があります。
参考URL:https://www.value-domain.com/ddns.php?action=howto

ツールなどからのアクセス先(HTTP GET/POSTリクエスト)

https://dyn.value-domain.com/cgi-bin/dyn.fcg?d=ドメイン名&p=パスワード&h=ホスト名&i=IPアドレス

パラメータ説明
d更新するドメインを指定します。
例:value-domain.com
p更新するドメインのパスワードを指定します。
例: 1234
h更新するドメインのホスト名を指定します。DNSレコード編集画面のホスト名と全く同じ仕様です。
例: *(全ホスト)、www、指定なしはホスト名なし
i更新するドメインのIPアドレスを指定します。指定しない場合は、自動的に接続者のIPアドレスが設定されます。
aaaaレコードが存在し、IPアドレスがIPv6フォーマットの場合、aaaaレコードのホストがアップデートされます。

SynologyへVALUE-DOMAINのDDNS更新を設定

SynologyへVALUE-DOMAIN向けのプロバイダ登録を実施

「コントロールパネル」「外部アクセス」「DDNS」「カスタマイズ」よりDDNSプロバイダを新規登録します。
Query URLへは、以下を登録し、一部はSynologyの設定画面で設定する設定値を利用するために、準備されている変数を利用します。

  • ユーザー名:__USERNAME__ d=ドメイン名
  •  パスワード:__PASSWORD__ p=パスワード
  •  ホスト名:__HOSTNAME__ 利用しない
  • 外部アドレス:__MYIP__ i=IPアドレス

※ ホスト名(h=ホスト名)は、「 *(全ホスト)」を固定指定。

 

SynologyへVALUE-DOMAIN向けDDNS更新を設定

「コントロールパネル」「外部アクセス」「DDNS」「追加」より作成したサービス・プロバイダVALUE-DOMAINに必要な情報をINPUTします。
※ ホスト名は何を設定しても、実際には「*」となります。このフォームに「*」のしては不可能な仕様となっておりました。



API連携プラットフォーム概要(Overview)

ラズベリーパイ(Raspberry Pi)とNAS(Synology)の使い分け

記載済み記事

ネットワーク構成

SynologyのWEBサーバとRaspberry PiのWEB APIを外部公開にする必要があります。
SynologyとRaspberry Piの両方をWEBサーバーとして、外部公開します。
通常WEBサービスでは、ポート80(http://)と443(https://)が利用されます。
家庭向けの製品では、パケットの到着ポートで、アクセスURLを見て、パケット送付先を振り分けることは出来ないので、2台のWEBサーバを公開する際は、1台を別ポートで運用します。

NAT / Port Forward / Virtual Server設定

インターネット側IP+Port を ローカルネット側IP+Port の転送ルールを設定します。この技術や機能名がNAT、Port ForwardやVirtual Serverと呼ばれております。

パブリック側プライベート側
(グローバルIP)Port:80(Synology プライベートIP)Port:80
(グローバルIP)Port:443(Synology プライベートIP)Port:443
(グローバルIP)Port:8443(Raspberry PiプライベートIP)Port:443

この際に、グローバル側からのRaspberry Piへのアクセス方法は、「https://www.miki.-ie.com:8443」とポート番号を指定したアドレスとなります。

複数DOMAIN(ドメイン)の運用

複数の独自ドメインでWEBサーバを運用します。これは、WEBサーバのVirtual Server機能で実現します。Synologyでは、簡単に設定が可能ですので、設定方法などは割愛します。