がらぱっぱ

自分用覚え書き中心(モバイル関係中心だったはずが)

これはいい!壁一面を磁石のくっつくホワイトボードにしたら色々捗った

リビングのテーブル横の壁、一面をホワイトボードにしてみました。

こんな感じ。高さ180cm幅160cmくらいです。
f:id:garapappa:20210404120458j:plain
(ちょっとテーブルは片づけてますが)

・ちょいちょいメモ書いたり
・プリントやお知らせをちょっと磁石で張り付けたり
・落書きしてみたり
なかなか重宝します。

ホワイトボードが欲しい

在宅勤務が続き、ちょっとしたメモ書きとか、備忘録とか、思考整理のために書いたり消したりできると便利だなぁ
とか
子どものプリントとか、点検とかのお知らせとかを貼ったり
とか
家族の連絡
とか
子どもの落書き
とかとかいろいろ使えて便利です。

どんなホワイトボード

でっかいホワイトボードが欲しい。
ってことで、いろいろ探してみました

会社の会議室とかに良く置いてある足が付いたやつは嵩張る

結構重いし、足の分がかさばります。コロがついてて動かせるのはいいんですが

壁掛けタイプは重い

これも思い、脚付きのやつもそうですが、磁石が付く鉄製ですから壁かけるにしても固定を工夫しなければなりません

シールで貼るタイプは磁石が付かない

これが一番よさそうですが磁石が付くやつがなかなかありません。

マグネットタイプは鉄面に貼り付けるタイプ

磁石が付くものでさがすと、マグネットタイプというのが出てきます。
ただ、これは冷蔵庫とかホワイトボード面とかあらかじめ磁石が付くような面に貼り付けるタイプのようです。
これじゃだめだ。

そんななか見つけたのはシールタイプで磁石が付くこいつ。


ホワイトボード面の裏側にスチール紛と糊がついており、100均とかのマグネットが付きます。
約90cm×180cmで1万円弱。
柱部分を除いて高さ190cmくらい、幅160cmくらいに貼りたかったので、2セット購入。
160cmにカッターでカットして2枚貼りました。

貼り方

取扱いに注意する

薄いし折り目が付きやすいので、広げたり貼ったりするときに注意が必要です。

カッターで簡単にカット

薄いので結構簡単にカッターでカットできます。

貼るときは二人がかりで

一人で貼るのはちょっと大変。
二人がかりで一人がロールをもって、もう一人が貼って裏紙をはがしてとやるとスムーズにはれます。

よかった事・悪かった事

やっぱりでっかいホワイトボードはめちゃ便利

すぐに書いたり消したりできるし大きなサイズなので書きたいものがあるときに、大概消したりせずに書き込めますし、書くところを見つけるのも簡単です。

磁石がくっつくのでちょっとしたチラシなんかを貼り付けるのに便利

100均の棒型のマグネットが便利です。ちょっとしたお知らせとか

磁石が付くのは便利、磁石付きのマーカやイレーサーの置き場に困らない

磁石付きのマーカやイレーサーは充分付きます。
貼り付けておけばなくしたりせずすぐに使えます。

磁石の付きが弱いので、マグネットや貼るものの工夫が必要

薄くて軽くするため、スチール部分が少なくしているためか磁石の付きが悪いです。
かなり強力な磁石か、貼り付け面が広い磁石じゃないと落ちてきます。
あとは紙を重ねて何枚もは貼り付けられません。2~3枚くらいまでですね。

結構値段が張る

磁石が付かないホワイトボードシートと比べたら結構します。
どれくらい持つのかにもよりますが。

LubuntuにDocker入れてコンテナ管理してみよか。まずはHomeAssistantからだ。

という事で、Dockerおよびdocker-composeを入れます。
f:id:garapappa:20210321080823p:plain
そんでもって、HomeAssistantを入れます。
f:id:garapappa:20210322184046p:plain

LOOX UにLubuntu入れてやりたかった事の一つがこれ

まずは環境

LOOX U/C30 Lubuntu18.04.3

Z520(32bitCPU)
Lubunts 18.04.3LTS(32bit版)

LOOX U/C30にLubuntuを入れる - がらぱっぱ

Dockerをインストールしてみよう

まずは公式の通りに入れようとするが、64bitが前提だよ

これが公式かな、これの通りに入れていきますか?
Install Docker Engine on Ubuntu | Docker Documentation

あれ?だめじゃん。基本的にDockerは64ビットなのね。

なので、普通にaptで入れる。

少し古いバージョンのようですが、何とか動くような気がします。
参考:
Dockerをネットブックで動作させたい | ふわりのサイト

sudo apt update
sudo apt upgrade
sudo apt install -y docker.io docker-compose
sudo usermod -aG docker $USER
sudo systemctl enable docker
-- 確認
docker --version
docker-compose --version
docker run hello-world

チョー簡単な解説
OSとか最新版にして、docker.ioとdocker-composeをインストール
カレントユーザでdokerコマンド使えるようにして自動起動
dockerとdocker-composeのバージョン表示してインストールされてるかを確認してhello-world動かしてみる

ホームアシスタント(Dockerイメージ)を入れる。

hass.ioとHomeAssistant

HomeAssistantを見ると必ずといって出てくるhass.io。
HomeAssistantのディストリビューションの一つみたいなもんですがみんなおすすめなんですよね。
一回ちょっと苦労して入れてみたはいいんですが、ちょっと重くて諦めました。
色々プラグインを入れたりできるので便利そうですが、通常時(なにもしてないとき)にLOOXUのファンがブンブン唸っているのはね。。。

ということでノーマル(?)のHomeAssistantを入れる

公式の手順書(DOCKER COMPOSE)
Linux - Home Assistant
docker-composeで呼び出し管理するので、手順通りに適当なディレクトリにdocker-compose.yml作ります。
configのフォルダを指定する事で、configuration.yamlとか設定ファイルを直接触れます。
とりあえずカレントディレクトリ以下のHomeAssistantというフォルダにします(起動時に勝手に作ってくれる)

version: '3'
services:
  homeassistant:
    container_name: homeassistant
    image: homeassistant/home-assistant:stable
    volumes:
      - ~/HomeAssistant:/config
      - /etc/localtime:/etc/localtime:ro
    restart: unless-stopped
    network_mode: host

以下コマンドで、インストール・起動。

docker-compose up -d

ブラウザでhttp://サーバアドレス:8123と叩くと画面が出ます。

初回はユーザ・パスワード・住所等を指定する画面が出るので設定するとログイン画面が出てきます。
f:id:garapappa:20210322184528p:plain

自動的に検出されるデバイスもあります。
GoogleHome(Cast側のみ)となんとF660Aも検出されてますね。

という事で、設定を行っていきます
(続く)

SoftEtherVPNサーバを立てて外からアクセスできるようにする【Lubuntu18.04 on LOOX U】

せっかくLubuntuを入れて常時接続サーバとしたLOOX U
今度はVPNサーバを立てて、外出先から安全に接続できるようにしてみます。
LOOX U無線LAN接続でVPN、ちょっとはまったところもあるので覚書

初めに

VPN(Virtual Private Network)とは

今時VPNと呼んでいるほとんどがInternet VPNと思いますが、企業内のLANとか家庭内LANとか(イントラネット)とを公衆回線(インターネット)を用いて仮想的に専用線のように接続する技術です。(あんまり説明になってない...)

VPNでなにがやりたいの?

一言にVPNといっても色々な接続形態や方法がありますが、やりたいのは外部からおうちのLANにアクセスして、デスクトップPCとかNASとかにアクセスしたいわけです。
イメージこんな感じ
f:id:garapappa:20210310082233p:plain
外出先のノートPCやスマホからサーバ(LOOXU)経由で自宅LANにアクセスします。
物理的にはインターネット経由でサーバ(LOOXU)に接続するのですが、あたかも家の中からアクセスするように(VPNサーバをルータとして)アクセスできます。

VPNでなにができるか・何が嬉しいか

VPNでつなげるとこんないいことがあるよ!って事を洗い出してみましょう
VPNの特徴としては、外からつないで家の中のローカルLANと同じような環境で接続できるってのがあります。
これの何が嬉しいかというと

家庭内LAN(private network)につながっている機器にアクセスできる

家の中にいるのと同様に、デスクトップPCやNASに接続できる。
WOLでデスクトップ起動して、VNCで操作したり、NASにマウントしたりすることができます。
garapappa.hatenablog.com

Free Wifiとかでも安心

公衆WiFi(Free WiFiスポットとか)につないでいると、パスワードとか覗き見されてしまうなどの盗聴の危険性があります。
VPNにより盗聴の危険性を下げる事が可能です。
これだけで安心かというとそうではなく、PCに対する攻撃を防御するとかもほかにも必要ですが。。。。
また、接続元があくまでおうちLANからのアクセスとして見えるためどこのアクセスポイントから接続しているのかも隠ぺいできます。

外部からの接続に対するセキュリティが比較的高い

外部からの接続で利用するのは今回導入するSoftEther VPN ServerではUDP500、4500のみです。
なりすましとかでVPN自体が突破されなければ、セキュリティレベルを下げる事なく外部から好きな機器にアクセスすることが可能となります。

VPNを導入しよう

環境

VPNサーバ LOOX U/C30

LOOX U/C30 OS Lubuntu18.04.5 LTS 32bit版
garapappa.hatenablog.com

内臓無線LAN接続
固定IPを割り振っています。(F660Aの設定)
garapappa.hatenablog.com

ネット環境(NURO光 ONU F660A)

ポートフォワーディングとかでONU(ルータ)の設定をいじる事になります。

ソフトウエア

いくつかVPNソフトはありますが、高機能で性能もよさそげなSoftEtherを導入します。

SoftEther VPN

ja.softether.org
ダウンロード手順とかは後程

その他

パッケージマネージャとかではなく、ダウンロードして展開するので(多分)makeやgccが必要

sudo apt -y install make gcc

参考:
7.3 Linux へのインストールと初期設定 - SoftEther VPN プロジェクト

インストール

概要

以下の感じでインストールしていきます
・SoftEhterのダウンロード
・SoftEhterインストール
SoftEther自動起動設定
VPNサーバの設定(vpncmd)
・仮想HUB(ネットワーク)の設定

SoftEherVPNのダウンロード

以下からダウンロードしてます。
SoftEther ダウンロード センター
LOOX Uは32bitなので

ダウンロードするソフトウェアを選択
SoftEther VPN (Freeware)
コンポーネントを選択
SoftEther VPN Server
プラットフォームを選択
Linux
CPU を選択
Intel x86 (32bit)

と選んで検索されたrtm版の最新ビルドを選びます。
2021/3/11現在での最新版は
SoftEther VPN Server (Ver 4.34, Build 9745, rtm)
softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-x86-32bit.tar.gz (6.74 MB)
[Non-SSL (HTTP) Download Link] Try this if the above link fails because your HTTP client doesn't support TLS 1.2.
リリース日: 2020-04-05 <最新ビルド>
バージョン更新履歴 (ChangeLog)
言語: English, Japanese, Simplified Chinese
OS: Linux, CPU: Intel x86 (32bit)
(Linux Kernel 2.4 / 2.6 / 3.x / 4.x)

SoftEhterインストール

参考:
7.3 Linux へのインストールと初期設定 - SoftEther VPN プロジェクト

ルートユーザで実行する

sudo su -

インストールフォルダを/usr/local/vpnserverにするので、/usr/localへ移動

cd /usr/local

パッケージファイルの展開
ダウンロードしたものを/tmpに置いた場合

tar xzvf /tmp/softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-x86-32bit.tar.gz

makeの実行

cd vpnserver
make

そうすると ./.install.shが実行されます。
まずは使用権許諾契約書の表示・同意を聞かれるので1の選択を複数回行うとvpnserverプログラムの生成が行われます。
プログラム生成が行われると自動的にチェックコマンドが実行されるので、チェック結果がすべて〇となって

すべてのチェックに合格しました。このシステム上で SoftEther VPN Server / Bridge が正しく動作する可能性が高いと思われます。

と表示されればOKです。

SoftEther自動起動設定

自動起動設定を行います。
ここもルートユーザで行います。
/etc/init.d/vpnserverファイルを作成します。
手順書と違うところ
・statusがないので、ロックファイルがある場合はrunningて表示するような簡易版
・Lutunts18はchkconfigがないためupdate-rc.dをつかうようなヘッダの設定を行う
内容

#!/bin/sh
### BEGIN INIT INFO
# Provides:                     vpnserver
# Required-Start:               $local_fs $network
# Required-Stop:                $local_fs $network
# Default-Start:                2 3 4 5
# Default-Stop:                 0 1 6
# Short-Description:            SoftEther VPN RTM
# Description:                  Start vpnserver daemon SoftEther VPN Server
### END INIT INFO
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/subsys/vpnserver
test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
status)
    if [ -e $LOCK ]; then
        echo "vpnserver is running."
    else
        echo "vpnserver is not running."
    fi
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
esac
exit 0

実行権限付与

chmod 755 /etc/init.d/vpnserver

サービスの登録

update-rc.d vpnserver defaults

自動起動の設定

systemctl enable vpnserver

サービスの起動・終了

systemctl start vpnserver
systemctl stop vpnserver

VPNサーバの設定(vpncmd)

SoftEtherのドキュメント 
7.4 初期設定 - SoftEther VPN プロジェクト
ではGUIWIndowsにインストールして利用)前提ですが、コマンドでも行えます。
GUIでの説明とともにコマンドをあるので、基本的にこの順番でコマンドを打って設定していきます。

vpncmdの起動
/usr/local/vpnserver/vpncmd
vpncmd コマンド - SoftEther VPN コマンドライン管理ユーティリティ
SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド)
Version 4.34 Build 9745   (Japanese)
Compiled 2020/04/05 23:39:56 by buildsan at crosswin
Copyright (c) SoftEther VPN Project. All Rights Reserved.

vpncmd プログラムを使って以下のことができます。

1. VPN Server または VPN Bridge の管理
2. VPN Client の管理
3. VPN Tools コマンドの使用 (証明書作成や通信速度測定)

1 - 3 を選択: 1

接続先の VPN Server または VPN Bridge が動作しているコンピュータの IP アドレスまたはホスト名を指定してください。
'ホスト名:ポート番号' の形式で指定すると、ポート番号も指定できます。
(ポート番号を指定しない場合は 443 が使用されます。)
何も入力せずに Enter を押すと、localhost (このコンピュータ) のポート 443 に接続 します。
接続先のホスト名または IP アドレス:

サーバーに仮想 HUB 管理モードで接続する場合は、仮想 HUB 名を入力してください。
サーバー管理モードで接続する場合は、何も入力せずに Enter を押してください。
接続先の仮想 HUB 名を入力:
VPN Server "localhost" (ポート 443) に接続しました。

VPN Server 全体の管理権限があります。
管理者パスワードの変更

VPN全体の管理者パスワードを設定する

VPN Server>ServerPasswordSet

仮想HUBの作成

最初から DEFAULTという仮想HUBができているのでこれを使うのもいいが、あえて別のものを作成
コマンド
大文字小文字はどっちでもいいらしい
以下の順でコマンドを実行。引数も指定できるがコマンドをたたくと対話型でパラメータを聞いてくる

仮想HUBのリスト HubList
仮想HUBの削除 HubDelete
仮想HUBの作成 HubCreate
仮想HUBへ移動 hub ハブ名

DEFAULTハブを確認して削除したのち、新しいHUBを作成する

VPN Server>HubList
HubList コマンド - 仮想 HUB の一覧の取得
項目            |値
----------------+-------------------
仮想 HUB 名     |DEFAULT
状態            |オンライン
種類            |スタンドアロン
ユーザー        |0
グループ        |0
セッション      |0
MAC テーブル    |0
IP テーブル     |0
ログイン回数    |0
最終ログイン日時|2021-03-11 20:31:23
最終通信日時    |2021-03-11 20:31:23
転送バイト数    |0
転送パケット数  |0
コマンドは正常に終了しました。

VPN Server>HubDelete
HubDelete コマンド - 仮想 HUB の削除
削除する仮想 HUB の名前: DEFAULT

コマンドは正常に終了しました。

VPN Server>HubCreate TEST
HubCreate コマンド - 新しい仮想 HUB の作成
パスワードを入力してください。キャンセルするには Ctrl+D キーを押してください。

パスワード: ********
確認入力  : ********


コマンドは正常に終了しました。

VPN Server>HubList
HubList コマンド - 仮想 HUB の一覧の取得
項目            |値
----------------+-------------------
仮想 HUB 名     |TEST
状態            |オンライン
種類            |スタンドアロン
ユーザー        |0
グループ        |0
セッション      |0
MAC テーブル    |0
IP テーブル     |0
ログイン回数    |0
最終ログイン日時|2021-03-12 05:53:26
最終通信日時    |2021-03-12 05:53:26
転送バイト数    |0
転送パケット数  |0
コマンドは正常に終了しました。

VPN Server>hub TEST
Hub コマンド - 管理する仮想 HUB の選択
仮想 HUB "TEST" を選択しました。
コマンドは正常に終了しました。

グループ・ユーザの作成

接続するためのグループ・ユーザ/パスワードを作成します。
グループは作成しなくても可能
コマンド

グループ作成 GroupCreate
ユーザ作成 UserCreate
パスワード設定 UserPasswordSet
ユーザ一覧 UserList
VPN Server/TEST>UserCreate
UserCreate コマンド - ユーザーの作成
ユーザー名: test

参加するグループ名:

ユーザーの本名:

ユーザーの説明:

コマンドは正常に終了しました。

VPN Server/TEST>UserPasswordSet
UserPasswordSet コマンド - ユーザーの認証方法をパスワード認証に設定しパスワード を設定
ユーザー名: test

パスワードを入力してください。キャンセルするには Ctrl+D キーを押してください。

パスワード: ********
確認入力  : ********


コマンドは正常に終了しました。

VPN Server/TEST>UserList
UserList コマンド - ユーザー一覧の取得
項目            |値
----------------+--------------
ユーザー名      |test
本名            |
所属グループ    |-
説明            |
認証方法        |パスワード認証
ログイン回数    |0
最終ログイン日時|(なし)
有効期限        |無期限
転送バイト数    |0
転送パケット数  |0
コマンドは正常に終了しました。

L2TP/IPsecの設定を行う

iOSAndroidMacOS XWindows等で標準でサポートされているL2TP/IPsec VPNプロトコルで接続します。
初期では無効になっているため、設定を行います
IPsecEnable

PN Server/TEST>IPsecEnable /L2TP:yes /L2TPRAW:no /ETHERIP:no /DEFAULTHUB:TEST
IPsecEnable コマンド - IPsec VPN サーバー機能の有効化 / 無効化
IPsec 事前共有鍵の文字列 (9 文字以下を推奨): ********

コマンドは正常に終了しました。

SecureNat有効化、NatEnable、DHCPEnable

LOOXUを仮想ルータにしてVPN接続された端末からDHCP・NATでおうちLANにアクセスできるようにします。
他の方法としてはローカルブリッジ接続とかありますが、無線LANの制限で行えません。
VPNFAQ003. 無線 LAN カードを用いてローカルブリッジを構築する場合の注意事項 - SoftEther VPN プロジェクト
LOOX Uの内臓無線LANも当然ダメでした。
ちなみにSecureNatEnableとして有効化すると上記と同様の理由からか無線LANにつながらなくなります。
ですので、ここからはSSH接続ではなく、LOOXU本体での作業がいいです。

SecureNatEnable、NatEnable、DHCPEnableコマンド

そのままコマンド打つだけ
SecureNatEnable
NatEnable
DHCPEnable

VPN Server/TEST>SecureNatEnable
SecureNatEnable コマンド - 仮想 NAT および DHCP サーバー機能 (SecureNAT 機能) の有効化
コマンドは正常に終了しました。

VPN Server/TEST>NatEnable
NatEnable コマンド - SecureNAT 機能の仮想 NAT 機能の有効化
コマンドは正常に終了しました。

VPN Server/TEST>DHCPEnable
DhcpEnable コマンド - SecureNAT 機能の仮想 DHCP サーバー機能の有効化
コマンドは正常に終了しました。
SecureNATをユーザモードで動かす(無線LANがつながらなくなるのでその対処)

これこれ。
VPNFAQ036. SecureNAT の動作モードにはどのような違いがありますか。 - SoftEther VPN プロジェクト
どうやらSecureNATをユーザモードで動かさないとダメなようなのでRawIPモード・カーネルモードで動かないように制御します。
コマンドが見当たらないのでvpn_server.configを直接書き換え
VPNサーバ停止

sudo systemctl stop vpnserver

vpn_server.config書き換え

sudo vi /usr/local/vpnserver/vpn_server.config

以下2項目をfalse→trueへ変更する

 bool DisableIpRawModeSecureNAT true
 bool DisableKernelModeSecureNAT true

VPNサーバ起動

sudo systemctl start vpnserver

ネットワークが動いていないのでネットワークサービス再起動

sudo systemctl restart network-manager

※Lubuntu18.04はnetwork-managerってサービスになってました

ポート開放

外部からVPNで接続できるようにポート開放(ポートフォワーディング)の設定を行います。
F660Aの場合、
・ポートフォワーディング(アプリケーションリスト)
・ポートフォワーディング
の2通りのポートフォワーディング設定があるみたいなのですが、なぜかアプリケーションリストの方では接続できなかった。
そういうもんなのか(上記2つの違いもよくわからん)なにか設定が必要なのかがわからなかった。。。
という事で、アプリケーション>>ポートフォワーディングの設定で
VPNサーバ(LOOXU)へUDPの500と4500を通すように設定します。
f:id:garapappa:20210312111107p:plain

クライアントからつないでみる

おうちLANのグローバルIPアドレスを知る

これね、このために調べたんだから。
garapappa.hatenablog.com

Windows10からの接続

スタート>設定>ネットワークとインターネット>VPN>+VPN接続を追加する
f:id:garapappa:20210312100946p:plain:w600
接続名   自分でわかるような任意の名前を(例:自宅VPN
サーバ名またはアドレス おうちLANのグローバルIPアドレス
VPNの種類 事前共有キーを使ったL2TP/IPsec
事前共有キー IPsecEnableコマンドの時に設定したIPsec 事前共有鍵
サインイン情報の種類 ユーザ名とパスワード
ユーザ名(オプション) HUB上に作ったユーザID。ユーザ名@HUB名指定ができる(HUB名省略時はデフォルトのHUB)
パスワード 上記ユーザのパスワード

Andoroidからの接続

機種・Androidバージョンによって違うとは思いますが、Huawei honor 8での設定
設定>その他>VPNVPNネットワークの追加
名前   自分でわかるような任意の名前
タイプ  L2TP/IPSec PSK
サーバアドレス おうちLANのグローバルIPアドレス
L2TPセキュリティ保護 空白のまま
IPSec ID 空白のまま
IPSec事前共有鍵 IPsecEnableコマンドの時に設定したIPsec 事前共有鍵
詳細設定は不要かな?で保存
あとはユーザ名・パスワードを入力して接続

接続されたかの確認方法

ちゃんと接続されているのかを確認するのは何通りか方法ありますが、代表的なものを

プライベートの接続を試みる(NASとか)

外部から入って普通は接続できない家の中のNASとかPCにアクセスできるか

ブラウザアクセスしたら自宅LANのIPからアクセスしてる風になってるか?

【NURO光】グローバルIPアドレスをLINEで通知する仕組みをつくってみた - がらぱっぱ
でも紹介した
IP address information
で表示されるIPアドレスが、おうちLANのグローバルIPアドレスであればOK

VPNサーバのログを確認

/usr/local/vpnserver/server_log/
以下にVPNサーバのログが出力されます(日毎ローテート?)
これを確認して、接続がされたかを確認できます。

まとめ

とりあえず、ここまででVPNサーバを立てて外部から接続できるところまでできました。
非力マシン(LOOXU)だったり無線LANだったり、SecureNATがユーザモードだったり(オーバーヘッドがあるから速度は落ちるらしい)とか、性能に対する懸念はありますが、今のところそれほどストレスはないです。
あとは
・もう少しセキュリティを高める
・性能(ネットワーク?)チューニング
・接続の通知とか?(これもセキュリティかな)
あたりでしょうか。

【NURO光】グローバルIPアドレスをLINEで通知する仕組みをつくってみた

外部からVPNで入ったりするために、まずは自分ちのグローバルIPアドレスを知る必要があります。
NURO光グローバルIPアドレスはほとんど変わらない半固定という情報もありますが、一応動的IP。
IPが変更されても大丈夫なようにする必要があります。
Dynamic DNS(DDNS)を使ったりとかもありますが、まずはIPアドレスを直接入力できるようにグローバルIPのアドレスを通知する仕組みを作ります。

通知する方法も色々ありますが、グロバルIPにつなぐのは外出時になるわけですから、スマホに通知が来るLINEが一番いいと思います。

処理の概要

というわけで、以下のような形でグローバルIPが変わったらLINEに通知するようにします。
f:id:garapappa:20210305201625p:plain
・常時電源ONのサーバ(lubuntu)から定期的にグローバルIPアドレスを取得する
グローバルIPアドレスが変化したらLINEに変更したIPアドレスを通知する
・次回起動の比較用に現在のIPアドレスを覚えておく
・(未実装)この通知システム自体がちゃんと動いているかを時々LINEに通知する(いきてるでー)
・一定周期(一時間おきくらい)で起動する

常時電源ONのサーバ(lubuntu)から定期的にグローバルIPアドレスを取得する

とりあえず手っ取り早くグローバルIPを教えてくれる外部サービスを利用する

ここ
inet-ip.info

このページにも書いてありますが、curlコマンドで生グローバルIPアドレスそのものが取得できます。

curl inet-ip.info

らくちん

外部サービス依存になるからF660Aの管理画面をスクレイピングして取得(未実装)

やはり外部サービスなので、サービスの停止や廃止に影響されるのが怖いです。
F660Aの管理画面から「ステータス>>ネットワークインタフェース情報>>WAN接続情報」
グローバルIPがとれるので取得できるはず

グローバルIPアドレスが変化したらLINEに変更したIPアドレスを通知する

前回取得したIPアドレスと違う場合はLINEに通知します。

LINE通知の仕組み、LINE notifyがイケてるのでこれを使います

あちこちで紹介されているので、わかりそうなところでここらを参照
djeeeno.blogspot.com
設定はあるものの、curlコマンド一発でLINEに通知できます。
超クール!

グローバルIPが変化したのを検出する(あるいは初回)

IPアドレスを適当なファイルに書き込んで、次回は取得したIPとこれを比較します。
ファイルがない場合は初回だという事でIPを通知します。
今回は「/tmp/global_ip.txt」に書き込む事にします。

グローバルIPアドレスの取得に失敗したら、LINEに「取れなかった」って通知

inet-ip.infoが落ちてたりしたら、LINEに通知します。
とりあえず落ちてるあいだは毎回LINE通知行っちゃうけどまぁいいか

(未実装)この通知システム自体がちゃんと動いているかを時々LINEに通知する(いきてるでー)

一定間隔(あるいはIPアドレスが一定期間かわらなかったら)LINE通知する仕組みが欲しいと思います。
特にNUROはグローバルIPがほとんど変わらないという噂だし、気が付いたらチェックしてなかったぜみたいな事は避けたい。
LINE notifyのサービスもいつ障害起きたり終了するかわからないし。
一週間に一回とか一か月に一回とか通知がくればうざくないし、「あれ?そういえば来てないじゃん」って気が付きます
IP書き込んだファイル(global_ip.txt)の日付を見て判断するか、global_ip.txtに書き込むかで前回通知してからどれくらい経ったかがわかるから実現はできそうです。

一定周期(一時間おきくらい)で起動する

手っ取り早くCRONを使います。
クーロンの書き方はどこかの解説サイトを見てもらうとして、1時間周期で起動するようにします

準備

curlインストール

lubuntu、curlも入っていないんですねぇ

sudo apt install curl

実装

シェルのソース

エラー処理とかいい加減(というか無い)ですが、こんな感じで
GlobaIPNotify.sh って名前で作成します(なんでもいいけど)

#!/bin/bash
FILE_NAME="/tmp/global_ip.txt"
LINE_TOKEN="取得したトークン"

function send_message()
{
  curl -s -X POST -H "Authorization: Bearer ${LINE_TOKEN}" -F "message=$1" https://notify-api.line.me/api/notify
}

# 前回取得のGlobal IPをファイルから取り出す
# ファイルが存在しない場合、Global IP未取得とみなす
if [ -e $FILE_NAME ]; then
  last_IP=`cat $FILE_NAME`
else
  last_IP=""
fi
# 現在のGlobal IPを取得
now_IP=`curl -s inet-ip.info`
if [ "${now_IP}" = "" ]; then
  echo "curl error?"
  send_message "グローバルIPの取得に失敗しました(${last_IP})"
elif [ "${now_IP}" = "${last_IP}" ]; then
  echo "same ip"
else
  echo "change ${last_IP} -> ${now_IP}"
  # LINEへIPアドレス変更を通知
  if [ "${last_IP}" = "" ]; then
    send_message "初期起動または再起動したよー(${now_IP})"
  else
    send_message "IPがかわったよー(${last_IP} -> ${now_IP})"
  fi
  echo ""
  # 変更したIPを覚える
  echo $now_IP > $FILE_NAME
fi

CRON設定

crontabの編集
crontab -e

エディタで以下を追加します

MAILTO=""
00 * * * * ~/tools/GlobaIPNotify.sh

・メール通知しない設定
MAILTOはcron処理結果をメールで通知するかの設定です。
メール通知ありにするとpostfixが入っていないので
「(CRON) info (No MTA installed, discarding output)」
というメッセージが/var/log/syslogに出ます

・毎時00分にカレントディレクトリ下のtools/GlobaIPNotify.shを実行します

動作結果

LINEに通知が来ます
f:id:garapappa:20210306000846p:plain

【NURO光ONU】F660AでサーバやGoogleHomeのIPを固定化する

サーバ立てたり、直接RM mini3にコマンド送ったりするとき、DHCPでIPがコロコロ変わってしまうのはいろいろとよろしくないです。
という事でIPが変わらないようにする方法です。
F660Aでのやり方あんまり記載している記事がなかったので、自分の備忘録

やり方は何通りかある

端末のIPを固定化するには何通りか方法がありますが、それぞれメリットデメリットがあります。

PCのネットワーク設定でDHCPにせず固定IPにする

PC側でIPアドレスを決めて設定する方法です。
今どきは普通ネットワーク設定はDHCPにしてあんまり変えないですよね。

PC側の設定

IPアドレスだけでなくネットマスクやデフォルトゲートウエイ、DNSサーバなんかを設定する必要があります。
f:id:garapappa:20210305003136p:plain:w300
こんな感じですね。

F660A側で設定したIPアドレスDHCPで振られないようにする

DHCPサーバはそれぞれのPCがどんなIPを設定したかなんて感知しないはずなので、IPアドレスが重複しないようにする必要があります
f:id:garapappa:20210305002411p:plain:w400
F660A側でDHCPプールIPアドレスの開始・終了を変更して(例えば192.168.1.2~192.168.1.200とか)DHCPを割り振らないようにします。

固定IPをふるのはあんまりいい方法じゃない。デメリットは

この方法はお勧めしません

IPアドレスを指定できるPCとかはいいが指定できない機器もある

Google HomeとかRM-mini3とか。これを固定にしたいのに

ほかのネットワークつなぎ変える度に設定変える必要ある

ノートPCとかいちいち設定変更するの面倒ですよね。

F660側で把握しづらい

DHCPならば上のダイナミックアドレス管理で、どのMACアドレスのどんな機器(ホスト名から大体推測可能)がどのIPで動いているかわかるけど、固定IP振っちゃうとわからないです。

F660Aの設定で特定の機器(MACアドレスで指定)に特定のIPを割り振る。→こちらがおすすめ

DHCP固定アドレス割り当て

F660Aの設定で「DHCP固定アドレス割り当て」というメニューがあります。
ここで任意のIPをふりたい機器のMACアドレスIPアドレスを指定します。
f:id:garapappa:20210305005107p:plain:w400

これは例ですが、例えば
192.168.1.100番台はスマートホーム系(GoogleHomeとかRM-mini3とか)
192.168.1.200番台はPC系(Linuxサーバ、デスクトップPC、ノートPC)
それ以外はDHCPで任意みたいなルールを作って固定アドレス割り当てをすると今後機器が増えた場合もスッキリすると思います。

MACアドレスはどうやって調べる

F660Aのダイナミックアドレス管理(IPv4)で割り振られているIP・MACアドレス、ホスト名がわかります。
f:id:garapappa:20210305010534p:plain:w400
ホスト名からなんとなくMACアドレスもわかるので、これを覚えて設定します。

設定後

しばらくたつと、自動でDHCPでIPが再割り当てされてIPアドレスが変わります。
固定アドレス割り当てされた機器はリース残存期間がinfinityとなるためわかりますね
なかなか変わらない場合はF660Aを再起動(笑)

気を付ける事

DHCPプール内のIPアドレスで固定IPをふります。
あくまでプール内で固定のIPを割り振るので。
(最初にこれ間違えて変わらなくて焦りました)